Installer fail2ban sous CentOS 7.3

  • -

Installer fail2ban sous CentOS 7.3

Category:Linux,Sécurité,Surveillance Tags : 

But

Mettre en quarantaine les tentatives d’accès et les signaler par courriel en utilisant une passerelle GMAIL. Fail2ban est un script qui lit le journal /var/log/secure et bannit les adresses IP dans le firewall en suivant certains critères.

Note

L’auteur fournit la procédure de l’installation de fail2ban tel quel et ne prend aucune responsabilité sur son bon fonctionnement. fail2ban est une contre-mesure aux attaques courantes, mais n’est qu’un élément sécuritaire parmi d’autres.

Installer fail2ban

Fail2ban n’est pas disponible dans le repository officiel de CentOS, il faut ajouter celui du projet EPEL.

sudo yum install -y epel-release

Installer maintenant le package fail2ban

sudo yum install -y fail2ban

Activer le service

sudo systemctl enable fail2ban

Configure Local Settings

Les fichiers de configuration se trouvent dans /etc/fail2ban. Le fichier de configuration par défaut est jail.conf, qui peut être modifié en tout temps par des nouvelles versions de package. Il ne faut en aucun cas l’éditer, mais en faire une copie jail.local qui contiendra les paramètres que nous souhaitons écraser.

Ce fichier contient une section [DEFAULT], suivies par des sections individuelles. Ce fichier peut être à la limite vide si l’on se contente des paramètres par défaut, mais sera populé au besoin des modifications souhaitées.

