Retour à la liste des tutoriels
Un pare-feu (iptables) est installé sur votre serveur. Fail2ban va permettre d'ajouter des règles de filtrage visant à filtrer les hôtes indésirables.
Je ne vais pas m'attarder sur la parade des attaques Apache / web, mais sur les tentatives de connexion en ssh (port 22).
Rappel : le ssh permet d'ouvrir une console de gestion du serveur à distance.
SSH enregistre toutes les tentatives de connexion (réussies ou non) dans le fichier journal /var/log/auth.log .
Exemple : connexion échouée
Jun 26 05:56:31 vm sshd[30103]: Invalid user Aurdaneta from 200.69.248.161 Jun 26 05:56:31 vm sshd[30103]: pam_unix(sshd:auth): check pass; user unknown Jun 26 05:56:31 vm sshd[30103]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=h248-161.decidir.net Jun 26 05:56:32 vm sshd[30103]: Failed password for invalid user Aurdaneta from 200.69.248.161 port 52101 ssh2
Exemple : connexion réussie
Jun 26 02:00:16 vm sshd[29793]: Accepted password for user-web from 88.191.122.115 port 1986 ssh2 Jun 26 02:00:16 vm sshd[29793]: pam_unix(sshd:session): session opened for user user-ssh by (uid=0)
Fail2ban sera un daemon sur le serveur, c'est à dire qu'il sera exécuté en permanence, et lira les logs indiqués afin de les analyser et prendre les mesures requises en cas d'abus / tentative de hack de la part d'une personne.
Fail2ban est capable d'analyser différents types de logs (SSH, web, FTP, …). Toutefois attention aux ressources consommées par un processus tournant en permanence et analysant des logs !
apt-get install fail2ban
Toute la configuration de fail2ban s'effectue dans le fichier /etc/fail2ban/jail.conf .
Liste des ip à ignorer dans le scan des logs.
Par défaut 127.0.0.1 .
Durée du ban, en secondes. Par défaut 600.
Cette valeur peut-être laissée telle qu'elle (une attaque bruteforce automatisée s'arrêtera immédiatement s'il ne reçoit plus de réponses de la part du serveur).
Fail2ban peut prévenir par mail à chaque ip bannie / débannie.
Nombre de tentatives maximales au bout duquel l'adresse IP est bloquée.
Cette valeur peut-être redéfinie dans chaque module de type de logs.
Voici la partie dans laquelle j'indique de vérifier les connexions SSH.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
Le module SSH de fail2ban est activé.
La valeur de maxretry peut-être minorée à 3 ou 4 (nombre maximal de tentatives échouées avant ban)
Il faut recharger la configuration de fail2ban :
service fail2ban reload
iptables -L
fail2ban est apparu dans la liste !
tail /var/log/fail2ban.log
iptables -D fail2ban-ssh -s @IP -j DROP
Où @IP est l'adresse IP à débloquer.