O iptables é uma excelente ferramenta para a administração de redes no ambiente Linux, sendo responsável pelo controle de tráfego de rede através de regras configuradas no firewall. Se você é administrador de sistemas ou redes e trabalha com servidores Linux, entender e utilizar o iptables é fundamental para manter a segurança e o controle da rede. Neste post, entenda o que é Iptables.

Como funciona o iptables?

O funcionamento do iptables se baseia em aplicar regras sobre os pacotes que entram, saem ou são roteados através de um servidor. Quando um pacote atinge um chain específico (INPUT, OUTPUT, FORWARD), o iptables verifica as regras para decidir se o pacote será:

Descartado (DROP): Silenciosamente descarta o pacote sem notificar o remetente.
Aceito (ACCEPT): Permite que o pacote continue seu trajeto.
Rejeitado (REJECT): Bloqueia o pacote e informa o remetente.

Tabelas e Chains no iptables

Antes de começar a configurar regras, é importante entender dois conceitos chave no iptables: tabelas e chains.

Tabelas

As tabelas são conjuntos de regras que têm uma função específica. O iptables possui várias tabelas, mas as três principais são:

  1. Filter: A tabela padrão e mais usada. É responsável por permitir ou bloquear pacotes de entrada e saída;

  2. NAT (Network Address Translation): Usada para manipular e reescrever endereços de origem ou destino de pacotes, muito usada para redirecionamento de portas;

  3. Mangle: Usada para alterar informações de cabeçalhos de pacotes (manipulação avançada de pacotes).

Chains

Dentro de cada tabela, existem chains (cadeias), que são conjuntos de regras aplicadas aos pacotes em diferentes pontos da comunicação:

  1. INPUT: Cadeia para pacotes que estão entrando no sistema;

  2. OUTPUT: Cadeia para pacotes que estão saindo do sistema;

  3. FORWARD: Cadeia para pacotes que estão sendo roteados pelo sistema (por exemplo, em servidores que atuam como roteadores);

  4. PREROUTING e POSTROUTING: Cadeias usadas nas tabelas NAT e Mangle para modificar pacotes antes ou depois de serem roteados.

Comandos básicos do Iptables

Agora que entendemos a estrutura do iptables, vamos aos comandos básicos para configuração de firewall. Veja alguns dos comandos mais comuns:

Listar regras atuais

Para verificar as regras que já estão configuradas no iptables, use:

sudo iptables -L

Isso listará todas as regras definidas nas cadeias INPUT, OUTPUT e FORWARD.

Adicionar uma regra

Vamos supor que você deseja permitir tráfego SSH (porta 22) no seu servidor. Você pode adicionar uma regra na cadeia INPUT com o seguinte comando:

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

Aqui:

  • -A INPUT: Adiciona a regra ao final da cadeia INPUT.
  • -p tcp: Especifica que a regra se aplica ao protocolo TCP.
  • --dport 22: Define a porta de destino como 22 (SSH).
  • -j ACCEPT: Informa que o iptables deve aceitar o pacote.

Bloquear tráfego

Se você deseja bloquear o acesso de um IP específico (por exemplo, 192.168.1.100), use o comando:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

Aqui:

  • -A INPUT: Adiciona a regra à cadeia INPUT.
  • -s 192.168.1.100: Define o endereço IP de origem a ser bloqueado.
  • -j DROP: Descartar silenciosamente os pacotes desse IP.

Permitir tráfego para uma porta específica

Você pode permitir o tráfego para uma porta específica, como HTTP (porta 80), com o seguinte comando:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Remover uma regra

Se você quiser remover uma regra específica, pode listá-las com:

sudo iptables -L --line-numbers

Isso exibirá as regras com números de linha. Para remover uma regra, use:

sudo iptables -D INPUT [número-da-linha]

Salvar regras

Por padrão, as regras configuradas no iptables são temporárias e serão perdidas ao reiniciar o servidor. Para salvar as regras permanentemente, execute:

