Related Posts Plugin for WordPress, Blogger...
Related Posts Plugin for WordPress, Blogger...

Impedindo o compartilhamento de conexão com o Iptables

Entendendo o conceito

A princípio ocorreu-me limitar o número máximo de conexões por IP, mas já havia feito isso para uma empresa e achei que a solução além de ser uma gambiarra deteriorava bastante o desempenho da rede.
Lembrei-me então de algo que havia passado os olhos na documentação do Iptables que costumo acompanhar com freqüência. Um módulo chamado ipt_ttl.
Este módulo é o pivô de nossa solução. Vamos entender como ele funciona.
De forma resumida podemos entender o TTL (Time to Live) de um pacote não como uma unidade de "tempo" propriamente dita, mas como um valor que especifica quantos saltos ou hops como são chamados um pacote pode perdurar na rede. Isso é necessário para impedir que um pacote fica vagando ad eternum pela internet sendo enviado de um roteador a outro. O seu valor máximo é de 255.
Cada vez que um pacote atravessa um roteador da internet ele perde "um ponto" por assim dizer. Suponha que um pacote saiu de sua estação com um TTL de 127, que é o valor típico default da maioria dos sistemas operacionais, com destino a um determinado site e no caminho ele atravesse 6 roteadores, por cada um que ele passar ele "perderá" um ponto em seu TTL, então ele chegará a seu destinho com um TTL de 119.

Entendendo o módulo ipt_ttl na prática com o Iptables

Francamente não pesquisei a partir de que versão do kernel o módulo ipt_ttl passou a integrar o netfilter. O kernel que está rodando no sistema é um 2.6.23.11 e a versão do Iptables é a 1.3.8 sob a distro Slackware 12.0.
Para verificar se o módulo está compilado em seu sistema de o seguinte comando:
# modprobe -l | grep ttl
Estando, sua saída será algo parecido com isso:
/lib/modules/2.6.23.11/kernel/net/ipv4/netfilter/ipt_ttl.ko
Então vamos carregar o módulo, com o comando:
# modprobe ipt_ttl
Agora vamos ver os parâmetros do módulo ipt_ttl.
Em linha gerais ele pode ser aplicado nos chains INPUT, OUTPUT e FORWARD.
Ex:
# iptables -I OUTPUT -i eth0 -s 192.168.0.0/16 -m ttl --ttl-gt 127 -m mac --mac-source 00:9a:a2:d1:08:62 -j DROP
A regra acima nega a entrada de qualquer pacote que tenha um tempo de vida maior que 127 oriunda da rede local 192.168.0.0/16 e que possua o mac address 00:9a:a2:d1:08:62.
Mencionei este exemplo para mostrar que o iptables pode trabalhar com mais de um módulo por regra.
O que cada parâmetro faz:

  • --ttl-gt 127 - Refere-se a pacotes que tenham um TTL maior que o especificado em nosso exemplo é 127 podendo chegar a 254;
  • --ttl-lt 127 - Refere-se a pacotes que tenha um TTL menor que o especificado podendo chegar 2;
  • --ttl-eq 127 - Refere-se a pacotes que tenha o TTL igual a 127 podendo os valores variarem de 1 a 255.
Algumas considerações

Entendam que a solução não é inexpugnável, um cliente avançado com conhecimentos de TCP/IP e netfilter poderia alterar o TTL de seu SO e pendurar quantas máquinas desejasse atrás de seu gateway doméstico, trata-se apenas de uma forma de dificultar um pouco a ação destes clientes.
No Linux isso pode ser alterado em /proc/sys/net/ipv4/ip_default_ttl, os valores podem ser de 1 a 255.
No "outro sistema" desconheço qual a entrada no registry responsável por isso, mas que ela existe, existe.
Portanto ao implementarem esta solução em seus provedores façam-no de forma discreta, adotem a compartimentação de informação e não permitam que técnicos de campo fiquem a par da implementação.

Créditos ao meu amigo Carlos Affonso Henriques

Feed
Gostou deste artigo? Então assine nosso Feed ou receba os artigos por email.Se este site foi útil para você, considere fazer uma doação

Seja o primeiro a comentar

Postar um comentário

Muito obrigado pelo comentário.

Seguidores

Anuciantes

Referência

Modding Blogs - BlogCatalog Blog Directory manutencaonet.blogspot.com no linkto Join My Community at MyBloglog! hihera.com TopOfBlogs Divulgue seu blog! Creative Commons License

  ©Template by manutenc@o.net.

TOPO