Firewall no Linux? O IPtables é a solução! (Parte I)
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.
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.
Protocolo TCP, UDP e ICMP
TCP
O TCP é o protocolo mais usado isto porque fornece garantia na entrega de todos os pacotes entre um PC emissor e um PC receptor. No estabelecimento de ligação entre emissor e receptor existe um “pré-acordo” denominado de Three Way Handshake (SYN, SYN-ACK, ACK).
UDP
O UDP é um protocolo mais simples e por si só não fornece garantia na entrega dos pacotes. No entanto, esse processo de garantia de dados pode ser simplesmente realizado pela aplicação em si (que usa o protocolo UDP) e não pelo protocolo. Basicamente, usando UDP, uma máquina emissor envia uma determinada informação e a máquina receptor recebe essa informação, não existindo qualquer confirmação dos pacotes recebidos. Se um pacote se perder não existe normalmente solicitação de reenvio, simplesmente não existe.
Além do TCP e UDP, o IPTables pode também controlar comunicações que usem o protocolo ICMP, utilizado normalmente para testar a conectividade.
NetFilter vs IPTables
Para que o IPTables funcione correctamente, é necessário que que se activem mecanismos no próprio kernel, que permitem avaliar, controlar e manipular tráfego ao nível dos pacotes. O IPtables é a aplicação usada para criar e gerir as regras que iremos usar para filtrar os pacotes com base nos mais diversos critérios.
Funcionamento do NetFilter
Como referido, os pacotes são filtrados com base num conjunto sequencial de regras (cadeia), onde cada regra contem um conjunto de condições. A sequência com que a cadeia de regras é criadas é muito importante, uma vez que são processadas pela ordem com que foram criadas até que uma delas se aplique. Quando uma regra é aplicada, esta indica se uma determinada comunicação é permitida, negada ou alterada de acordo com uma acção previamente definida). Por exemplo, podemos bloquear todo o tráfego vindo de uma determinada rede.
Quando os pacotes não encaixam em nenhum dos critérios das regras definidas, é aplicada a politica implícita dessa cadeia de regras, podendo o tráfego ser aceite ou rejeitado.
As cadeias são agrupadas em 3 tabelas pré-definidas:
- Filter – responsável pela filtragem de pacotes
- Nat – permite a tradução de endereços e portos (mecanismo de NAT)
- Mangle – permite a alteração especial nos pacotes
- Raw – para configurar excepções relativamente ao registo de sessões
No próximo tutorial vamos apresentar as chains (cadeias predefinidas) disponíveis na tabela filter e Nat e exemplos de aplicação. Esperamos que tenham gostado deste primeiro artigo sobre este tema e como sempre esperamos o vosso feedback.
Este artigo tem mais de um ano
Existe alguma maneira de ser avisado, quando sairem as outras partes? obrigado
Bom dia Vasco, vais ter de estar sempre atento ao Pplware 🙂
Você pode assinar o Feed RSS, é assim que eu vejo quando saem posts aqui.
Ou pelo feed ao fundo desta página carrega em rss, ou pelo twitter se tiveres uma conta.
Boas, muito bom tema, fico a espera de mais.
Já agora conhecem algum pacote para fazer a gestão das regras do iptables sem ser o fwbuilder.
cumprimentos e continuem o bom trabalho 😀
Pode dar uma olhada no UFW e no GUFW (modo gráfico).
O UFW foi o único frontend pro IPTABLES que ainda gostei de utilizar. Pessoalmente prefiro utiliza-lo sem «intermediários».
Bom dia ,
Excelente tutorial , aguardo pela segunda parte , já uma vez tentei configurar sem sucesso , a cerca de 3 anos atrás e dei-me muito mal , aguardo pela segunda parte do tutorial .
Cumprimentos
Serva
A primeira coisa que tem que observar é:
Deixar passar passar todo o trafico dentro da própria maquina
127.0.0.1 127.0.0.1
lo = 127.0.0.1
Se não, vai bloquear os processos dentro da própria maquina. Se bloquear, a maquina deixa inclusivamente de enviar ou receber coisas da consola de sistema. A maquina, pura e simplesmente, pára por ter ficado bloqueada.
No mínimo dos mínimos tem que ter estas duas linhas de instruções no iptables
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -j ACCEPT -o lo
Já trabalho com Iptables, mas é sempre bom saber mais….
Abraço e parabéns o site esta sempre melhorando.
🙂
Vai ser muito bom 🙂
Não costumo usar directamente o iptaqbles, mas vai ser bom aprender/recordar.
Mais simples e melhor não há! Boa iniciativa!
cumps!
E porque não usar o Firestarter e depois implementar regras
Quantum
Excelente artigo e um óptimo tópico, mais um a não perder…
Obrigado Pedro
Boa tarde.
Eu costumo usar a firewall CSF , acho que é muito mais simples de configurar.
Bom dia a todos,
Já tive a oportunidade de configurar o iptables, mas a minha maior preocupação é como verificar que está tudo ok, porque uma coisa é verificar numa rede interna outra será redes com gamas de ip dispares.
Se alguém tiver alguma ideia de como verificar… estão à vontade 😉
Um abraço a todos e votos de um óptimo fim de semana… cheio de SOL!
A verificação numa rede interna não é muito diferente numa rede externa.
Na pratica, o primeiro teste que se efetua é ping à maquina ou as maquinas que pretendemos efetuar os testes. Depois é feito um telnet à porta que se quer testar. Exemplo, telnet 80, testa a porta 80. Depois, há de obter ou não, uma resposta. Isso, agora depende, das configurações que efetuou. Veja, também no lg do iptables. Debaixo da directoria /var/log/ vai lá estar em principio o log.
Teus textos são muito interessantes e elucidativos, aprendi e venho aprendendo muito com tuas postagens.
Sucesso!!
Obrigado Pedro Paulo, brevemente sairá a Parte II, fica atento.
Abraço
Pedro Pinto