Voltar ao blog

Listando e Excluindo Regras de Firewall do Iptables

Listando e Excluindo Regras de Firewall do Iptables

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:

iptables list

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”:

list specific 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:

list rules as table iptables

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”:

filter by 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):

package and byte counters iptables

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:

Reset packet counts and aggregate size

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:

reset particular counter

É 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:

reset specific rule

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:

Delete rules by specification

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:

Delete rules by chain and number - get line number

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”:

Delete rules by chain and number - filter

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:

delete iptables rule

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:

iptables rules export

Limpar uma única chain

Vamos ver como limpar uma chain. Use a flag “-F” seguida pela chain de destino:

flush a single 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:

flush all changes

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:

Flush rules, delete chains and accept all

Agora, limpe as tabelas nat e mangle:

 flush nat and mangle tables

 mangle tables

Limpe todas as chains e exclua todas as chains não padrão:

Flush all the chains

 delete all the non-default chains

A seguir, vamos verificar o resultado:

iptables result

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!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.