Outils pour utilisateurs

Outils du site


install:fail2ban

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 =
install/fail2ban.txt · Dernière modification : 2016/12/11 11:33 de linkuff