Aller au contenu principal
Sujet: Blocage des vilains IP (Lu 1787 fois) sujet précédent - sujet suivant

Blocage des vilains IP

Bonjour à toutes et tous.

En regardant le fichier error.log de mon serveur NGINX, j'ai été interpelé par le nombre de requêtes visant à tester, voire attaquer, mon serveur. J'avais bien souvent 1500 requêtes par jour générant une erreur.

En cherchant sur internet, j'ai rapidement vu que beaucoup d'adresses IP qui envoyaient ces requêtes étaient répertoriées comme des vilains !
J'ai donc bricolé un script qui permet de récupérer ces listes d'adresses IP indésirables et de les injecter dans firewalld pour les bloquer.
A tord ou à raison, je préfère voir ces requêtes bloquées par mon pare-feu que de les laisser générer une erreur par mon serveur.

Pour récupérer les listes d'adresses à bloquer j'utilise celles des sites :
https://www.spamhaus.org/
http://cinsscore.com/

A l'usage, la liste de CINS est la plus pertinente pour bloquer les requêtes indésirables.

Je suis maintenant plutôt autour de 30 erreurs de serveur NGINX par jour générées par des IP indésirables. Mais parfois, je peux trouver un pic autour des 900 !

Si vous avez une meilleure liste d’indésirables à me conseiller, je suis preneur.
Si vous avez des idées d'amélioration de mon script, je suis preneur aussi !

Merci

A+

