Installer Fail2ban

Si vous être propriétaire d’un serveur quelconque connecté à Internet, vous n’êtes pas sans savoir qu’il est exposé à de nombreuses attaques. Parmi elles, le bruteforce. Cette attaque consiste à trouver votre mot de passe SSH en les essayant tous les uns à la suite des autres ou en utilisant des dictionnaires (ce sont des listes contenant les mots de passe les plus utilisés comme admin, 123456, etc…). Ces attaques sont généralement menées par des robots qui visent des dizaines de serveurs en même temps. Il se connectent sans cesse à votre serveur grâce à votre port SSH et essayent beaucoup de combinaisons de mot de passe jusqu’à trouver le bon (généralement, une tentative est menée toutes les 2 à 3 secondes).

Enfin, fois que les pirates ont accès à un serveur, ils peuvent par exemple s’en approprier pour exécuter d’autres attaques bruteforce contre d’autres serveurs, ou bien utiliser votre serveur pour spammer des gens (par mail, par exemple). De plus, le responsable, si il y a une plainte car des attaques ont été menées depuis votre serveur, c’est vous (à moins que vous ne démontriez que vous avez vous-même été victime d’attaque et que vous n’avez plus le contrôle sur votre serveur, d’où l’importance de conserver vos logs).

Il existe beaucoup de solutions, celle que je vais vous présenter aujourd’hui, c’est Fail2ban (d’autres méthodes seront proposés dans de futurs articles). Fail2ban est un programme qui analyse vos logs système afin de détecter les attaques bruteforce et ainsi bloquer l’adresse IP attaquante.

Taper la commande d'installation

apt-get install fail2ban

Des paquets suivants seront installés :

Les paquets supplémentaires suivants seront installés : 
  python-pyinotify whois
Paquets suggérés :
  python-gamin mailx python-pyinotify-doc
Les NOUVEAUX paquets suivants seront installés :
  fail2ban python-pyinotify whois
0 mis à jour, 3 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 258 ko dans les archives.
Après cette opération, 927 ko d'espace disque supplémentaires seront utilisés.
Sauvegarder la configuration originale
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ouvrons le fichier 'jail.local'
vim /etc/fail2ban/jail.local
ignoreip Les IPs qui seront spécifiées sur cette ligne ne seront par bloquées. Je vous conseille de laisser l’adresse actuelle (qui doit être 127.0.0.1/8), d’y ajouter un espace afin de la séparer et d’y mettre votre adresse (ainsi que celles de toutes les personnes qui sont susceptibles d’accéder à votre serveur sans pour autant l’attaquer)
ignoreip = 127.0.0.1/8 
bantime C’est le nombre de secondes qu’une adresse va être bloquée si elle attaque votre serveur. 10 minutes est très peu suffisant, un rapide calcul vous permet d’en être sûr. Admettons que vous êtes attaqué par 20 machines différentes, toutes à 1 mot de passe toutes les 2 secondes. Vous avez donc 10 tentatives par seconde. Si fail2ban bloque au bout de 6 tentatives par IP, 120 mots de passe sont essayés toutes les 10 minutes, soit 16 800 par jour. Donc, 10 minutes ne représentent pas grand chose face au nombre de machines qui vous attaquent. Personnellement, je bloque une journée entière (= 86 400).
bantime  = 86400
maxretry C'est le nombre de tentatives auxquelles a le droit un utilisateur avant de se faire bloquer.
maxretry = 6
destemail C'est l’adresse mail à laquelle seront envoyés les mails de notification (quand une adresse sera bloquée). Je vous conseille de créer une adresse rien que pour cet usage ou bien de laisser root@localhost et de consulter ces mails grâce à la commande mail.
destemail = _ _ _ _ _ _ @ _ _ _ _ . _ _
action Cette ligne active l’envoi simple de mails. Pour ajouter le Whois au contenu de votre message, remplacez-la par action = %(action_mw)s. Je trouve cette fonctionnalité très pratique car beaucoup de détails vous sont envoyés, comme le pays ou l’email d’abuse concernant l’IP qui a été bannie. Vous pouvez également décider d’envoyer les lignes des logs ou apparaissent l’IP correspondante : action = %(action_mwl)s.
action = %(action_mwl)s
Jails Ce bloc contient tout ce que fail2ban va surveiller. Vous remarquerez qu’il peut contrôler tout un tas de services, mais nous ne nous intéresserons qu’au SSH pour le moment. Assurez-vous qu’il est activé (paramètre enabled à true), puis renseignez le nombre de tentatives maximum (maxretry).
[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
Redémarrer le service
service fail2ban restart
  • informatique/isntaller_fail2ban.txt
  • Dernière modification: 2017/05/07 22:16
  • par Cedric ABONNEL