Maxy.fr

Fail2ban : Gérer les tentatives de connexions à votre serveur

Fail2ban est un outil de sécurité indispensable sur un serveur dédié, il permet en analysant les fichiers logs de détecter les tentatives de connexions suspect et de bannir automatiquement les IPs en question pendant un certain temps au bout d'un certain nombre de tentatives (réglable depuis son fichier de configuration).

Le problème est que par défaut, Fail2ban banni une IP au bout de 3 tentatives de connexions infructueuse puis la dé-bannie après 15 minutes. On remarque donc très vite que les plus acharnés (et il y en a beaucoup) continue à essayer d'accéder au serveur après avoir été dé-banni.

Il convient donc de surveiller régulièrement les logs de Fail2ban pour ainsi vérifier les IPs faisant le plus de tentatives et les bannir définitivement.

Vérifier les logs :

Le fichier log en question se trouve dans le répertoire /var/log/ et se nomme fail2ban.log. Si vous l'ouvrez vous obtiendrez un résultat semblable à celui-ci :

2014-05-13 12:56:51,313 fail2ban.actions: WARNING [ssh] Unban 194.85.*.*
2014-05-13 13:03:42,798 fail2ban.actions: WARNING [ssh] Ban 194.85.*.*
2014-05-13 13:07:42,086 fail2ban.actions: WARNING [ssh] Ban 192.227.*.*
2014-05-13 13:13:43,520 fail2ban.actions: WARNING [ssh] Unban 194.85.*.*
2014-05-13 13:16:33,730 fail2ban.actions: WARNING [ssh] Ban 87.106.*.*
2014-05-13 13:17:42,826 fail2ban.actions: WARNING [ssh] Unban 192.227.*.*
2014-05-13 13:20:33,034 fail2ban.actions: WARNING [ssh] Ban 194.85.*.*
2014-05-13 13:26:34,553 fail2ban.actions: WARNING [ssh] Unban 87.106.*.*
2014-05-13 13:29:10,746 fail2ban.actions: WARNING [ssh] Ban 192.227.*.*
2014-05-13 13:30:33,857 fail2ban.actions: WARNING [ssh] Unban 194.85.*.*
2014-05-13 13:37:26,344 fail2ban.actions: WARNING [ssh] Ban 194.85.*.*
2014-05-13 13:39:11,476 fail2ban.actions: WARNING [ssh] Unban 192.227.*.*
2014-05-13 13:47:27,035 fail2ban.actions: WARNING [ssh] Unban 194.85.*.*
2014-05-13 13:50:21,240 fail2ban.actions: WARNING [ssh] Ban 192.227.*.*
2014-05-13 13:54:16,512 fail2ban.actions: WARNING [ssh] Ban 194.85.*.*
2014-05-13 14:00:21,929 fail2ban.actions: WARNING [ssh] Unban 192.227.*.*
2014-05-13 14:04:17,209 fail2ban.actions: WARNING [ssh] Unban 194.85.*.*

La liste des actions de ban et de deban y sont listées.

Ce que l'on souhaite, c'est extraire les IPs ayant été le plus de fois bannit. Mais pour cela on ne va pas compter à la main les IPs du fichier, mais utiliser une petite commande bien utile.

Afficher et trier la liste des IPs suivant le nombre de ban :

Une fois connecté en SSH, voici la commande permettant d'extraire facilement les IPs voulues :

cat /var/log/fail2ban.log|grep Ban|awk '{print $5" "$7}'|sort|uniq -c|sort -nr

Cette commande utilise :

  • "grep Ban" pour lire uniquement les lignes concernant le bannissement d'une IP.
  • "awk '{print $5" "$7}'" pour afficher uniquement la partie 5 (le type de connexion) et la partie 7 (l'ip) de chacune des lignes.
  • "sort" une première fois pour rassembler toutes les IPs identiquent.
  • "uniq -c" pour réunir les IPs et afficher le nombre de fois qu'elles apparaissent.
  • "sort -nr" pour trier dans l'ordre décroissant la liste.

Vous obtenez donc un condensé de votre fichier log, beaucoup plus explicite :

168 [ssh] 194.85.*.*
82  [ssh] 192.227.*.*
24  [ssh] 178.208.*.*
2   [ssh] 87.106.*.*
1   [ssh] 66.219.*.*
1   [ssh] 58.83.*.*
1   [ssh] 1.93.*.*
1   [ssh] 122.154.*.*
1   [dovecot-pop3imap] 84.242.*.*
1   [dovecot-pop3imap] 188.40.*.*
1   [dovecot-pop3imap] 162.243.*.*

Pour finir, il ne nous reste plus qu'à bannir définitivement les IPs récalcitrantes.

Bannir définitivement une IP :

Pour bannir définitivement une adresse IP et l'empêcher de tout éventuel accès à votre serveur, voici la commande à utiliser :

iptables -A INPUT -p tcp --source *.*.*.* -j DROP

Faites attention tout de même à ne pas vous bannir vous même, ce serait plutôt embêtant. Je vous conseil de faire un Whois des adresses IP en question avant de les bannir, ne serait-ce que pour voir leurs pays de provenance...

Le port utilisé par SSH :

Un autre point important, SSH utilise par défaut le port 22, et ça les personnes souhaitant essayez de se connecter à votre serveur le savent. Il convient donc pour accroîte le niveau de sécurité de modifier ce port par défaut.

Pour cela rien de plus simple, il suffit d'éditer le fichier de configuration SSH. Pour un serveur Debian, exécutez la commande suivante :

sudo nano /etc/ssh/sshd_config

Modifier ensuite la valeur de "Port" par celui de votre choix.

Vous savez maintenant ce qu'il vous reste à faire. La sécurité d'un serveur est importante, restez donc vigilant et surveillez régulièrement les IPs essayant d'y accéder.

Catégories : Linux

Par Guillaume le 13/05/2014 à 15:06

Partager l'article :

Articles similaires

Démarrer automatiquement Node.JS au démarrage de son serveur

Si vous avez déjà fait des programmes en utilisant Node.JS, vous êtes surement déjà tombé sur ce problème : Les scripts Node.JS ne se relance pas automatiquement lorsque l'on redémarre son serveur. Il faut donc s'y connecter manuellement pour...

Comment configurer une IPFailOver sur Debian et ISPConfig 3

Si vous avez un serveur Debian avec ISPConfig 3 d'installé, voici comment configurer une ou plusieurs IPFailOver. Configuration de Debian Il vous faudra dans un premier temps configurer Debian pour ajouter votre nouvelle IP. Connectez-vous à votre serveur et éditez le...

Raspberry Pi : Programmer un redémarrage automatique régulier

Il peut arriver que vous ayez besoin de faire en sorte que votre Raspberry Pi redémarre automatiquement régulièrement, par exemple une fois par jour à minuit. Pour cela nous allons utiliser un programme Unix nommé "Cron" permettant l'exécution automatique de...