IP Tables / netfilters e modules

1

Estou tentando entender como o firewall funciona no linux ... Eu li a documentação, mas não tenho certeza sobre algumas coisas ....

O Netfilters está incluído nos kernels modernos, o que permite usar ganchos para monitorar pacotes sem alterar seu conteúdo.

Iptables dizem que é um software que usa netfilter e ip_tables module talvez ..
Minhas perguntas são ....

  • O software IPTables userspace registra algum hook?
  • O que o módulo ip_table faz?
  • Quem faz o processamento do iptables ou do módulo?
  • Que coisas o IPtable faz (apenas gerencia as regras na memória ou tem ganchos e processa o tráfego)?
por GorillaApe 30.04.2011 / 16:28

3 respostas

4

netfilter

O netfilter é um conjunto de ganchos espalhados por todo o código de rede no kernel. Isso significa que se um pedaço de código está prestes a fazer algo significativo (vamos chamá-lo de X), ele chama uma função que diz "Estou prestes a fazer X". Essa função notificaria qualquer outra parte interessada através de um retorno de chamada registrado. Também é usado por outros sistemas (não iptables) como o IPVS.

O

netfilter também inclui mecanismos para passar pacotes para programas userspace - isto é usado pelo iptables para os targets QUEUE e ULOG para permitir ao usuário processar pacotes no espaço do usuário.

ip_tables (o módulo do kernel)

ip_tables é um módulo que usa o netfilter para obter esses avisos. Ele identifica os pacotes que foram informados como relevantes e faz as ações que foram instruídos a fazer. Ele sabe quais pacotes são relevantes e as ações a serem executadas neles com base nas regras que o usuário forneceu; Ele armazena essas regras em uma tabela. Na verdade, ele usa um módulo mais genérico, xtables, que o ip_tables usa.

Módulos de extensão

Os módulos de extensão fazem grande parte do trabalho de fornecer critérios de correspondência e ações de destino. Alguns exemplos de módulos de extensão incluem IP_NF_TARGET_LOG e NF_NAT.

iptables (a ferramenta userspace)

iptables é uma ferramenta de espaço de usuário para configurar essas regras no módulo ip_tables. A ferramenta também vem com muitos plugins que analisam opções de linha de comando e registram regras.

Saiba mais sobre o iptables internals

Se você quiser saber mais sobre os internos, há um livro excelente sobre o assunto. O livro tem tudo o que você precisa se você quer criar funcionalidades adicionais para o iptables, mas não fará muito para aumentar sua compreensão de como usar o iptables.

Saiba mais sobre como usar o iptables

Se você quiser entender melhor como usar o iptables, é melhor ler várias partes diferentes da documentação para ver as coisas explicadas de maneiras diferentes. Ainda mais importante, é jogar com o iptables você mesmo . Eu particularmente apreciei usar o alvo LOG para ver o fluxo de pacotes através das tabelas e cadeias e os efeitos das regras neles. Além disso, um gráfico do fluxo de pacotes através das tabelas é extremamente útil. Finalmente, se você está tentando fazer algo com o iptables e não está fazendo o que você espera, faça uma pergunta específica aqui no site; há um número de pessoas que respondem regularmente a perguntas que estão familiarizadas com o iptables.

    
por 30.04.2011 / 18:13
3

O comando iptables apenas manipula as regras de filtragem de pacotes do kernel. O tráfego de rede é normalmente gerenciado inteiramente pelo kernel, de acordo com essas regras. O kernel pode fazer roteamento e monitoramento bastante sofisticados. Além de iptables , a coleção de utilitários iproute2 é necessária para controlar o comportamento do kernel em cenários avançados .

O módulo ip_tables (não há ip_table module) é uma parte do componente de manipulação de pacotes do kernel. A menos que você esteja desenvolvendo código de rede do kernel ou instalando patches personalizados de pessoas que estão fazendo isso, você não precisa se preocupar com qual módulo está fazendo exatamente o quê.

É possível chamar o código do espaço do usuário quando um pacote é recebido. Isso corresponde a necessidades muito específicas de filtragem, mangling, roteamento ou registro. O kernel tem ganchos para executar o código do espaço do usuário em certos eventos, e as bibliotecas de espaço de usuário do netfilter fornecem uma interface para esses ganchos.

    
por 30.04.2011 / 17:37
2

Primeiro, entenda que no Linux, o envio, recebimento e encaminhamento de TCP / IP são feitos no kernel. Então, tudo relacionado à rede são módulos do kernel que precisam ser compilados no kernel ou modprobe d após a inicialização.

Citações do link : "netfilter é um conjunto de ganchos dentro do kernel do Linux que permite que módulos do kernel registrem funções de callback com a rede Uma função de retorno de chamada registrada é então chamada de volta para cada pacote que atravessa o respectivo gancho dentro da pilha de rede. "

O que isto significa é que o Netfilter é apenas um monte de "aberturas" no kernel que permite que alguém crie e plug-in outro código que muda como o Linux faz qualquer coisa relacionada à rede.

Além do artigo: "iptables é uma estrutura de tabela genérica para a definição de conjuntos de regras. Cada regra dentro de uma tabela IP consiste em um número de classificadores (iptables corresponde) e uma ação conectada (iptables alvo)."

iptables é um projeto específico e um conjunto de módulos do kernel que aproveita as "aberturas" fornecidas pelo Netfilter para implementar a filtragem de pacotes baseada em regra por regra (também conhecida como firewall) e muito mais. / p>

Então iptables 1) se conecta ao Netfilter e intercepta pacotes de rede que o kernel está prestes a enviar para uma NIC ou envia para um aplicativo, e 2) processa esse pacote em cada um dos conjuntos atuais de regras e 3) quando uma regra corresponde, envie o pacote para o alvo da regra .

Com regras configuradas corretamente, você pode soltar certos pacotes vindos da NIC, alterar pacotes para implementar NAT ou redirecionamento de portas ou apenas agir dependendo do conteúdo específico do protocolo do pacote ou do conteúdo da carga útil do pacote. Você também pode escrever regras que entreguem o pacote a um aplicativo de espaço do usuário (esse é o NFQUEUE target) para processamento adicional (filtros baseados no espaço do usuário como moblock usam isso).

Eu não sou um especialista em kernel Linux, mas acredito que exista um módulo iptables principal que lida com a adição / exclusão de regras e é com isso que o aplicativo de espaço do usuário iptables fala. Quase todo alvo é então manipulado pelo seu próprio módulo do kernel que pode existir como um módulo separado ou ser embutido no kernel.

Você pode procurar por si mesmo. Faça o download de um kernel de www.kernel.org , un-bzip2-it, cd diretamente para ele e faça um make menuconfig . Consulte o "Suporte de Rede" e você poderá ver todos os módulos disponíveis para o iptables.

    
por 30.04.2011 / 17:36