Utilizzare il servizio drop di Spamhaus con iptables

Il servizio Drop di Spamhaus è una sottolista gestita dal famoso servizio di sicurezza specifica per router e firewall. Questa lista contiene l’elenco di subnet certamente gestite da spammer ed hacker professionali ed è da utilizzare per bloccare a priori il traffico proveniente da queste reti.
In questo howto proporrò un semplice script da lanciare giornalmente attraverso un cronjob per scaricare il contenuto della blacklist e creare automaticamente le regole di iptables per bloccare il traffico.

#!/bin/bash

IPT="/sbin/iptables"
FILE="/tmp/drop.lasso"
URL="http://www.spamhaus.org/drop/drop.lasso"

echo ""
echo -n "Deleting DROP list from existing firewall..."

#This will delete all dropped ips from firewall
ipdel=$(cat $FILE  | egrep -v '^;' | awk '{ print $1}')

for ipblock in $ipdel
do
 $IPT -D spamhaus-droplist -s $ipblock -j DROP
 $IPT -D spamhaus-droplist -s $ipblock -j LOG --log-prefix "DROP Spamhaus List"
done


echo -n "Applying DROP list to existing firewall..."
#This will drop all ips from spamhaus list.
[ -f $FILE ] && /bin/rm -f $FILE || :
cd /tmp
wget $URL

blocks=$(cat $FILE  | egrep -v '^;' | awk '{ print $1}')
$IPT -N spamhaus-droplist

for ipblock in $blocks
do
    $IPT -A spamhaus-droplist -s $ipblock -j LOG --log-prefix "DROP Spamhau
s List"
    $IPT -A spamhaus-droplist -s $ipblock -j DROP
done

$IPT -I INPUT -j spamhaus-droplist
$IPT -I OUTPUT -j spamhaus-droplist
$IPT -I FORWARD -j spamhaus-droplist
echo "...Done"