Target TTL do Iptables: Contornando bloqueios de compartilhamento
Dica publicada em Linux / Introdução
Target TTL do Iptables: Contornando bloqueios de compartilhamento
Algum tempo atrás postei aqui o artigo Impedindo o compartilhamento de conexão. Pois bem! Agora vou falar sobre o alvo ou target TTL do Iptables, que permite o caminho inverso, ou seja, contornar um bloqueio de compartilhamento por ttl.
A manipulação de TTL tem inúmeras aplicações além de contornar eventuais bloqueios, pode-se por exemplo restringir o acesso de uma rede corporativa desta maneira. Imagine uma VPN entre matriz e filial por exemplo, pode-se restringir a capacidade de envio de pacotes para fora da VPN, ou mesmo estabelecer bloqueios muito eficientes. Emfim, em GNU/Linux os limites são a inventividade do administrador ou desenvolvedor.
Pela documentação do Iptables reza que no chain PREROUTING pode-se especificar qual interface de rede em que se deseja que o alvo seja aplicado, porém em meus experimentos práticos constatei que este recurso funciona para pacotes que saem de uma determinada interface de rede (-o ethX) nos chains POSTROUTING e FORWARD.
No chain PREROUTING não é possível especificar uma interface de rede. Em meu caso estou usando o Iptables 1.4.0 sob Kernel 2.6.25.4 e não testei a solução em versões mais recentes do Kernel que nesta data 23/11/2008 encontra-se na versão 2.6.27.7.
O target TTL possui três parâmetros:
A sintaxe:
# iptables -t mangle -A PREROUTING -j TTL --ttl-dec 40
Notem o que eu mencionei acima sobre especificar interfaces de rede no chain PREROUTING.
# iptables -t mangle -A FORWARD -o eth0 -j TTL --ttl-set 128
No chain FORWARD apenas podem ser especificadas interfaces de saída. Uma coisa muito interessante sobre aplicar o target TTL no chain FORWARD é que ele não faz decréscimo de um ponto no TTL quando um pacote oriundo da rede interna o atravessa.
# iptables -t mangle -A POSTROUTING -d 192.168.7.115 -j TTL --ttl-dec 30
A regra acima decrementa 30 hops do ttl do host 192.168.7.115. A target TTL só faz manipulação de ttl em hosts ou redes no chain POSTROUTING. sempre -d para redes locais e -s para redes remotas. Observem no exemplo seguinte.
# iptables -t mangle -A POSTROUTING -s 200.221.2.45 -j TTL --ttl-dec 30
A regra acima decrementa 30 hops do ttl do host 200.221.2.45.
Espero ter ajudado!
Bom trabalho a todos.
Definição
Cada vez que um pacote atravessa um roteador ele "perde", por assim dizer, um ponto de seu TTL de origem, isto foi implementado no TCP/IP com a finalidade de impedir que pacotes ficasses vagando na internet de um roteador a outro indefinidamente.A manipulação de TTL tem inúmeras aplicações além de contornar eventuais bloqueios, pode-se por exemplo restringir o acesso de uma rede corporativa desta maneira. Imagine uma VPN entre matriz e filial por exemplo, pode-se restringir a capacidade de envio de pacotes para fora da VPN, ou mesmo estabelecer bloqueios muito eficientes. Emfim, em GNU/Linux os limites são a inventividade do administrador ou desenvolvedor.
O target TTL e suas sintaxes
Os chains que permitem ser direcionados para o target TTL são PREROUTING, POSTROUTING e FORWARD.Pela documentação do Iptables reza que no chain PREROUTING pode-se especificar qual interface de rede em que se deseja que o alvo seja aplicado, porém em meus experimentos práticos constatei que este recurso funciona para pacotes que saem de uma determinada interface de rede (-o ethX) nos chains POSTROUTING e FORWARD.
No chain PREROUTING não é possível especificar uma interface de rede. Em meu caso estou usando o Iptables 1.4.0 sob Kernel 2.6.25.4 e não testei a solução em versões mais recentes do Kernel que nesta data 23/11/2008 encontra-se na versão 2.6.27.7.
O target TTL possui três parâmetros:
- --ttl-set n - Onde n é um valor de TTL que será arbitrado entre 0 e 255;
- --ttl-inc n - Onde n é um valor de TTL que será incrementado entre 1 e 254, embora possa ser incrementado até 255 não há sentido nisso, pois o TCP/IP suporta um ttl máximo de 255;
- --ttl-dec n - Onde n é um valor de TTL que será decrementado entre 1 e 255.
A sintaxe:
# iptables -t mangle -A PREROUTING -j TTL --ttl-dec 40
Notem o que eu mencionei acima sobre especificar interfaces de rede no chain PREROUTING.
# iptables -t mangle -A FORWARD -o eth0 -j TTL --ttl-set 128
No chain FORWARD apenas podem ser especificadas interfaces de saída. Uma coisa muito interessante sobre aplicar o target TTL no chain FORWARD é que ele não faz decréscimo de um ponto no TTL quando um pacote oriundo da rede interna o atravessa.
# iptables -t mangle -A POSTROUTING -d 192.168.7.115 -j TTL --ttl-dec 30
A regra acima decrementa 30 hops do ttl do host 192.168.7.115. A target TTL só faz manipulação de ttl em hosts ou redes no chain POSTROUTING. sempre -d para redes locais e -s para redes remotas. Observem no exemplo seguinte.
# iptables -t mangle -A POSTROUTING -s 200.221.2.45 -j TTL --ttl-dec 30
A regra acima decrementa 30 hops do ttl do host 200.221.2.45.
Espero ter ajudado!
Bom trabalho a todos.
Thanks!