Iptables é o firewall principal que vem com a maioria das distribuições Linux por padrão. Ele é responsável por lidar com a segurança da rede. Funciona comparando os pacotes de dados com um conjunto de regras, instruindo o sistema a aceitar, recusar ou encaminhar uma conexão de acordo com as regras. Neste tutorial, mostraremos como listar e excluir regras, verificar e limpar contadores de pacotes e bytes, e esvaziar chains. Pronto? Vamos começar!
Pré-requisitos
Antes de pular para o tutorial, vamos deixar algo claro. Todas as dicas e truques demonstrados neste guia são realizados em uma máquina virtual separada. É uma boa ideia que você faça isso também, pois elimina qualquer possibilidade de transformar seu sistema em uma bagunça total. Somente depois de dominar esses processos, você deve tentar implementá-los em situações da vida real.
Para este tutorial, usaremos o Ubuntu para demonstrar todas as etapas. No entanto, elas devem funcionar de maneira semelhante, independentemente da distribuição.
Listar regras
Listar regras por especificação
Primeiro, vamos verificar todas as regras ativas pela especificação. Execute o seguinte comando:
|
1 |
sudo iptables -S |

Se você já trabalhou com a criação de regras do iptables antes, deve ter notado a semelhança. As saídas se assemelham aos comandos que foram usados para criá-las, exceto pela parte “iptables”. Elas também compartilham uma estrutura semelhante aos arquivos de configuração de regras do iptables.
Listar chain específica
Vamos tentar algo mais preciso. Em vez de relatar todas as regras do iptables, diga ao iptables para relatar as regras de uma chain específica. Por exemplo, TCP, INPUT, OUTPUT, etc. Para fazer isso, especifique o nome da chain após a flag “-S”:
|
1 |
sudo iptables -S <chain> |

Listar regras como tabelas
A visualização em tabela é útil ao comparar regras diferentes. Use a flag “-L” para dizer ao iptables para relatar todas as regras ativas em formato de tabela:
|
1 |
sudo iptables -L |

A saída contém todas as regras atuais ordenadas pela chain. Semelhante à seção anterior, também é possível filtrar a saída da lista por uma chain específica como INPUT, TCP e OUTPUT, etc. Para fazer isso, especifique a chain após a flag “-L”:
|
1 |
sudo iptables -L <chain> |

Vamos detalhar um pouco a saída. No nosso caso, por causa das regras, a saída parecerá um pouco bagunçada. A primeira linha da saída declara o nome da chain (INPUT) com sua política padrão (DROP). A próxima linha especifica os cabeçalhos das colunas da tabela. O restante são as regras da chain. Vamos dar uma olhada no que os cabeçalhos indicam:
- target: Se um pacote corresponder à regra, esta seção define qual ação deve ser executada. Pode ser aceitar o pacote, descartar (drop), registrar (log) ou enviá-lo para outra chain.
- prot: Define o protocolo, por exemplo, udp, tcp, icmp ou all.
- opt: Esta coluna indica as opções de IP. É raramente usada.
- source: Origem do pacote (endereço IP ou sub-rede). O valor pode ser específico ou anywhere.
- destination: Destino do pacote (endereço IP ou sub-rede). O valor pode ser específico ou anywhere.
Se você notou, a última coluna não está rotulada. Isso ocorre porque ela é usada para indicar as opções de uma regra. Ela conterá todas as partes da regra que não couberam nos campos anteriores. Pode conter qualquer coisa, desde as portas de origem/destino até o estado de conexão do pacote, etc.
Contagem de pacotes e tamanho agregado
Limpar contadores de pacotes e bytes
Quando estamos listando as regras do iptables, também podemos verificar o número de pacotes e o tamanho agregado dos pacotes em bytes que corresponderam a cada regra específica. É uma métrica útil quando você precisa ter uma ideia geral de quais regras estão correspondendo aos pacotes.
Neste exemplo, usaremos a chain INPUT. Desta vez, adicione a flag “-v”, que significa modo detalhado (verbose):
|
1 |
sudo iptables -L INPUT -v |

Você notará que a saída da tabela agora inclui dois campos adicionais: pkts e bytes.
Redefinir contagem de pacotes e tamanho agregado
Em algumas situações, você pode querer redefinir os contadores que demonstramos antes. Se o sistema for reiniciado, os contadores serão limpos automaticamente. Você também pode forçar uma redefinição manualmente. Usaremos a flag “-Z” para redefinir a contagem de pacotes e o tamanho agregado:
|
1 |
sudo iptables -v -Z |

