Introdução ao Firewall Linux com Comandos Essenciais do iptables

Entendendo o Firewall Linux: Estrutura e Fluxo de Dados

O iptables é uma ferrramenta poderosa para gerenciar firewalls em sistemas Linux. Ele opera com base em quatro tabelas principais e cinco cadeias de regras, cada uma com um propósito específico:

Tabelas de Regras:

  • Tabela filter: Responsável pelo filtragem básica de pacotes. Contém as cadeias INPUT, FORWARD e OUTPUT.
  • Tabela nat: Utilizada para modificar os endereços IP e portas dos pacotes. Inclui as cadeias PREROUTING, POSTROUTING e OUTPUT.
  • Tabela mangle: Permite a modificação de campos de cabeçalho dos pacotes, como TOS (Type of Service) e TTL (Time To Live), além de marcações para roteamento avançado. Possui as cadeias PREROUTING, POSTROUTING, INPUT, OUTPUT e FORWARD.
  • Tabela raw: Usada para determinar se um pacote deve ter seu estado rastreado. Contém as cadeias OUTPUT e PREROUTING.

Cadeias de Regras:

  • INPUT: Aplica regras a pacotes destinados ao próprio host do firewall.
  • OUTPUT: Aplica regras a pacotes originados do próprio host do firewall.
  • FORWARD: Aplica regras a pacotes que transitam pelo firewall, sendo roteados para outros destinos.
  • PREROUTING: As regras são aplicadas antes da decisão de roteamento do pacote.
  • POSTROUTING: As regras são aplicadas após a decisão de roteamento do pacote.

Fluxo de Processamento de Pacotes:

Quando um pacote chega ao firewall, ele passa por um processo estruturado:

  1. Ordem das Tabelas: As tabelas são processadas na seguinte ordem: raw, mangle, nat e, por último, filter.
  2. Ordem das Cadeias e Roteamento:
    • Tráfego de Entrada (INPUT): Pacotes chegam, são processados pela PREROUTING, sofrem decisão de roteamento. Se o destino for o próprio host, seguem para a INPUT e, em seguida, para as aplicações do sistema.
    • Tráfego de Encaminhamento (FORWARD): Pacotes chegam, são processados pela PREROUTING, sofrem decisão de roteamento. Se o destino for outro host, seguem para a FORWARD e, finalmente, para a POSTROUTING.
    • Tráfego de Saída (OUTPUT): Pacotes originados do host passam pela OUTPUT, sofrem decisão de roteamento e, em seguida, pela POSTROUTING.
  3. Ordem das Regras dentro de uma Cadeia: As regras dentro de uma cadeia são avaliadas sequencialmente. Uma vez que uma regra corresponde ao pacote, sua ação (ACCEPT, DROP, REJECT, etc.) é executada e, dependendo da ação, o processamento na cadeia atual pode parar, continuar para a próxima cadeia ou ser interrompido completamente. Se nenhuma regra corresponder, a política padrão da cadeia é aplicada.

Execução e Ações do iptables

O iptables executa as regras de forma sequencial dentro de cada tabela e cadeia. As ações comuns incluem:

  • ACCEPT: Permite que o pacote passe. O processamento na cadeia atual é interrompido e pode continuar em outra cadeia se necessário (ex: nat para POSTROUTING).
  • REJECT: Bloqueia o pacote e envia uma mensagem de erro ao remetente (ex: ICMP port-unreachable). O processamento é interrompido.
  • DROP: Descarta o pacote silenciosamente, sem notificar o remetente. O processamento é interrompido.
  • REDIRECT: Redireciona o pacote para outra porta no mesmo host (usado para NAT ou proxy transparente). O processamento continua na mesma cadeia.
  • LOG: Registra informações sobre o pacote. O processamento continua com a próxima regra na mesma cadeia.

Gerenciando Regras do iptables

Adicionando uma Regra

Para adicionar uma nova regra, utiliza-se os parâmetros -A (adicionar ao final) ou -I (inserir no início ou em uma posição específica). Opções comuns incluem:

  • -i: Interface de entrada.
  • -o: Interface de saída.
  • -p: Protocolo (tcp, udp, icmp, all).
  • -s: Endereço IP ou rede de origem. Use ! para negar.
  • -d: Endereço IP ou rede de destino. Use ! para negar.
  • -j: Ação a ser tomada (ACCEPT, DROP, REJECT, LOG, REDIRECT, etc.).

Exemplo para adicionar uma regra que aceita tráfego SSH:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Removendo uma Regra

Use o parâmetro -D seguido do nome da cadeia e o número da linha da regra. Para visualizar as regras com seus números, utilize:

iptables -nL --line-numbers

Exemplo para remover a regra número 5 da cadeia INPUT:

iptables -D INPUT 5

Visualizando Regras

Para listar as regras existentes:

  • -L: Lista as regras.
  • -n: Exibe endereços e portas em formato numérico.
  • -v: Exibe informações detalhadas (verbose).
  • --line-numbers: Mostra os números das linhas das regras.

Combinações comuns:

iptables -vnL
   iptables -vvnxL --line-numbers

Comandos Comuns e Exemplos Práticos

Bloquear um Endereço IP Específico

iptables -A INPUT -s 192.168.1.100 -j DROP

Controlar Múltiplas Portas com multiport

iptables -A INPUT -p tcp -m multiport --dports 80,443,8080 -j ACCEPT

Permitir Tráfego para um Intervalo de IPs

iptables -A OUTPUT -p tcp -d 10.0.0.0/8 --dport 443 -j ACCEPT

Configurar Redirecionamento de Portas (Port Forwarding)

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Este comando redireciona todo o tráfego que chega à porta 80 da interface eth0 para a porta 8080.

Limitar Conexões para um Serviço (Ex: HTTP)

iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT

Limita a 100 novas conexões por minuto, com um burst inicial de 200.

Desabilitar Respostas a PING (ICMP Echo Request)

iptables -A INPUT -p icmp -i eth0 -j DROP

Permitir Tráfego na Interface de Loopback

iptables -A INPUT -i lo -j ACCEPT
   iptables -A OUTPUT -o lo -j ACCEPT

Restringir Conexões Simultâneas

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

Rejeita novas conexões se o cliente já tiver mais de 3 conexões estabelecidas para a porta 22.

Limpar Todas as Regras

iptables -F

Para limpar regras de uma tabela específica:

iptables -t nat -F

Descartar Pacotes Inválidos

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

Bloquear Tráfego de E-mail de Saída (Portas Padrão)

iptables -A OUTPUT -p tcp -m multiport --dports 25,465,587 -j REJECT

Bloquear Acesso a uma Interface Específica a partir de um IP

iptables -A INPUT -i eth1 -s 192.168.1.50 -j DROP

Restringir Acesso de um IP a uma Porta Específica

iptables -I INPUT -s 192.168.2.0/24 -p tcp --dport 3306 -j ACCEPT

Salvar e Restaurar Regras

Após configurar as regras, é crucial salvá-las para que persistam após a reinicialização:

service iptables save
   service iptables restart

Em alguns sistemas, os arquivos de configuração estão localizados em /etc/sysconfig/iptables.

Tags: iptables firewall Linux segurança de rede netfilter

Publicado em 6-8 00:14 por Thomas