[FUG-BR] IPFW - Bloquear dominios pelo Firewall

Danilo Neves danilorpneves em bsd.com.br
Quinta Junho 7 13:07:21 BRT 2012


Caro colegas da comunidade....é o seguinteee
Não sei se estou fazendo da forma correta ou se um jeito melhor (sem
proxy), mas vamos supor que eu queira bloquear o facebook.com
pelo ipfw.

ipfw add deny ip from any to facebook.com

Nesse caso ele só vai bloquear o ip que resolveu na hora como mostro
abaixo...mas o facebook é resolvido por vários IPs...e sendo assim não
seria a forma ideal.

# ipfw show
00100      0        0 deny tcp from any to 69.171.224.37


No iptables  ele já pega todos os ips  e já bloqueia.

Comando para bloquear
#iptables -A OUTPUT -d facebook.com.br -j DROP

Listando os ips bloqueados
#iptables -nL OUTPUT
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  0.0.0.0/0            69.171.242.11
DROP       all  --  0.0.0.0/0            66.220.158.11
DROP       all  --  0.0.0.0/0            69.171.224.37
DROP       all  --  0.0.0.0/0            66.220.149.11
DROP       all  --  0.0.0.0/0            69.171.229.11

Vejam que ele já pegou todos os ips e dropou :D

Agora vem a pergunta....no ipfw tem algum parâmetro que eu tenho q colocar
para bloquear todos os ips que resolve o nome facebook.com?


Veja uma alternativa em script e table dentro do arquivo do firewall a ser
carregado:
--------------------------------------------------------------------------------
ipfw -f flush
# Table
# é só criar um arquivo /etc/rc.blacklist e colocar dentro o nome dos
domínios a serem bloqueados

while read domain
do
    nslookup $domain | grep Address | grep -v '#' | egrep
'([0-9]{1,3}\.){3}([0-9]){1,3}' | awk '{print $2}' >> /etc/blockedips
done < /etc/rc.blacklist

ipfw -f table 91 flush
 for rede in $(cat /etc/blockedips) ; do
   ipfw table 91 add $rede
 done

rm /etc/blockedips


ipfw add  1 deny ip from any to "table(91)"

-----------------------------------------------------------------------------------------------


Ou seja...quando eu coloco dentro do arquivo /etc/rc.blacklist os nome dos
domínios

facebook.com
terra.com.br

ele vai resolver todos os ips do domínio com nslookup e jogar pra dentro do
arquivo os /etc/blockedips que colequei dentro da table 91.
Tendeu????

Tem uma forma melhor de fazer isso ou correta com ipfw ??


Mais detalhes sobre a lista de discussão freebsd