Observe que este comando redefinirá os contadores de todas as chains. Como outros comandos, é possível redefinir o contador para chains específicas. Por exemplo, o próximo comando redefinirá os contadores para a chain INPUT:
|
1 |
sudo iptables -v -Z <chain> |

É possível tornar a ação de redefinição do contador mais precisa. Você pode redefinir o contador para uma regra específica sob uma chain específica. Para fazer isso, adicione o número da regra sob o nome da chain:
|
1 |
sudo iptables -v -Z <chain> <rule_number> |
Excluir regras
Excluir regras por especificação
Existem várias maneiras de abordar a exclusão de regras do iptables. O primeiro método para excluir regras é por especificação de regra. Para a exclusão, usaremos a flag “-D” seguida pela especificação da regra:
|
1 |
sudo iptables -v -D INPUT -s 172.217.194.113 -j DROP |

Se você já adicionou alguma regra do iptables antes, notará a semelhança. A única coisa que mudou aqui é a flag “-D” em vez da flag “-A”.
Excluir regras por chain e número
Excluir regras por sua especificação exige um pouco mais de esforço, certo? E se pudéssemos excluí-las sem ter que lembrar a especificação da regra? Vamos excluir as regras por sua chain e número! Comparado ao primeiro método (excluir pela especificação), este é relativamente mais fácil, pois você não precisa ter toda a especificação em mãos.
Este método requer a chain e o número da linha da regra de destino. Onde conseguimos o número da linha? Execute o seguinte comando para determinar isso:
|
1 |
sudo iptables -L --line-numbers |

Você terá uma saída grande com todas as regras e seus números de linha. Para restringir a saída, use o nome da chain após a flag “-L”:
|
1 |
sudo iptables -L <chain> --line-numbers |

Na saída, você notará a coluna extra num. Ela indica o número da linha para cada regra. Assim que determinarmos o número de destino, realize a exclusão:
|
1 |
sudo iptables -v -D <chain> <line_number> |
Limpar chains
No caso do iptables, o que é limpar (flush) uma chain? É o processo de excluir todas as regras sob uma determinada chain. Se você precisar excluir regras em massa, poderá usar este método. Antes de realizar a limpeza da chain, recomendamos fortemente que você faça um backup das regras existentes usando o iptables-save. É uma ferramenta integrada do iptables que exibirá todas as chains e regras atuais. A saída pode ser exportada para um arquivo de texto:
|
1 |
sudo iptables-save > ~/Desktop/iptables-backup.txt |
![]()
Limpar uma única chain
Vamos ver como limpar uma chain. Use a flag “-F” seguida pela chain de destino:
|
1 |
sudo iptables -v -F <chain> |

Limpar todas as chains
Antes de limpar todas as chains, certifique-se de entender o que está fazendo. Isso excluirá todas as regras do firewall iptables. Você deve se certificar de criar um backup das regras do iptables previamente.
Pronto? Limpe todas as chains do iptables executando o seguinte comando:
|
1 |
sudo iptables -v -F |

Limpar regras, excluir chains e aceitar tudo
A execução das etapas descritas nesta seção desativará efetivamente o firewall, permitindo tráfego de rede irrestrito. Semelhante à seção anterior, recomendamos ter um backup do iptables antes de prosseguir. Primeiro, alteraremos a política padrão de cada uma das chains integradas para ACCEPT. Isso serve para garantir que o iptables não bloqueie seu acesso ao servidor via SSH:
|
1 |
sudo iptables -v -P INPUT ACCEPT && sudo iptables -v -P FORWARD ACCEPT && sudo iptables -v -P OUTPUT ACCEPT |

Agora, limpe as tabelas nat e mangle:
|
1 2 |
sudo iptables -v -t nat -F sudo iptables -v -t mangle -F |


Limpe todas as chains e exclua todas as chains não padrão:
|
1 2 |
sudo iptables -v -F sudo iptables -v -X |


A seguir, vamos verificar o resultado:
|
1 |
sudo iptables -L --line-numbers |
Considerações finais
O iptables é um firewall poderoso. Esperamos que este guia tenha sido útil para ensinar você a listar e excluir regras de firewall do iptables. E não se esqueça de praticá-las antes de aplicá-las no mundo real.
Boa computação!



Comentários
Nenhum comentário ainda. Seja o primeiro.