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

emerge denyhosts

Debian et dérivés

aptitude install denyhosts

Red Hat et consorts

yum install denyhosts

Configuration

/etc/denyhosts

#Doit pointer vers votre fichier logguant les tentatives de connexions
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 :

/et/init.d/denyhosts start

Sous Gentoo pour le lancer automatiquement au boot vous devez l’ajouter à votre « rc par défaut » :

rc-update add denyhosts default

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 :

Feb 20 04:42:43 - denyhosts   : INFO     received new hosts: ['217.10.117.161', '194.185.200.156', '91.75.180.114', '202.141.132.50', '60.248.91.64', '211.100.42.83', '202.165.    177.203', '211.155.227.171', '58.221.34.18', '88.191.15.133', '210.51.36.162', '220.165.28.66', '91.205.74.41', '61.178.74.43', '202.117.54.134', '74.127.18.195', '195.250.39.6    6', '216.229.160.194', '122.70.147.103', '200.195.168.194', '202.44.11.60', '94.190.187.113', '213.5.64.164', '201.116.98.210', '163.13.175.44', '119.149.189.199', '93.152.156.    13', '125.7.209.4', '210.51.48.71', '88.117.234.162', '217.97.185.35', '217.20.183.73', '117.41.228.195', '201.20.186.222', '79.39.6.98', '221.165.162.4', '211.72.171.76', '209    .255.67.10', '80.203.122.116', '12.152.124.2', '70.169.201.74', '202.5.95.205', '217.219.67.131', '65.98.97.98', '218.241.155.144', '80.14.186.105', '96.31.68.39', '218.108.247    .138', '61.138.217.19', '82.230.95.10']

Ajout d’un attaquant + upload au serveur central :

Feb 21 09:25:31 - denyhosts   : INFO     new denied hosts: ['81.7.171.15']
Feb 21 09:43:01 - sync        : INFO     sent 1 new host

Reset du compteur en cas de login réussi :

Feb 21 11:35:03 - loginattempt: INFO     resetting count for: 10.0.0.3

Liens

Site officiel
Statistiques mondiales de DenyHosts

Si vous avez aimé ce post...

  1. SSH sans mot de passe
  2. Mise en place d’un système de backup avec Rsnapshot
  3. IPv6 pour les nuls^Wgeeks

Vus : 365
Publié par Geekfault : 45