NetFilter Hook em Kernel 2.6

Introdução

Netfilter é um subsistema do Kernel do Linux superiores ao 2.4. O Netfilter é o responsável pelo filtro de pacotes, NAT, firewall, redirecionamentos, entre outros. O Netfilter é muito extensível e sua documentação é muito bem feita (procure também por “Netfilter Hacking HOWTO”). O Netfilter deixa a possibilidade de uso de HOOKs no código do Kernel, fazendo com que seu uso seja muito maleável e muito adotado pela comunidade. Estes HOOKs deixam várias possibilidades, podendo servir como gatilhos para certos eventos.
O Netfilter é muito conhecido pelo seu comando de front-end, o iptables, mas não limita-se à ele. A criação de EXTENSIONs para o iptables, a criação de HOOKs no Netfilter/Kernel se tornam muito interessantes, tendo como limitação apenas a imaginação de cada um.
A idéia de desenvolver um HOOK partiu do princípio da complexidade em se contabilizar consumo por IPs e por PORTAS, utilizando os próprios recursos do sistema. Muitos vão me dizer: mas isto é possível com fulano, ciclano, etc. Normalmente os programas que executam esta ação utilizam meios mais pesados para obtê-la, utilizando de bibliotecas como a libpcap (sniffer), entre outras formas, que acabam consumindo uma certa memória.
Desta maneira surgiu a idéia de desenvolver estes módulos em cima do próprio IPTABLES e minha experiência anterior (IPCHAINS) forçava a me atentar ao fato de que certos contadores eu poderia encontrar no /proc. Ledo engano: o iptables não armazena muita coisa interessante por lá.
Mas a melhor idéia veio realmente quando eu me deparei com o Fedora Core 4, que vinha com o SELinux e que habilitava um Netfilter HOOK sobre o sistema. Algumas pesquisas e pronto: cá estava eu com uma fonte interessante de informações, mas que não me serviam, pois elas existem muito mais para Kernel 2.4. Como fazer então com Kernel 2.6?

Continuar lendo