edsoncsouza
(usa Debian)
Enviado em 01/04/2013 - 22:21h
Boa noite pessoal, esqueci de postar =]
Dei uma melhorada no script de novo
Para usar esse novo é só colocar ele para executar junto com o seu script de firewall e no cron.
Tambem tem que adicionar no seu firewall atual uma regra para as estações que vc quer com um -j bfacebook (lembre-se de adicionar a chain ou deixar o script criar)
#/bin/bash
#
#Cria caso não exista ARQUIVO ip_facebook
touch /tmp/ip_facebook
# Limpar arquivo de hosts temporario
> /tmp/host_facebook
IPTABLES=/sbin/iptables
# Caso script ainda esteja rodando recebera um kill
ps aux | grep $$ | grep -v $$ | awk '{ print $2}' | xargs kill -9 2> /dev/null > /dev/null
# Cria a chain bfacebook
if ! [ `$IPTABLES -nvL | grep bfacebook` ]
then $IPTABLES -N bfacebook
fi
#Chama a função domn para resolver os ips e adicionar a lista temporaria de ips, caso queira adicionar mais dominios basta colocar aqui
resolv_host() {
domn www.facebook.com
domn facebook.com
}
#Filtra somente o ip e o adiciona no arquivo host_facebook caso não esteja la
domn () {
for ip in `host $1 | egrep -v '(IPv6|alias|mail)'| sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\n&/g' | egrep -x '(((1[0-9]|[1-9]?)[0-9]|2([0-4][0-9]|5[0-5]))\.){3}((1[0-9]|[1-9]?)[0-9]|2([0-4][0-9]|5[0-5]))'`; do
if [ `egrep $ip /tmp/host_facebook ` ]
then echo "" > /dev/null
else echo $ip >> /tmp/host_facebook
fi
done
}
verificar_unicos () {
# Verifica se já existe o ip na lista "fixa" de ips
for ip in `cat /tmp/host_facebook`; do
if [ `cat /tmp/ip_facebook | grep $ip | wc -l` -gt 0 ]
then echo "" > /dev/null
else echo $ip >> /tmp/ip_facebook
fi
done
}
block_ip () {
# Faz o bloqueio dos ips do arquivo ip_facebook caso não exista uma regra para ele
for ip in `cat /tmp/ip_facebook`; do
if [ `$IPTABLES -nL bfacebook | egrep '(DROP|REJECT)' | grep $ip | wc -l` -gt 0 ]
then echo "" > /dev/null
else $IPTABLES -A bfacebook -d $ip -j DROP
fi
done
}
resolv_host
verificar_unicos
block_ip