Introdução
Configurar um firewall é uma etapa essencial para garantir a segurança de qualquer sistema operacional moderno. A maioria das distribuições Linux é fornecida com algumas ferramentas de firewall diferentes que você pode usar para configurar um firewall. Neste guia, abordaremos o firewall iptables
.
O Iptables é um firewall padrão incluído na maioria das distribuições Linux por padrão. É uma interface de linha de comando para os ganchos de netfilter no nível do kernel que podem manipular a pilha de rede do Linux. Ele funciona correspondendo cada pacote que atravessa a interface de rede a um conjunto de regras para decidir o que fazer.
Neste guia, você revisará como o Iptables funciona. Para uma abordagem mais aprofundada, você pode ler Uma Análise Profunda da Arquitetura do Iptables e Netfilter.
Como o Iptables Funciona
Primeiro, vamos revisar alguns termos e discutir como o iptables funciona.
O firewall iptables opera comparando o tráfego de rede com um conjunto de regras. As regras definem as características que um pacote de rede precisa ter para corresponder, e a ação que deve ser tomada para os pacotes correspondentes.
Há muitas opções para estabelecer quais pacotes correspondem a uma regra específica. Você pode corresponder ao tipo de protocolo do pacote, ao endereço ou porta de origem ou destino, à interface que está sendo usada, à sua relação com pacotes anteriores, e assim por diante.
Quando o padrão definido corresponde, a ação que ocorre é chamada de alvo. Um alvo pode ser uma decisão de política final para o pacote, como ACCEPT
ou DROP
. Ele também pode mover o pacote para uma cadeia diferente para processamento ou registrar o encontro. Existem muitas opções.
Essas regras são organizadas em grupos chamados cadeias. Uma cadeia é um conjunto de regras que um pacote verifica sequencialmente. Quando o pacote corresponde a uma das regras, ele executa a ação associada e pula as regras restantes na cadeia.
A user can create chains as needed. There are three chains defined by default. They are:
- INPUT: Esta cadeia lida com todos os pacotes destinados ao seu servidor.
- OUTPUT: Esta cadeia contém regras para o tráfego criado pelo seu servidor.
- FORWARD: Esta cadeia é usada para lidar com o tráfego destinado a outros servidores que não são criados no seu servidor. Esta cadeia é uma maneira de configurar seu servidor para rotear solicitações para outras máquinas.
Cada cadeia pode conter zero ou mais regras e possui uma política padrão. A política determina o que acontece quando um pacote atravessa todas as regras na cadeia e não corresponde a nenhuma regra. Você pode descartar o pacote ou aceitá-lo se nenhuma regra corresponder.
Iptables também pode rastrear conexões. Isso significa que você pode criar regras que definem o que acontece com um pacote com base em sua relação com pacotes anteriores. A capacidade é “rastreamento de estado”, “rastreamento de conexão” ou configuração da “máquina de estado”.
IPv4 versus IPv6
O firewall netfilter incluído no kernel Linux mantém o tráfego IPv4 e IPv6 completamente separados. As ferramentas Iptables usadas para manipular as tabelas que contêm os conjuntos de regras do firewall também são distintas. Se você tiver o IPv6 ativado em seu servidor, precisará configurar ambas as tabelas para lidar com o tráfego em seu servidor.
Observação: Nftables, sucessor do Iptables, integra o tratamento de IPv4 e IPv6 de forma mais próxima. O comando iptables-translate pode ser usado para migrar regras do Iptables para o Nftables.
O comando regular iptables
é usado para manipular a tabela que contém regras que governam o tráfego IPv4. Para o tráfego IPv6, é usado um comando companheiro chamado ip6tables
. Quaisquer regras que você defina com iptables
afetarão apenas os pacotes que usam endereços IPv4, mas a sintaxe entre esses comandos é a mesma. O comando iptables
criará as regras que se aplicam ao tráfego IPv4, e o comando ip6tables
criará as regras que se aplicam ao tráfego IPv6. Não se esqueça de usar os endereços IPv6 do seu servidor para criar as regras do ip6tables
.
Coisas para Manter em Mente
Agora que você sabe como o iptables direciona pacotes que passam por sua interface – direciona o pacote para a cadeia apropriada, verifica-o em relação a cada regra até que uma corresponda, emite a política padrão da cadeia se nenhuma correspondência for encontrada – você pode começar a criar regras.
Primeiro, você precisa garantir que tenha regras para manter conexões ativas atuais se implementar uma política de descarte padrão. Isso é especialmente importante se você estiver conectado ao seu servidor por meio de SSH. Se acidentalmente implementar uma regra ou política que interrompa sua conexão atual, talvez seja necessário fazer login no seu servidor usando um console de recuperação baseado em navegador.
Outra coisa a se ter em mente é que a ordem das regras em cada cadeia importa. Um pacote não deve encontrar uma regra mais geral que corresponda a ele se estiver destinado a corresponder a uma regra mais específica.
Por causa disso, regras próximas ao topo de uma cadeia devem ter um nível de especificidade maior do que regras na parte inferior. Você deve combinar casos específicos primeiro e, em seguida, fornecer regras mais gerais para combinar padrões mais amplos. Se um pacote passar por toda a cadeia (se não corresponder a nenhuma regra), ele seguirá a regra mais geral, ou seja, a política padrão.
Por esse motivo, a política padrão de uma cadeia determina fortemente os tipos de regras que serão incluídas na cadeia. Uma cadeia com a política padrão de ACCEPT
conterá regras que descartam explicitamente pacotes. Uma cadeia que tenha como padrão DROP
conterá exceções para pacotes que devem ser especificamente aceitos.
Conclusão
Neste ponto, você está pronto para implementar seu próprio firewall. Para isso, você deve ler Como Configurar um Firewall Usando Nftables no Ubuntu 22.04. Ou, para uma abordagem mais geral, Como Configurar um Firewall com UFW no Ubuntu 22.04. Se preferir executar seu firewall como uma camada de serviço gerenciado, você também pode experimentar Firewalls em Nuvem da DigitalOcean.
Source:
https://www.digitalocean.com/community/tutorials/how-the-iptables-firewall-works