Table des matières
Installer Fail2ban
Vous ne le savez peut être pas mais une simple observation de votre fichier d'erreur et vous vous apercevrez que votre serveur subit de nombreuses attaques chaque jour… Le meilleur moyen de limiter les risques est donc de limiter les possibilités d'attaquer !
Fail2ban est là pour ça :) Il vérifiera toutes les connexions en ssh sur votre serveur. Si une personne essaye de se connecter plus de 3 fois, il sera simplement et purement banni (ahah !) pendant 10 minutes (temps paramétrable dans /etc/fail2ban/jail.conf)
- Récupération des mises à jour des paquets :
apt-get update
- Installation de fail2ban :
apt-get install fail2ban
Protection contre les attaques "brute force" SSH, Apache, FTP
Dans les dernières versions de fail2ban (celles incluses par défaut dans Ubuntu 16.04), il ne faut plus modifier le fichier jail.conf. Tout se passe dans /etc/fail2ban/jail.d/. Sur Ubuntu, et Debian j’imagine, il faudra ajouter les modifications dans le fichier defaults-debian.conf de ce même répertoire. Il est cependant possible que cela puisse varier en fonction des distributions. Il est expliqué dans jail.conf comment faire les modifications, à titre d’exemple, je vous donne une configuration minimaliste mais fonctionnelle de ce qui est sur un de mes serveurs. Le reste de l’article reste tout à fait valable, il suffit d’éditer defaults-debian.conf en lieu et place de jail.conf (lequel pourra être remplacé lors de mises à jour).
Ancienne version :
- Modification de la configuration pour bannir 1h (3600 secondes) après 3 erreurs :
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600 [apache] enabled = true port = http,https filter = apache-auth logpath = /var/www/*/logs/error.log maxretry = 6 [vsftpd] enabled = true port = ftp,ftp-data,ftps,ftps-data filter = vsftpd logpath = /var/log/vsftpd.log # or overwrite it in jails.local to be # logpath = /var/log/auth.log # if you want to rely on PAM failed login attempts # vsftpd's failregex should match both of those formats maxretry = 2
- Un fois le filtre activé en relançant Fail2Ban avec la commande (en root):
/etc/init.d/fail2ban restart
On peut rapidement voir son efficacité en regardant le fichier de log (par défaut sous /var/log/fail2ban.log
Filtres personnalisés
Il vous est possible de rajouter des filtre supplémentaire afin d'affiner quelque détail de sécurité.
Filtre Apache erreur 404
Le filtre [apache-404] banni l'IP de tous les utilisateurs qui font trop d'erreur 404. Les pirates aime bien rechercher des pages d'administration en modifiant l'URL. Mais ce filtre peut aussi bannir des utilisateurs arrivant sur des pages manquantes de votre site.
- Pour ajouter ce filtre il suffit de le rajouter dans le fichier /etc/fail2ban/jail.conf.
[apache-404] enabled = true port = http filter = apache-404 logpath = /var/log/apache*/error.log maxretry = 8
- Puis créer le fichier apache-404.conf dans /etc/fail2ban/filter.d/. Et copier collez ces lignes:
# Fail2Ban configuration file # # Author: Cédric OLIVIER # # [Definition] # Option: failregex # Notes.: regex to match the 404 failure messages in the logfile. The # host must be matched by a group named "host". The tag "" can # be used for standard IP/hostname matching and is only an alias for # (?:::f{4,6}:)?(?P[\w\-.^_]+) # Values: TEXT # failregex = [[]client []] (File does not exist|script not found or unable to stat): .* # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
Protéger PhpMyAdmin
Il est possible d'empêcher les bots de scanner la version de PhpMyAdmin qui est installer sur le serveur, dans le but d'empêcher l'utilisation de failles de sécurité connues.
- Pour ajouter ce filtre il suffit de le rajouter dans le fichier /etc/fail2ban/jail.conf.
[apache-phpmyadmin] enabled = true port = http,https filter = apache-phpmyadmin logpath = /var/log/apache*/error.log maxretry = 3
- Puis créer le fichier apache-phpmyadmin.conf dans /etc/fail2ban/filter.d/. Et copier collez ces lignes:
# Fail2Ban configuration file # # Bans bots scanning for non-existing phpMyAdmin installations on your webhost. # # Author: Gina Haeussge # [Definition] docroot = /var/www badadmin = PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2 # Option: failregex # Notes.: Regexp to match often probed and not available phpmyadmin paths. # Values: TEXT # failregex = [[]client []] File does not exist: %(docroot)s/(?:%(badadmin)s) # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
Protéger votre espace d'administration
Ce filtre permet de protéger l'espace d'administration de votre site.
- Pour ajouter ce filtre il suffit de le rajouter dans le fichier /etc/fail2ban/jail.conf.
[apache-admin] enabled = true port = http filter = apache-admin logpath = /var/log/apache*/error.log maxretry = 6
- Puis créer le fichier apache-admin.conf dans /etc/fail2ban/filter.d/. Et copier collez ces lignes:
# Fail2Ban configuration file # # Author: Cyril Jaquier # # $Revision: 471 $ # [Definition] # Option: failregex # Notes.: regex to match the password failure messages in the logfile. The # host must be matched by a group named "host". The tag "" can # be used for standard IP/hostname matching. # Values: TEXT # [client x.x.x.x] File does not exist: /home/www/admin/admin, failregex = [[]client []] File does not exist: .*admin|PMA|mysql # # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =