Abbiamo visto come installare e configurare un firewall iptables su server ubuntu linux, vediamo adesso come aggiungere una blacklist di indirizzi IP.
Su internet possiamo trovare varie fonti che detengono liste di IP bannati, ma nel nostro caso vogliamo bannare solo una serie di ip conosciuti perchè utilizzati per attaccare determinati servizi Es. ssh, apache.
In questo modo se non gestiamo un server di posta possiamo limitare il numero di regole da aggiungere al nostro firewall. Infatti la maggior parte degli indirizzi IP bannati sono conosciuti per azioni di spam.
Blocklist.de è una buona fonte e fornisce liste di IP bannati suddivisi per servizio.
http://www.blocklist.de/lists/
Come possiamo vedere il file relativo alla porta 25 (server mail smtp) è quello più fornito.
Vediamo come integrare tali liste per aggiungerle nuove regole di DROP al nostro firewall
creiamo un nuovo script vi /etc/init.d/firewall-blacklist
#! /bin/sh
### BEGIN INIT INFO
# Provides: scriptname
# Required−Start: $remote_fs $syslog
# Required−Stop: $remote_fs $syslog
# Default−Start: 2 3 4 5
# Default−Stop: 0 1 6
# Short−Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
start(){
echo "start"
BLACKLIST=/usr/local/etc/blacklist.txt
BLOCKLIST_URL=http://www.blocklist.de/lists/22.txt
wget $BLOCKLIST_URL −O $BLACKLIST
if [ $? −eq 0 ]
then
for x in `grep −v ^# $BLACKLIST | awk '{print $1}'`; do
echo "Denying $x..."
/sbin/iptables −D INPUT −t filter −s $x −j DROP
/sbin/iptables −A INPUT −t filter −s $x −j DROP
done
else
echo "$BLOCKLIST_URL ERROR"
fi
}
stop(){
echo "stop"
#/sbin/iptables −F INPUT
}
restart(){
stop
sleep 5
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: firewall {start|stop|restart}"
exit 1
esac
exit 0
utilizzando
/etc/init.d/firewall-blacklist start
verrà scaricato il file degli indirizzi IP ed inseriti nelle rule di iptables se non già presenti.
inseriamolo adesso sulla crontab per aggiornare la lista degli ip regolarmente
crontab -e
0 2 * * * (/etc/init.d/firewall-blacklist start)
Salve,
ho installato lo script allo startup del sistema, ma quando faccio il reboot a volte sembra che ci metta molto a tornare online.
Se disabilito lo script non accade, cosa potrebbe essere?
Ciao Mario,
probabilmente è legato al timeout di default della wget che credo sia di 900s
Puoi provare ad aggiungere il parametro –timeout=10 alla wget
Grazie,
adesso il problema non si presenta più!