sudo iptables-save > /etc/iptables/rules.v4

Para restaurar as regras salvas, use:

sudo iptables-restore < /etc/iptables/rules.v4

Exemplos de configurações comuns do iptables

Bloquear todo o tráfego e permitir somente algumas conexões

Se você deseja adotar uma política de segurança mais restritiva, pode configurar o iptables para bloquear todo o tráfego por padrão e, em seguida, permitir apenas algumas conexões específicas:

# Bloquear todo o tráfego de entrada por padrão
sudo iptables -P INPUT DROP

# Permitir conexões já estabelecidas e relacionadas
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permitir tráfego na interface de loopback (localhost)
sudo iptables -A INPUT -i lo -j ACCEPT

# Permitir tráfego SSH (porta 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Redirecionamento de Porta (Port Forwarding)

Se você está configurando um servidor para redirecionar o tráfego da porta 80 para a porta 8080, use o seguinte comando (com a tabela NAT):

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

Melhores práticas para utilização do iptables

  • Minimize as portas abertas: Apenas abra portas que são absolutamente necessárias para o funcionamento do seu serviço;

  • Use políticas de negação por padrão: Uma boa prática é adotar uma política de DROP para o tráfego de entrada e depois permitir explicitamente as conexões necessárias;

  • Salve suas regras: Sempre que modificar suas regras, lembre-se de salvá-las para que sejam persistentes após a reinicialização do servidor;

  • Monitore o tráfego: Use ferramentas como tcpdump ou Wireshark para monitorar o tráfego de rede e ajustar as regras do iptables conforme necessário.

Bloqueia acessos ao Facebook via HTTPS:

iptables -I FORWARD -p tcp --dport 443 -m string --string 'facebook' --algo bm -j REJECT
iptables -I FORWARD -p tcp --dport 843 -m string --string 'facebook' --algo bm -j REJECT

 Bloqueia acessos ao YouTube via HTTPS:

iptables -I FORWARD -p tcp --dport 443 -m string --string 'youtube' --algo bm -j REJECT

 Libera um IP específico das regras do Iptables:

iptables -I FORWARD -s ‹IP DA MÁQUINA› -j ACCEPT

 Libera um MAC específico das regras do Iptables:

iptables -t filter -A FORWARD -d 0/0 -m mac --mac-source ‹CÓDIGO MAC› -j ACCEPT

Libera múltiplas portas de uma vez:

PORTAS_TCP="80,443,3389"
PORTAS_UDP="80,443,3389"
iptables -A INPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT
iptables -A INPUT -p udp -m multiport --dports $PORTAS_UDP -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports $PORTAS_UDP -j ACCEPT
iptables -A FORWARD -p udp -m multiport --dports $PORTAS_UDP -j ACCEPT

 Libera uma porta específica:

iptables -t nat -A PREROUTING -p tcp --dport ‹PORTA› -j DNAT --to ‹IP DA MÁQUINA DE DESTINO›
iptables -A FORWARD -p tcp --dport ‹PORTA› -j ACCEPT

O iptables é uma ferramenta extremamente poderosa e flexível para gerenciar o firewall em sistemas Linux. Ele permite que você controle minuciosamente o tráfego de rede e proteja seu servidor contra acessos não autorizados. Seja configurando regras simples de bloqueio de IP ou redirecionando tráfego entre portas, o iptables é essencial para qualquer administrador de redes que busca segurança e controle total sobre a rede.

APRENDA A SOLUCIONAR PROBLEMAS COM GNU/LINUX COM MAIS RAPIDEZ

Domine todos os recursos do Linux e torne-se um administrador competente e bem requisitado. Conheça o curso LINUX: DICAS E TRUQUES e torne-se um expert! Conheça centenas de soluções para problemas do dia a dia de administradores de sistemas GNU/Linux e usuários em geral.

CLIQUE NA IMAGEM ABAIXO PARA MAIS DETALHES:

linux dicas e truques

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões sobre o que é Iptables? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags: |

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *