domingo, 4 de julho de 2010

Netfilter

Quanto tempo sem postar, quanto tempo sem pensar, quanto tempo sem exalar conhecimento... Risos!

Que final de período cabuloso, que final de período mortal, que final de período stressante...
Mas que final de período maravilhoso em se tratando da área financeira.

Alguns projetos em vista, mais pra frente eu falo. Já montei minha grade para o 5º período de Engenharia de Computação no Cefet-MG, dessa vez vamos botar pra gerar com 10 matérias + estágio + investimentos + poker + diversão = 4 horas e 1/2 de sono por dia.

Parando com o papinho bola gato de sempre, vamos falar de Netfilter.

Netfilter é uma infra-estrutura básica presente no núcleo (Kernel) do sistema operacional Linux versões 2.4.x e 2.6.x. Os módulos de Kernel podem ser anexados a esta infra-estrutura, para obter e oferecer algum tipo de tratamento aos pacotes que passam pela implementação da pilha TCP/IP no núcleo deste sistema operacional. Dentre esses módulos especiais, podemos destacar o módulo de filtragem de pacotes (implementado pelo Iptables) e o módulo de tradução de endereços (também implementado pelo Iptables).

O Netfilter define um conjunto de hooks (ganchos) dentro do Kernel do Linux, onde outros módulos podem ser anexados. Esses hooks são pontos bem definidos, nos quais módulos podem obter os pacotes atravessando a pilha TCP/IP do sistema operacional.

Para o protocolo IPv4, O Netfilter define 5 hooks. Quando um pacote chega a um determinado hook, o Netfilter checa quais módulos de Kernel estão registrados para oferecer algum tratamento aos pacotes naquele ponto. Caso existam, cada módulo sequencialmente (no caso de existir mais de um módulo trabalhando em um hook, uma fila de módulos é criada) recebe o pacote (desde que ele não seja descartado ou passado para o espaço de usuários por um módulo anterior) e pode examiná-lo, alterá-lo, descartá-lo, injetá-lo de volta ao Kernel para continuar sua viagem pela pilha TCP/IP ou encaminhá-lo para o espaço de usuários diretamente, dependendo da funcionalidade de rede implementada. Esses módulos geralmente registram-se em mais de um hook diferente ao mesmo tempo, podendo, até mesmo, fazer trabalhos diferentes em cada um deles.

Para um caso particular de um módulo dedicado à filtragem de pacotes, podemos imaginar que tal módulo poderia examinar, descartar ou injetar de volta ao Kernel cada pacote chegando a um hook. É importante lembrar que os processos de filtragem de pacotes e tradução de endereços (NAT) são realizados pelo Iptables, implementandos como módulos de Kernel do sistema operacional Linux (portanto não é um processo qualquer de usuário), fazendo uso da infra-estrutura presente no Kernel, Netfilter.

1 comentários:

Postar um comentário

Gostou da esbórnia de hoje ? Comentem.

Twitter Delicious Facebook Digg Stumbleupon Favorites More