Firewall no Linux? O IPtables é a solução! (Parte III)
Todos nós temos a noção que é importante dispormos de mecanismos de segurança nos nossos PC’s. Para quem é utilizador do Linux certamente que já ouviu falar do iptables (firewall)…..mas provavelmente nunca o usou devido à sua complexidade. O iptables é uma ferramenta bastante poderosa por si só, que vem por omissão nas distribuições Linux.
No sentido de desmistificar o IPtables, vamos produzir alguns artigos, com alguns exemplos práticos. Depois de uma introdução ao IPtables e de sabermos o que são tabelas, chains (cadeias) e targets (acções), hoje vamos mostrar alguns exemplos de utilização.
O IPtables é um mecanismo de segurança que permite controlar tráfego IP ao nível dos pacotes (layer 3). De uma forma geral, com o iptables podemos definir uma sequência de regras que permitem ou bloqueiam determinados serviços/aplicações. Os serviços/aplicações usam normalmente o protocolo UDP ou TCP.
Aqui ficam alguns exemplo de utilização do iptables:
1) Apagar todas as regras
Antes de começar a criar um conjunto de regras, é importante que apague todas as regras existentes. Para isso basta que usem o comando:
iptables -F
ou
iptables –flush |
2) Definir politica por omissão para as cadeias (chains)
Como referimos, as cadeias de regras têm sempre uma politica por omissão que pode ser DROP ou ACCEPT (na pratica é uma regra implícita). Vamos considerar que queremos que a cadeia INPUT e FORWARD como DROP e OUTPUT como ACCEPT. Para isso basta executar o seguinte comando:
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT |
3) Mostrar o estado da Firewall
Para visualizarem todas as regras, basta que executem o comando:
iptables -L -n –v |
onde:
- L – lista todas as regras
- n – Mostra o IP e porta num formato numério
- v – detalhe da informação
4) Mostrar todas as regras (com número de linha)
Para veres as regras com o respectivo número , basta que usem o comando
iptables -n -L -v --line-numbers |
5) Bloquear um endereço específico
Como ultima dica ensinamos como podem bloquear/aceitar uma determinada comunicação vinda de um endereço IP especifico. Vamos considerar que pretendemos bloquear as comunicações vindas do endereço 192.168.1.1:
iptables -A INPUT -s 192.168.1.1 -j DROP |
Nota: No caso de terem definido a politica por omissão para as cadeia INPUT como DROP e caso pretendam aceitar todas as comunicações do endereço 192.168.1.1, basta que insiram a regra
iptables -A INPUT -s 192.168.1.1 -j ACCEPT |
No próximo tutorial vamos apresentar mais 5 exemplos de utilização do iptables. Para isso contamos sempre com as vossas dicas, sugestões e boas práticas de utilização. Quem tiver um raspberry PI, também pode experimentar estas dicas.
Este artigo tem mais de um ano
Muito interessante.
Uma das ferramentas mais essenciais que se pode ter num computador é a firewall.E nos dias de hoje ela é ainda muito esquecida. Ainda bem que os antivirus ja possuem firewall que trabalham sem a interação do utilizador.
Um aspeto importante a abordar aqui seria o controlo da firewall no windows. Já agora aproveito para questionar o seguinte.
No ip tables é possivel bloquear todos os ip a excepção de um unico?
Para quem quiser aprender um pouco mais sobre IPTABLES sugiro esta lista com 7 vídeos:
https://www.youtube.com/playlist?list=PLwBiVeU3uK1lIm6NrtHI7L2iZoY5gojN7
Obrigado pela lista de videos. 🙂
Para completar ainda mais a informação que se encontra neste artigo (e post do Miguel Frade), informo da existência do Shorewall (https://wiki.debian.org/HowTo/shorewall).
É praticamente um GUI para iptables, permite a configuração do mesmo através de Zonas (à là Next Generation Firewall) e obviamente atribuir políticas diretamente à zona.
Para além disto, para quem pretende uma funcionalidade L7, aconselho instalarem o seguinte package: http://l7-filter.sourceforge.net/
Certamente que começa a deixar de fazer sentido fazer-se o bloqueio por portas, mas sim por protocolo, até porque as aplicações estão cada vez mais evasivas e é facilmente possível configurar uma aplicação para utilizar por exemplo a porta 80, sendo ela uma aplicação de voz (i.e skype) e obviamente não faz sentido bloquear a porta 80 mas sim aquela aplicação/protocolo em específico.
Para uma lista de protocolos suportados pelo package acima, visitem o seguinte endereço: http://l7-filter.sourceforge.net/protocols
Cumps.
Pessoalmente não conheço nenhuma firewall mais potente e flexível…
O iptables permite fazer praticamente tudo.
E andaram-me a dizer que não precisava de firewall para nada com os Linuxs…só me dão aflições…:-)
Ter apenas uma firewall num sistema não te dá garantias totais de segurança…no entanto ajuda. Seja no Linux, Windows, Mac e afins.
o iptables não foi substituido por uma outra ferramenta no ultimo kernel?
Sim, pelo NFTables
https://pplware.sapo.pt/linux/chegou-o-kernel-linux-3-13-esta-ai-o-nftables-e-nfc/
Belos artigos, estes de IPTables. A seguir pode vir um mini-curso de squid proxy que não me importo. Nadinha.
Alguem falou em squid?…o Pplware tem 🙂
https://pplware.sapo.pt/networking/configurar-um-proxy-no-linux-para-web-filtering-parte-iii/
Eu prometo (juro, aliás) que para a próxima pesquiso antes de falar 🙂
Já ouviram falar no Endiam? ótima ferramenta para estes fins!
Já agora alguns livros úteis sobre o assunto:
“Designing and Implementing Linux Firewalls and QOS Using Netfilter Iproute2 Nat and L7 Filter” http://www.packtpub.com/linux-firewalls/book
“Linux Iptables Pocket Reference” http://shop.oreilly.com/product/9780596005696.do
Se pesquisarem, facilmente os encontram 🙂