Introdução
A configuração de um firewall é um passo 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 de nível de kernel que podem manipular a pilha de rede do Linux. Ele funciona correspondendo cada pacote que atravessa a interface de rede contra um conjunto de regras para decidir o que fazer.
Neste guia, você aprenderá como o Iptables funciona. Para uma abordagem mais detalhada, você pode ler Uma Investigação Profunda na 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 pacotes correspondentes.
Existem muitas opções para estabelecer quais pacotes correspondem a uma regra específica. Você pode fazer correspondência com o tipo de protocolo do pacote, o endereço ou porta de origem ou destino, a 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
. 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 encaminhar 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 aceitar o pacote 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 separado. 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 no seu servidor, será necessário configurar ambas as tabelas para abordar o tráfego no seu servidor.
Nota: Nftables, um sucessor do Iptables, integra o manuseio do IPv4 e IPv6 de forma mais próxima. O comando iptables-translate pode ser usado para migrar as regras do Iptables para o Nftables.
O comando regular iptables
é usado para manipular a tabela que contém as regras que regem o tráfego IPv4. Para o tráfego IPv6, é usado um comando companheiro chamado ip6tables
. Qualquer regra que você defina com iptables
só afetará pacotes que usam endereços IPv4, mas a sintaxe entre esses comandos é a mesma. O comando iptables
fará as regras que se aplicam ao tráfego IPv4, e o comando ip6tables
fará 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 ter 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 contra cada regra até encontrar uma correspondência, 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 atuais ativas se implementar uma política de descarte padrão. Isso é especialmente importante se você estiver conectado ao seu servidor através do SSH. Se você implementar acidentalmente uma regra ou política que interrompa sua conexão atual, talvez precise fazer login no seu servidor usando um console de recuperação baseado em navegador.
Outra coisa a 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 for destinado a corresponder a uma regra mais específica.
Devido a isso, as regras próximas ao topo de uma cadeia devem ter um nível mais elevado de especificidade do que as regras na parte inferior. Você deve combinar casos específicos primeiro e, em seguida, fornecer regras mais gerais para corresponder a 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 essa razão, a política padrão de uma cadeia dita 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 tem 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 de alto nível, Como Configurar um Firewall com UFW no Ubuntu 22.04. Se preferir executar seu firewall como uma camada de serviço gerenciada, também pode experimentar Firewalls na Nuvem da DigitalOcean.
Source:
https://www.digitalocean.com/community/tutorials/how-the-iptables-firewall-works