Denyhosts: dé-blacklister une adresse IP valide
J’ai déjà parlé de denyhosts et de tous le bien que j’en pensais (dans l’article filtrer-les-connexions-ssh) mais il arrive parfois qu’une adresse IP valide et ne devant pas être bloquée se retrouve blacklistée1. Du coup, l’adresse se retrouve systématiquement listée dans le fichier /etc/hosts.deny, ce qui fait qu’il est impossible de se connecter sur le serveur depuis ce site. Ce qui est catastrophique quand on a interdit toute connexion, SAUF depuis cette IP fixe…qui vient de se faire blacklister!.
Tout d’abord, lorsque vous mettez denyhosts en place sur un serveur, si vous avez une IP fixe depuis le site d’accès, pensez à vous autoriser en permanence afin de ne pas vous trouver renfermé dehors. Pour ce faire, il suffit d’ajouter la ligne suivante au fichier /etc/hosts.allow, en remplaçant les XXX par votre adresse IP fixe2:
ALL: XXX.XXX.XXX.XXX
Si vous êtes déjà enfermé dehors et que vous n’avez pas physiquement accès au serveur, il vous faut absolument changer d’adresse IP. Rebootez votre modem, ou allez chez un ami, un cybercafé ou au McDonald pour vous connecter au serveur et corriger le problème. Pensez ensuite à changer tous les mots de passe utilisés dès que vous rentrez chez vous.
Si vous avez blindé les accès au serveur et que vous n’arrivez pas à entrer, il va vous falloir être inventif. Dites vous que c’est comme ça qu’on apprend le métier et à être prudent3 . J’ai bien fait 1000 km AR en voiture juste pour re-démarrer un serveur qui avait pris un « halt » dans la mauvaise console, ce qui ne m’est plus jamais arrivé…
Mais si vous avez réussi à rentrer sur votre serveur, vous avez fait le plus gros:
- Arrêtez denyhosts (/etc/init.d/denyhosts stop)
- Supprimez l’entrée du fichier /etc/hosts.deny correspondant à votre IP
- Profitez en pour ajouter votre IP au fichier /etc/hosts.allow comme indiqué plus haut
- Allez dans le dossier /var/lib/denyhosts4. Vous devriez y trouver des fichiers comme ci dessous. Supprimez de ces fichiers toute occurrence à l’adresse IP concernée en supprimant complètement les lignes. la commande rgrep « xxx.xxx.xxx.xxx » /var/lib/denyhosts/ vous dira dans quels fichiers vous devez agir.
- Relancez ensuite denyhosts (/etc/init.d/denyhosts start)
- Envoyez moi une petite bénédiction
- Rentrez chez vous et allez vous coucher5
Liste des fichiers du dossier /var/lib/denyhosts:
112253 -rw-r--r-- 1 root root 140K 2010-12-08 22:26 hosts 112142 -rw-r--r-- 1 root root 140K 2010-12-08 22:26 hosts-restricted 112251 -rw-r--r-- 1 root root 140K 2010-12-08 22:26 hosts-root 112146 -rw-r--r-- 1 root root 140K 2010-12-08 22:26 hosts-valid 112148 -rw-r--r-- 1 root root 108 2010-12-08 22:26 offset 113817 -rw-rw-rw- 1 root root 27K 2010-12-08 11:42 purge-history 112147 -rw-r--r-- 1 root root 0 2010-12-08 22:26 suspicious-logins 112143 -rw-r--r-- 1 root root 109 2010-12-08 22:26 users-hosts 112145 -rw-r--r-- 1 root root 14K 2010-12-08 22:26 users-invalid 112144 -rw-r--r-- 1 root root 118 2010-12-08 22:26 users-valid
Vérifiez quand même que l’IP n’est pas bloquée pour de bonnes raisons. Ça m’est arrivé dernièrement à cause de mauvais droits sur le home de l’utilisateur, donc le serveur SSH m’envoyait systématiquement bouler. Par conséquent, au bout d’un certain nombre d’essais échoués, denyhosts a considéré que j’étais illégitime et a blacklisté l’IP.
Je confirme avoir cherché un moment6.
Notes:- parce qu’on a fait des essais, qu’on a oublié le mot de passe ou fait une erreur dans le port à utiliser…Et c’est du vécu.
- si votre IP est variable, ça ne sert strictement à rien.
- Il existe deux types d’administrateurs : Ceux qui ont fait une très grosse connerie en tant que root et ceux qui vont en faire une…
- sur Ubuntu. Dans le cas d’autres distributions, cela peut varier. Il semblerais que sur certaines versions ce soit dans/usr/share/denyhosts/data/
- c’est en général parce qu’on est fatigué qu’on fait ce type de bêtise.
- que de souvenirs passionnant et haletants j’aurais à conter à mes petits enfants…!