Les paramètres sont appliqués dans l’ordre des fichiers suivants :

  1. /etc/fail2ban/jail.conf
  2. /etc/fail2ban/jail.d/*.conf, alphabetically
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local, alphabetically

Chaque fichier peut contenir une section [DEFAULT] exécutée en premier, ainsi que d’autres sections pour les prisons individuelles.

Par défaut tous les jails sont désactivés dans le jail.conf et il faut les créer dans le fichier jail.local.

Créons notre premier fichier

sudo nano /etc/fail2ban/jail.local

Créer les éléments suivants :

[DEFAULT]
#BAN HOSTS FOR 2 heures
# maxretry = 4 bloque l’adresse IP fans le firewall après 4 tentatives
bantime = 7200
#OVERRIDE
banaction = iptables-multiport
[sshd]
enabled = true
maxretry = 4
[sshd-ddos]
enabled = true
maxretry = 4
[php-url-fopen]
enabled = true
maxretry = 4
[apache-auth]
enabled = true
maxretry = 4
[apache-badbots]
enabled = true
maxretry = 4
[apache-overflows]
enabled = true
maxretry = 4

Redémarrer fail2ban

sudo systemctl restart fail2ban

La commande doit se terminer sans erreurs. Nous pouvons le statut de fail2ban en invoquant son statut :

systemctl status fail2ban

Nous pouvons le statut de fail2ban en invoquant son client :

sudo fail2ban-client status

Nous pouvons avoir des informations concernant une prison particulière :

sudo fail2ban-client status sshd

Il est possible de checker le journal de fail2ban depuis son dernier démarrage

sudo journalctl -b -u fail2ban

Il est aussi possible de checker directement le journal de fail2ban

sudo tail –f –n 2000 /var/log/fail2ban.log

Ou de contrôler les rôles courants définis par fail2ban dans iptables:

sudo iptables -L

Ou de lister les entrées sous la forme des commandes employées dans iptables.

sudo iptables -S

Ou encore de voire toutes les adresses IP bannies par fail2ban

sudo iptables -L -n

Lorsqu’on est certain que fail2ban fonctionne correctement, on peut l’ajouter en démarrage automatique et redémarrer le serveur pour tester.

systemctl enable fail2ban

Envoyer des emails d’alertes

Attention: Il faut compter environ une dizaine de tentative par heure sur le port SSH pour un serveur qui vient d’être activé sur Internet.

Toutefois il y’a un prérequis pour envoyer des courriels, c’est d’installer un MTA. Inutile d’installer Postfix ou Sendmail, des produits qui risquent de vous ouvrir à de nouvelles vulnérabilités, il faut juste pouvoir envoyer des messages en ligne de commande, et surtout passer par un gateway authentifié sur GMAIL pour que vos messages ne soient pas rejetés par le système de messagerie du destinataire.

Installer Heirloom mailx

yum install -y mailx

Créer un lien symbolique sur email

ln -s /bin/mailx /bin/email

Configurer mail.rc

nano /etc/mail.rc

#Use TLS
set smtp-use-starttls
# Ignore SSL
set ssl-verify=ignore
set nss-config-dir=set nss-config-dir=/root/.certs
# set smtp=smtp://smtp.server.tld:port_number
set smtp=smtp://smtp.gmail.com:587
# tell mailx that it needs to authorise
set smtp-auth=login
# set the user for SMTP
# set smtp-auth-user=user@domain.tld
set smtp-auth-user=votreuser@gmail.com
# set the password for authorisation
set smtp-auth-password=votremotdepasseducomptegmail

Importer les certificats nécessaires à l’implémentation TLS avec GMAIL

Créer un dossier pour les certificats

mkdir ~/.certs

Créer une nouvelle base de données (Ne pas oubleir d’y rentrer et noter votre mot de passe)

certutil -N -d ~/.certs

Créer 3 fichiers pour stocker les chaines de certificats

touch ~/.certs/google ~/.certs/geotrust ~/.certs/equifax

Copier la chaine de certificats pour smtp.google.com:465 dans le fichier my_certs. (Utiliser l’option -showcerts, et terminer par CTRL + C)

openssl s_client -showcerts -connect smtp.gmail.com:465 > ~/.certs/my_certs

Maintenant copier chaque certificat en incluant

–BEGIN CERTIFICATE—

Jusqu’à

–END CERTIFICATE—

Et les coller dans les fichiers respectifs créés auparavant (google, geotrust, equifax), puis les sauvegarder.

Ouvrir le fichier my_certs créé précédemment et copier le certificat Google (En général le premier)

nano ~/.certs/my_certs

Ouvrir le fichier google, et y coller le certificat. Sauvegarder et fermer.

nano ~/.certs/google

Ouvrir le fichier my_certs créé précédemment et copier le certificat geotrust (En général le second)

nano ~/.certs/my_certs

Ouvrir le fichier geotrust, y coller le certificat geotrust. Sauvegarder et fermer

nano ~/.certs/geotrust

Ouvrir le fichier my_certs créé précédemment et copier le certificat equifax (En général le troisième)

nano ~/.certs/my_certs

Ouvrir le fichier equifax, y coller le certificat equifax. Sauvegarder et fermer

nano ~/.certs/equifax

Importer chaque certificat dans la DB

Importer le certificat Google dans la DB :

certutil -A -n "Google Internet Authority" -t "TC,," -d ~/.certs -i ~/.certs/google

Importer le certificat geotrust dans la DB :

certutil -A -n "GeoTrust Global CA" -t "TC,," -d ~/.certs -i ~/.certs/geotrust

Importer le certificat equifax dans la DB :

certutil -A -n "Equifax Secure Certificate Authority" -t "TCP,," -d ~/.certs -i ~/.certs/equifax

Contrôler que l’opération été effectuée correctement :

certutil -L -d ~/.certs

Sortie d’exemple :

Certificate Nickname                                         Trust Attributes
SSL,S/MIME,JAR/XPI
Google Internet Authority                                  CT,,
GeoTrust Global CA                                           CT,,
Equifax Secure Certificate Authority                         CT,,

Tester l’envoi de message

Tapez la ligne pour envoyer un message

echo "Votre message" | mail -s "Sujet" email@votrechoix

Configurer fail2ban pour envoyer des alertes par email

Pour utiliser mailx, la première chose à faire est de dupliquer le fichier mail.conf en mail-whois.conf

cp /etc/fail2ban/action.d/mail.conf /etc/fail2ban/action.d/ mail-whois.conf

Editer à nouveau le fichier précédent /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

Dans la section [DEFAULT] du fichier local, il faut rajouter les paramètres de configuration qui vont écraser ceux du fichier de base :

[DEFAULT]
destemail = mail@votrechoix
mta = mail
sender = votrecompte@gmail.com
sendername = votrenom
action = %(action_mw)s

Redémarrer fail2ban

sudo systemctl restart fail2ban

Vous devriez commencer à recevoir vos emails

Maria Perez