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:
- Filter: A tabela padrão e mais usada. É responsável por permitir ou bloquear pacotes de entrada e saída;
- NAT (Network Address Translation): Usada para manipular e reescrever endereços de origem ou destino de pacotes, muito usada para redirecionamento de portas;
- 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:
- INPUT: Cadeia para pacotes que estão entrando no sistema;
- OUTPUT: Cadeia para pacotes que estão saindo do sistema;
- FORWARD: Cadeia para pacotes que estão sendo roteados pelo sistema (por exemplo, em servidores que atuam como roteadores);
- 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.
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:
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
Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?
Sobre o Autor
0 Comentários