Dicas IPTables

Posted on Sun 16 December 2018 in Linux • 2 min read

Existem 3 tabelas gerenciáveis no IPTables:

  • FILTER - esta é a tabela padrão, responsável pela filtragens de pacotes. Possui três cadeias de conjuntos de regras:
    • INPUT - pacotes destinados a sockets locais
    • FORWARD - pacotes encaminhados (roteados) através do firewall
    • OUTPUT - pacotes gerados localmente
  • NAT - é uma tabela que é consultada quando um pacote tenta criar uma nova conexão. Pode alterar características de origem ou de destino de um pacote. Possui três cadeias de conjuntos de regras:
    • PREROUTING - utilizado para alterar um pacote, logo que é recebido
    • POSTROUTING - usado para alterar pacotes quando eles estão prestes a sair
    • OUTPUT - usado para alterar pacotes gerados localmente
  • MANGLE - esta tabela é usada para alteração de pacotes. Até o kernel versão 2.4 esta tabela tinha apenas 2 cadeias, mas eles são agora 5:
    • PREROUTING - para alterar as conexões de entrada
    • OUTPUT - para alterar pacotes gerados localmente
    • INPUT - para pacotes de entrada
    • POSTROUTING - para alterar pacotes quando eles estão prestes a sair
    • FORWARD - pacotes encaminhados (roteados) através do firewall

1 - Exibir todas as regras disponíveis

iptables -L -n -v

Se preferir, verificar apenas uma tabela em específico (no caso a tabela nat):

iptables -t nat -L -n -v

Ou através de linhas numeradas:

iptables -n -L -v --line-numbers

2 - Bloquear endereço IP específico entrante na rede

Para adicionar regra:

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

Para removê-la:

iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

3 - Bloquear porta específica

Sainte:

iptables -A OUTPUT -p tcp --dport xxx -j DROP

Entrante:

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

Ou múltiplas portas:

iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT

4 - Permitir rede específica acessar determinada porta:

iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport -j ACCEPT

5 - Bloquear Network Flood sobre o servidor web que esteja escutando na porta 80

Aceitando de 100 a 200 conexões por minuto (ajuste da maneira que achar melhor):

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

6 - Manter registros de Log’s de pacotes bloqueados:

iptables -A INPUT -i eth0 -j LOG --log-prefix "Quantidade pacotes bloqueados:"

iptables -A INPUT -p tcp -dport -j LOG -log-prefix “Serviço: ftp”

Os log’s são salvos em /var/log/messages. Onde você poderá filtrar usando comando grep:

grep "Quantidade pacotes bloqueados:" /var/log/messages

7 -Limitar o número de conexões simultâneas oriundas de determinado IP:

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

Onde, essa regra permitirá 3 conexões simultâneas advindas de um mesmo endereço IP na porta 22 (SSH).

8 - Permitir conexões já estabelecidas:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

9 - Bloquear Ping Requests:

iptables -A INPUT -p icmp -icmp-type echo-request -j DROP

10 - Bloquear por endereço MAC:

iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

Simples assim! 😆