quarta-feira, 25 de março de 2015

Iptables – Bloqueando por String




As vezes precisamos bloquear um site que tem inumeros ip’s , e que esses ip’s podem mudar com o passar do tempo por que a empresa tem um range enorme. A opção mais sensata seria usar um proxy para fazer o serviço. Mas peguei um caso especifico que  o meu cliente tinha programas que conectavam em webservices e os mesmos programas não sabiam lidar com proxy, simplesmente davam todos os erros possiveis mas não estabeleciam conexão com o webservice, e não havia nenhum suporte para resolver isso do desenvolvedor dos softwares. A solução que encontrei foi o bloqueio no iptables por string. Dessa forma ele vai ler a string referente a url bloqueando o site no firewall. Segue abaixo um exemplo de como fazer isso, considerando que eth1 é a placa da sua rede interna:

Bloqueando um site:
iptables -I FORWARD -i eth0 -m string --algo bm --string 'youtube.com' -j DROP

Liberando para um ip especifico:

 iptables -A FORWARD -i eth0 -s 192.168.1.100 -m string --algo bm --string 'youtube.com' -j ACCEPT