DenyHosts est un outil de sécurité de prévention des intrusions basé sur les journaux pour les serveurs SSH écrit en Python. Il est conçu pour empêcher les attaques par force brute sur les serveurs SSH en surveillant les tentatives de connexion invalides dans le journal d'authentification et en bloquant les adresses IP d'origine à l'aide de /etc/hosts.deny et sbin/iptables sur le serveur Linux. Dans ce didacticiel, vous apprendrez à installer DenyHosts, un programme python qui bloque automatiquement les attaques ssh en ajoutant des entrées au fichier /etc/hosts.deny.
Le tutoriel est testé sur l'installation du serveur Ubuntu 17.04.
1. Commençons par installer le logiciel :
$ sudo apt-get install denyhosts
Code language: JavaScript (javascript)
2. Ajoutez vos adresses à hosts.allow pour vous assurer qu'elles ne sont pas bloquées.
sudo pico /etc/hosts.allow
Exemple d'ajout de plusieurs adresses :
sshd: 212.22.112.113 , 10.20.133.3 , 192.168.0.1 , 127.0.0.1
Code language: CSS (css)
3. Configurons maintenant le fichier de configuration denyhosts :
$ sudo pico /etc/denyhosts.conf
Make sure SECURE_LOG set as follows:
SECURE_LOG = /var/log/auth.log
HOSTS_DENY set as follows:
HOSTS_DENY = /etc/hosts.deny
Block only sshd:
BLOCK_SERVICE = sshd
Deny threshold limit for login attempts:
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
Block incoming connections using the Linux firewall IPTABLES:
IPTABLES = /sbin/iptables
Code language: PHP (php)
4. ACTIVER le service DenyHosts :
$ sudo systemctl enable denyhosts.service
Vous verrez quelque chose comme ceci :
Synchronisation de l'état de denyhosts.service avec SysV init avec /lib/systemd/systemd-sysv-install…Exécution de /lib/systemd/systemd-sysv-install enable denyhosts
5. Redémarrez le service DenyHosts :
sudo /etc/init.d/denyhosts restart
6. Quelques commandes pour vérifier si tout fonctionne et pour lister les adresses ajoutées à la liste noire :
$ sudo grep 'something' /var/log/denyhosts
$ sudo tail -f /var/log/denyhosts
$ sudo cat /etc/hosts.deny
sudo iptables -L INPUT -n -v | grep DROP
Code language: JavaScript (javascript)
Attention:
Veuillez noter que DenyHosts est limité aux connexions utilisant IPv4. Il ne fonctionne pas avec l'adresse IP basée sur IPv6. Une autre option consiste à utiliser la commande iptables pour voir l'adresse IP bloquée :
Activer la prise en charge de la synchronisation centralisée ?
La version 2.0 et supérieure de DenyHosts prend en charge la synchronisation centralisée, de sorte que les récidivistes sont bloqués sur de nombreux ordinateurs. Le site xmlrpc.denyhosts.net rassemble les statistiques des ordinateurs exécutant le logiciel. Synchronisation désactivée par défaut. Pour activer la synchronisation, saisissez :
$ sudo pico /etc/denyhosts.conf
Ajoutez ensuite :
SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
Code language: JavaScript (javascript)
Et redémarrez :
$ sudo /etc/init.d/denyhosts restart