image de mise en avant de l'article Sécuriser un serveur Ubuntu 20.04 et bannir les IP avec iptables

Sécuriser un serveur Ubuntu 20.04 et bannir les IP avec iptables

Temps de lecture estimé: 2 minutes

Edit du 30/05/2022: pour bannir les IPs, cet article reste pertinent. Par contre, pour le problème spécifique de sniffeur sur le fichier /xmlrpc.php ou /admin.php, j'ai mis en place quelque chose de plus efficace: une règle spécifique de Ban pour fail2ban.
(et c'est ici pour l'installation et la configuration basique de fail2ban)

J’ai récemment décidé de regarder les logs d’accès sur mes différents domaines et sous-domaines hébergés sur mon serveur. J’ai récupéré tous les journaux qui étaient disponibles pour mes virtualhost apache (/var/log/apache2).

Je n’étais pas vraiment surpris de voir, entre les robots de Google, Bing et autres,  d’autres tentatives d’accès à des fichiers sensibles, existant ou non.

91.132.138.62 - - [15/May/2020:02:52:44 +0200] "GET /phpMyAdmin/ HTTP/1.1" 404 436 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.8 Safari/537.36"
91.132.138.62 - - [15/May/2020:02:52:48 +0200] "GET /pma/ HTTP/1.1" 404 436 "-" "Opera/9.80 (Windows NT 6.1; MRA 5.7 (build 03773)) Presto/2.12.388 Version/12.15"
184.162.45.52 - - [15/May/2020:04:22:12 +0200] "POST /cgi-bin/mainfunction.cgi HTTP/1.1" 404 432 "-" "XTC"
139.59.231.103 - - [15/May/2020:00:48:17 +0200] "POST /wp-login.php HTTP/1.1" 200 7791 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
139.59.231.103 - - [15/May/2020:00:48:19 +0200] "POST /xmlrpc.php HTTP/1.1" 200 3667 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"

J’ai constaté beaucoup de tentatives d’accès et des tentatives de login sur /wp-login.php et /xmlrpc.php.

Ces fichiers sont propres à une installation WordPress mais les robots ou personnes malveillantes derrières ces IP sniffent et tentent leur chance aussi sur les domaines que ne sont pas sous WordPress. Il y a aussi pas mal de tentatives d’accès à une interface qui permettrait aux attaquants d’avoir accès aux bases de données avec  /phpMyAdmin ou /pma.

Après avoir filtré toutes les demandes légitimes, il me restait une liste d’adresse IP à bannir. Après déduplication, j’ai un fichier avec 92 adresses IP (je te partage le fichier si ça t’intéresse, le formulaire est à la fin de l’article).

Maintenant que j’ai une liste, je vais pouvoir concrètement les bannir avec le firewall de base des systèmes Linux, iptables:

iptables -A INPUT -s IP_TO_BAN/32 -j DROP

Le problème c’est que iptables réinitialise toutes ses règles de filtrage à chaque redémarrage. Il faut donc un moyen d’appliquer les règles à chaque redémarrage. Pour ça j’installe un paquet pour la persistance des règles de firewall:

apt-get install iptables-persistent

À chaque redémarrage, le système va maintenant appliquer le fichier /etc/iptables/rules.v4  pour les règles ipv4 et /etc/iptables/rules.v6 pour les règles ipv6.

Donc après avoir saisi les règles une à une avec la commande ci-dessus, je peux ensuite exporter la table des règles du firewall dans le fichier /etc/iptables/rules.v4 en faisant:

iptables-save > /etc/iptables/rules.v4

À l’inverse, je peux aussi directement compléter le fichier /etc/iptables/rules.v4 en ajoutant mes règles avec un éditeur de texte:

Generated by iptables-save v1.8.4 on Tue May 12 14:52:32 2020
*filter
:INPUT ACCEPT [24728:23002973]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [24649:23082097]
-A INPUT -s 103.146.202.150/32 -j DROP
-A INPUT -s 103.147.10.222/32 -j DROP

COMMIT
Completed on Tue May 12 14:52:32 2020

Et ensuite appliquer les règles de ce fichier en exécutant:

iptables-restore < /etc/iptables/rules.v4

Voilà! petit à petit je vais y ajouter les IP un peu trop curieuses. N’hésite pas si tu as des conseils ou des questions à me laisser un commentaire.

Si tu souhaites recevoir mon fichier csv avec mes IP à bannir,  laisse moi ton email et je t’enverrai ça.

Partagez l'article:
FacebookTwitterEmailLinkedIn

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.