Mon script (je n'ai traduit que l'affichage lors de l’exécution). J'ai créé aussi un job cron qui l’exécute une fois par jour :
#!/bin/bash
# Thanks to many
SPAMHAUS_DROP="/usr/local/src/drop.txt"
SPAMHAUS_DROPv6="/usr/local/src/dropv6.txt"
SPAMHAUS_eDROP="/usr/local/src/edrop.txt"
URLCINS="http://cinsscore.com/list/ci-badguys.txt"
URL="https://www.spamhaus.org/drop/drop.txt"
URLv6="https://www.spamhaus.org/drop/dropv6.txt"
eURL="https://www.spamhaus.org/drop/edrop.txt"
DROP_ADD_TO_UFW="/usr/local/src/DROP2.txt"
DROPv6_ADD_TO_UFW="/usr/local/src/DROP2v6.txt"
eDROP_ADD_TO_UFW="/usr/local/src/eDROP2.txt"
CINS_ADD_TO_UFW="/usr/local/src/badguys.txt"
# Firewalld list name
CINS="cinsdrop";
SPAM="spamhausdrop";
SPAMv6="spamhausdropv6";
SPAME="spamhausedrop";
# All credits for the following BLACKLISTS goes to "The Spamhaus Project" - https://www.spamhaus.org
echo "Debut: $(date)"
echo " "
#
# Purge previous IP
#
echo "Purge anciennes firewalld DROP rules"
/usr/sbin/ipset flush $CINS
/usr/sbin/ipset flush $SPAM
/usr/sbin/ipset flush $SPAMv6
/usr/sbin/ipset flush $SPAME
firewall-cmd --permanent --remove-rich-rule='rule source ipset=cinsdrop log prefix="cins" level="debug" limit value="1/h" drop'
firewall-cmd --permanent --remove-rich-rule='rule source ipset=spamhausdrop log prefix="spamhaus" level="debug" limit value="1/h" drop'
firewall-cmd --permanent --remove-rich-rule='rule source ipset=spamhausdropv6 log prefix="spamhausv6" level="debug" limit value="1/h" drop'
firewall-cmd --permanent --remove-rich-rule='rule source ipset=spamhausedrop log prefix="spamEhaus" level="debug" limit value="1/h" drop'
echo "Destruction anciens ipset"
firewall-cmd --permanent --delete-ipset=$CINS
firewall-cmd --permanent --delete-ipset=$SPAM
firewall-cmd --permanent --delete-ipset=$SPAMv6
firewall-cmd --permanent --delete-ipset=$SPAME
#
# CINS
#
echo " "
echo "Telechargement liste CINS et extraction des IP"
wget -q -O - "$URLCINS" > $CINS_ADD_TO_UFW
echo "Creation ipset CINS"
firewall-cmd --permanent --new-ipset=$CINS --type=hash:net --option=family=inet --option=hashsize=4096
echo "Update ipset avec CINS list"
firewall-cmd --permanent --ipset=$CINS --add-entries-from-file=$CINS_ADD_TO_UFW
echo "Update firewalld avec CINS rule"
firewall-cmd --permanent --add-rich-rule='rule source ipset=cinsdrop log prefix="cins" level="debug" limit value="1/h" drop'
#
# DROP
#
echo " "
echo "Telechargement liste DROP et extraction des IP"
wget -q -O - "$URL" > $SPAMHAUS_DROP
grep -v '^;' $SPAMHAUS_DROP | cut -d ' ' -f 1 > $DROP_ADD_TO_UFW
echo " "
echo "Creation ipset DROP"
firewall-cmd --permanent --new-ipset=$SPAM --type=hash:net --option=family=inet --option=hashsize=4096
echo "Update ipset avec DROP list"
firewall-cmd --permanent --ipset=$SPAM --add-entries-from-file=$DROP_ADD_TO_UFW
echo "Update firewalld avec DROP rule"
firewall-cmd --permanent --add-rich-rule='rule source ipset=spamhausdrop log prefix="spamhaus" level="debug" limit value="1/h" drop'
#
# DROPv6
#
echo " "
echo "Telechargement liste DROPv6 et extraction IP"
wget -q -O - "$URLv6" > $SPAMHAUS_DROPv6
grep -v '^;' $SPAMHAUS_DROPv6 | cut -d ' ' -f 1 > $DROPv6_ADD_TO_UFW
echo " "
echo "Creation ipset DROPv6"
firewall-cmd --permanent --new-ipset=$SPAMv6 --type=hash:net --option=family=inet6 --option=hashsize=4096
echo "Update ipset avec DROPv6 list"
firewall-cmd --permanent --ipset=$SPAMv6 --add-entries-from-file=$DROPv6_ADD_TO_UFW
echo "Update firewalld avec DROPv6 rule"
firewall-cmd --permanent --add-rich-rule='rule source ipset=spamhausdropv6 log prefix="spamhausv6" level="debug" limit value="1/h" drop'
#
# eDROP
#
echo " "
echo "Telechargement liste eDROP et extraction IP"
wget -q -O - "$eURL" > $SPAMHAUS_eDROP
grep -v '^;' $SPAMHAUS_eDROP | cut -d ' ' -f 1 > $eDROP_ADD_TO_UFW
echo " "
echo "Creation ipset eDROP"
firewall-cmd --permanent --new-ipset=$SPAME --type=hash:net --option=family=inet --option=hashsize=4096
echo "Update ipset avec eDROP list"
firewall-cmd --permanent --ipset=$SPAME --add-entries-from-file=$eDROP_ADD_TO_UFW
echo "Update firewalld avec eDROP rule"
firewall-cmd --permanent --add-rich-rule='rule source ipset=spamhausedrop log prefix="spamEhaus" level="debug" limit value="1/h" drop'
#
#make new list active in memory
#
echo " "
echo "reload firewall"
firewall-cmd --reload
echo " "
echo Fin: $(date)
#
# Controls
#
systemctl status firewalld
echo " "
echo "spamhausDrop size"
/usr/sbin/ipset list spamhausdrop | wc -l
echo "spamhausDropv6 size"
/usr/sbin/ipset list spamhausdropv6 | wc -l
echo "spamhauseDrop size"
/usr/sbin/ipset list spamhausedrop | wc -l
echo "cinsdrop size"
/usr/sbin/ipset list cinsdrop | wc -l
echo " "

Re : Blocage des vilains IP

Répondre #1
Bonjour,

Tu as parfaitement raison. :)

Merci pour le partage.

 

Re : Blocage des vilains IP

Répondre #2
Bonjour,

Je déterre ce sujet car j'ai le même soucis, près de 2000 tentatives / jour.
La solution est de mettre en place fail2ban qui génère automatiquement des règles de blocage sur les IP dans iptables et via des mots clés dans les logs et des règles que l'on peut faire soi même, et qui peut même envoyer des mails à abuse pour les très vilains.