Pesquisa de site

Como funciona o firewall do Iptables


Introdução

Configurar um firewall é uma etapa essencial para proteger qualquer sistema operacional moderno. A maioria das distribuições do Linux vem com algumas ferramentas de firewall diferentes que você pode usar para configurar um firewall. Neste guia, abordaremos o firewall iptables.

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 do netfilter no nível do kernel que podem manipular a pilha de rede do Linux. Ele funciona comparando cada pacote que cruza a interface de rede com 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 A Deep Dive into Iptables and Netfilter Architecture.

Como funciona o Iptables

Primeiro, vamos revisar algumas terminologias 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.

Existem muitas opções para estabelecer quais pacotes correspondem a uma regra específica. Você pode combinar 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 os pacotes anteriores e assim por diante.

Quando o padrão definido corresponde, a ação que ocorre é chamada de alvo. Um destino pode ser uma decisão 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 pelas quais um pacote é verificado sequencialmente. Quando o pacote corresponde a uma das regras, ele executa a ação associada e ignora as regras restantes na cadeia.

Um usuário pode criar cadeias conforme necessário. Existem três cadeias definidas por padrão. Eles são:

  • ENTRADA: Esta cadeia lida com todos os pacotes que são endereçados ao seu servidor.
  • SAÍDA: 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 em seu servidor. Essa cadeia é uma forma 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 passa por todas as regras da cadeia e não corresponde a nenhuma regra. Você pode descartar o pacote ou aceitá-lo se nenhuma regra corresponder.

O 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 seu relacionamento com os 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 do 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 habilitado em seu servidor, terá que configurar ambas as tabelas para endereçar o tráfego em seu servidor.

Observação: o Nftables, um sucessor do Iptables, integra o tratamento de IPv4 e IPv6 mais de perto. O comando iptables-translate pode ser usado para migrar regras Iptables para Nftables.

O comando regular iptables é usado para manipular a tabela que contém as regras que governam o tráfego IPv4. Para tráfego IPv6, um comando complementar chamado ip6tables é usado. Quaisquer regras que você definir com iptables afetarão apenas pacotes usando endereçamento 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 ip6tables.

Coisas a ter em mente

Agora que você sabe como o iptables direciona os pacotes que vêm através de sua interface – direcionar o pacote para a cadeia apropriada, verificar cada regra até que uma corresponda, emitir a política padrão da cadeia se nenhuma correspondência for encontrada – você pode começar a criar regras .

Primeiro, você precisa ter certeza de que possui regras para manter as conexões atuais ativas se implementar uma política de descarte padrão. Isso é especialmente importante se você estiver conectado ao seu servidor por meio de SSH. Se você acidentalmente implementar uma regra ou política que derrube sua conexão atual, pode ser necessário fazer login no servidor usando um console de recuperação baseado em navegador.

Outra coisa a ter em mente é que a ordem das regras em cada cadeia é importante. Um pacote não deve se deparar com uma regra mais geral que corresponda se for destinado a corresponder a uma regra mais específica.

Por causa disso, as regras próximas ao topo de uma cadeia devem ter um nível mais alto de especificidade do que as regras na parte inferior. Você deve corresponder 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 esse motivo, a política padrão de uma cadeia dita fortemente os tipos de regras que serão incluídos na cadeia. Uma cadeia com a política padrão de ACCEPT conterá regras que descartam pacotes explicitamente. Uma cadeia cujo 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 os Cloud Firewalls da DigitalOcean.