DenyHosts pour empêcher le bruteforce sur SSH
Ras le bol de voir des tentatives de connexion sur votre SSH ? Il existe plusieurs logiciel pour vous en prémunir avec en tête de liste le célèbre Fail2ban qui permet de protéger SSH ainsi que la plupart des autres serveurs logguant l’authentification. Mais alors pourquoi choisir DenyHosts ? DenyHosts se limite à la protection SSH mais sa force provient de deux fonctionnalités : utiliser un système de synchronisation entre plusieurs DenyHosts ( je ne l’aborde pas ), mais également le partage des IP incriminées. Afin de récupérer des IP à blacklister et de d’offrir les siennes afin de se fabriquer une blacklist évolutive.
Un attaquant vera son adresse IP inscrite dans le fichier /etc/hosts.deny l’empêchant de se logguer.
Installation
Gentoo
Debian et dérivés
Red Hat et consorts
Configuration
/etc/denyhosts
SECURE_LOG = /var/log/auth.log
#Doit pointer vers votre fichier de blacklist
HOSTS_DENY = /etc/hosts.deny
BLOCK_SERVICE = sshd
#Nombre d'essai avant d'être bloqué pour une connexion non root
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 5
#Nombre d'essai avant d'être bloqué pour une connexion en temps que root
DENY_THRESHOLD_ROOT = 3
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/run/denyhosts.pid
#Vers quelle adresse email signaler une attaque infructueuse
ADMIN_EMAIL = votre@mail
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <denyhosts@localhost>
SMTP_SUBJECT = DenyHosts Report
SYSLOG_REPORT=YES
#temps avant la remise à zéro du compteur
AGE_RESET_VALID=5d
AGE_RESET_ROOT=10d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
RESET_ON_SUCCESS = yes
DAEMON_LOG = /var/log/denyhosts
DAEMON_LOG_TIME_FORMAT = %b %d %H:%M:%S
DAEMON_LOG_MESSAGE_FORMAT = %(asctime)s - %(name)-12s: %(levelname)-8s %(message)s
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h
#Ces dernières lignes permettent d'utiliser le partage d'IP. On peut se limiter au partage montant ou descendant
#C'est purement facultatif mais je vous le recommande.
SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
SYNC_UPLOAD = yes
SYNC_DOWNLOAD = yes
Puis pour le lancer :
Sous Gentoo pour le lancer automatiquement au boot vous devez l’ajouter à votre « rc par défaut » :
Logs
Allons faire un tour dans les logs de DenyHosts pour voir à quoi s’attendre.
Exemple de synchro où l’on récupère des IP à blacklister :
Ajout d’un attaquant + upload au serveur central :
Feb 21 09:43:01 - sync : INFO sent 1 new host
Reset du compteur en cas de login réussi :
Liens
Site officiel
Statistiques mondiales de DenyHosts