2.6. IPTables


Incluídos com o Red Hat Enterprise Linux estão ferramentas avançadas para filtragem de pacotes de rede — o processo de controlar pacotes de rede conforme entram, se movem e saem da pilha de rede dentro do kernel. As versões do kernel anteriores à 2.4 que confiavam no ipchains para filtragem de pacotes e usavam listas de regras aplicadas ao pacote em cada passo do processo de filtragem. O kernel 2.4 introduziu o iptables (também chamado de netfilter), o qual é semelhante ao ipchains mas expande o alcance e controle disponíveis para filtrar pacotes de rede.
Este capítulo foca no conhecimento básico de filtragem de pacote, explica diversas opções disponíveis com os comandos iptables, e explica como regras de filtragem podem ser preservadas entre as reinicializações de sistema.
Consulte a Seção 2.6.6, “Recursos Adicionais” para instruções sobre como construir regras de iptables e instalar um firewall baseado nestas regras.

Importante

O mecanismo de firewall padrão no kernel 2.4 e versões posteriores é o iptables, mas o iptables não pode ser usado se o ipchains já estiver sendo executado. Se o ipchains estiver presente durante a inicialização, o kernel emite um erro e não inicia o iptables.
A funcionalidade do ipchains não foi afetada por estes erros.

2.6.1. Filtro de Pacote

O kernel Linux usa o serviço do Netfilter para filtrar pacotes, permitindo que alguns deles sejam recebidos ou passados pelo sistema enquanto outros são interrompidos. Este serviço é embutido no kernel do Linux e possui três tabelas ou listas de regras embutidos, como se segue:
  • filter — A tabela padrão para manipular pacotes de rede.
  • nat — Usado para alterar pacotes que criam uma nova conexão e usado para o Network Address Translation (NAT).
  • mangle — Usado para tipos específicos de alteração de pacote.
Cada tabela possui um grupo de correntes (chains), que correspondem às ações realizadas no pacote pelo netfilter.
As correntes (chains) embutidas para a tabela do filtragem são estas:
  • INPUT — Se aplica aos pacotes de rede que são direcionados para o host.
  • OUTPUT — Se aplica ao pacotes de rede gerados localmente.
  • FORWARD — Se aplica aos pacotes de rede roteados no host.
As correntes embutidas para a tabela nat são estas:
  • PREROUTING — Altera os pacotes de rede quando chegam.
  • OUTPUT — Altera os pacotes de rede gerados localmente antes de serem enviados..
  • POSTROUTING — Altera pacotes de rede antes de serem enviados.
As chains (correntes) embutidas para a tabela mangle são estas:
  • INPUT — Altera pacotes de rede alvo para a máquina.
  • OUTPUT — Altera os pacotes de rede gerados localmente antes de serem enviados..
  • FORWARD — Altera pacotes de rede roteados pela máquina.
  • PREROUTING — Altera pacotes de entrada antes de serem roteados.
  • POSTROUTING — Altera pacotes de rede antes de serem enviados.
Cada pacote de rede recebido por ou enviado de um sistema Linux está sujeito à ao menos uma tabela. No entanto, um pacote pode estar sujeito à diversas regras dentro de cada tabela antes de emergir no final da corrente. A estrutura e propósito destas regras podem variar, mas elas geralmente procuram identificar um pacote que vem ou vai à um endereço IP específico, ou conjunto de endereços, ao usar um determinado protocolo e serviço de rede. A imagem a seguir apresenta como os pacotes são examinados pelo subsistema do iptables:

Nota

Por padrão, as regras de firewall são salvas nos arquivos /etc/sysconfig/iptables ou /etc/sysconfig/ip6tables .
O serviço iptables inicia antes dos serviços relacionados ao DNS quando um sistema Linux é inicializado. Isto significa que as regras do firewall podem somente fazer referência à endereços de IP numéricos (por exemplo, 192.168.0.1). Nomes do domínio (por exemplo, host.example.com) em tais regras, produzem erros.
Seja qual for o destino, quando os pacotes coincidem com uma regra específica em uma das tabelas, um alvo ou ação é aplicado à eles. Se a regra especifica um alvo ACCEPT para um pacote coincidente, o pacote pula o restante das verificações de regras e é permitido que continue com seu destino. Se uma regra especifica um alvo DROP, aquele pacote é recusado ter acesso ao sistema e nada é retornado ao host que enviou ou pacote. Se uma regra especifica um alvo QUEUE, o pacote é passado ao espaço de usuário. Se uma regra especifica o alvo opcional REJECT, o pacote é despejado, mas um pacote de erro é enviado ao originador do pacote.
Toda corrente possui uma política padrão para ACCEPT, DROP, REJECT, ou QUEUE. Se nenhuma destas regras na corrente se aplicar ao pacote, então o pacote será lidado de acordo com a política padrão.
O comando iptables configura estas tabelas, assim como instala tabelas se necessário.
Red Hat logoGithubRedditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja oBlog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

© 2024 Red Hat, Inc.