Bloquer une plage IP
Il peut arriver qu’une ou plusieurs machines d’une plage IP spamme nos services, cela provoque de nombreuses erreurs et éventuellement des baisses de performances. Cela peut avoir plusieurs origines (crawleur mal configuré, recherche de vulnérabilité, attaque, …). Il peut être intéressant dans ce cas de rechercher l’adresse IP (ou les adresses IP) concernée puis la bloquer directement sur les hyperviseurs pour éviter le spam.
Rechercher l'IP concernée
Il y a traefik, notre reverse proxy, entre le réseau et nos services. Les logs des services ne montrent donc pas les adresses IP réelles des connexions. Il faut passer par les logs de traefik afin de voir les adresses IP qui se connectent beaucoup à nos services.
On peut utiliser une commande comme docker logs traefik | grep -v "^192\.168\." | tr ":[" " " | cut -d" " -f1,5 | sort | uniq -c | sort -n
pour voir les connexions par jour et par IP. Cette commande est évidemment à adapter si on veut chercher les connexions par service par exemple.
Il faut faire attention, certaines IP comme celles de l’UTC se connectent beaucoup mais ces connexions sont le plus souvent légitimes. Un petit coup de whois X.X.X.X
pour obtenir plus d’informations sur l’IP peut être intéressant. De plus on peut consulter https://www.abuseipdb.com pour savoir si d’autres se sont plaint de cette IP.
Bloquer l'IP (ou la plage)
On peut alors utiliser iptables
pour bloquer le routage des paquets venant de cette IP vers les machines virtuelles :
- snippet.bash
sudo iptables -I FORWARD -s X.X.X.X -j DROP
Ici, -I
permet d’insérer la règle de blocage au début de la liste afin qu’elle soit prioritaire sur les autres, FORWARD
indique qu’il faut appliquer cette règle aux règles de redirection, -s X.X.X.X
indique que cette règle concerne les paquets provenant de l’adresse IP X.X.X.X
, enfin -j DROP
indique que le comportement à avoir est de bloquer les paquets.
Éventuellement, si plusieurs IP d’une même page sont concernées, on peut bloquer la plage entière :
- snippet.bash
sudo iptables -I FORWARD -s X.X.X.X/24 -j DROP
Cela n’est pas persistant, le blocage disparaîtra au redémarrage de l’hyperviseur, il faudra donc recommencer l’opération si le spam apparaît à nouveau.