Filtrer les script kiddies

avatar-Nicolas Nicolas
Publié le

Si vous disposez d'un serveur sous unix et que vous en avez assez de voir des script kiddies tenter d’accéder à une faille par adresse ip directement, vous pouvez utiliser ce petit script qui ajoute un filtrage iptables (avec log dans /var/log/syslog) aux accès par adresse IP :

#!/bin/sh

# variables generales
ipfile="/tmp/current-wan-ip"
ipservice="ifconfig.me"
iptables=/sbin/iptables

# recuperation de l'ip
IP=`curl -s $ipservice`
if [ "${#IP}" = "0" ]; then
	echo "[FW] Echec de la recuperation de l'ip WAN"
	exit 10
fi

# lecture de l'ancienne ip
OLDIP=""
if [ -e $ipfile ]; then
    OLDIP=`cat $ipfile`
fi

# test si l'addresse a changee
if [ "$OLDIP" = "$IP" ]; then
	echo "[FW] Pas de changement d'adresse IP WAN"
	exit 10
fi

# enregistrement de la nouvelle ip
echo $IP>$ipfile

echo "[FW] Mise a jour d'iptables"
if [ "${#OLDIP}" != "0" ]; then
	echo "[FW] Suppression de l'ancienne règle ($OLDIP)"
	${iptables} -t filter -D INPUT -p tcp --dport 80 -m string --to 700 --algo bm --string "Host: $OLDIP" -j LOG --log-prefix="Firewall IP scan "
	${iptables} -t filter -D INPUT -p tcp --dport 80 -m string --to 700 --algo bm --string "Host: $OLDIP" -j REJECT --reject-with icmp-port-unreachable
fi

echo "[FW] Insertion de la nouvelle règle ($IP)"
${iptables} -t filter -I INPUT -p tcp --dport 80 -m string --to 700 --algo bm --string "Host: $IP" -j REJECT --reject-with icmp-port-unreachable
${iptables} -t filter -I INPUT -p tcp --dport 80 -m string --to 700 --algo bm --string "Host: $IP" -j LOG --log-prefix="Firewall IP scan "

exit 0

Pensez à rendre votre script exécutable via :

chmod +x nom_de_votre_script.sh

Et ajoutez le dans votre crontab.