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 Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
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.