F.A.Q.

[Sécurité] Installer et configurer fail2ban
Questions diverses

Fail2 ban est un outil indispensable qui vous permettra de bannir tout individu tentant de scanner ou de brutforcer votre serveur.

A titre d'exemple, voici le statut d'un client fail2ban après 3h en ligne:

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 16
| |- Total failed: 1248
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 7
|- Total banned: 169
`- Banned IP list: xxxxx les IPs sont masquées dans le cadre de cette FAQ xxxxxxxxxxx


Installation :

prérequis : installer et configurer un Firewall (https://support.ni-host.com/faq/vps/ufw-firewalld)


(CentOS)
#sudo yum install -y epel-release fail2ban
(Debian)
#sudo apt-get install -y fail2ban
#sudo systemctl enable fail2ban --now
#sudo systemctl status fail2ban


créer un nouveau fichier de conf à partir du fichier original :

#sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/jail.conf


puis modifier ce fichier à votre convenance :

#sudo vi /etc/fail2ban/jail.d/jail.conf


2 points importants :
1) l'activation d'une "jail" se fait en ajoutant la mention "enabled = true"
2) Fail2ban est un parseur de logs. vérifiez que le logpath est correcte

voici un exemple (simplifié) pour SSH et un serveur apache.
Votre adresse IP est ignoré
la durée du ban est d'1h
Le nombre de retry est paramétrable

#sudo cat /etc/fail2ban/jail.d/jail.conf
[DEFAULT]
# Ban hosts for 1h:
bantime = 3600
ignoreip = Votre.adresse.IP

[sshd]
enabled = true

#
# HTTP servers
#

[apache-auth]
enabled = true
port = http,https
logpath = /var/log/httpd/error_log
maxretry = 1

[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
enabled = true
port = http,https
logpath = /var/log/httpd/error_log
bantime = 48h
maxretry = 1

[apache-noscript]
enabled = true
port = http,https
logpath = /var/log/httpd/error_log

[apache-overflows]
enabled = true
port = http,https
logpath = /var/log/httpd/error_log
maxretry = 1

[apache-nohome]
enabled = true
port = http,https
logpath = /var/log/httpd/error_log
maxretry = 1

[apache-botsearch]
enabled = true
port = http,https
logpath = /var/log/httpd/error_log
maxretry = 1

[apache-modsecurity]
enabled = true
port = http,https
logpath = /var/log/httpd/error_log
maxretry = 1

[apache-shellshock]
enabled = true
port = http,https
logpath = /var/log/httpd/error_log
maxretry = 1


pour finir, redémarrer le service :

$ sudo systemctl restart fail2ban


Utilisation :
récupérer la liste des Jails actives:

$sudo fail2ban-client status



récupérer les infos pour une jail en particulier (ici sshd)

$sudo fail2ban-client status sshd



retirer une IP du Ban

$sudo fail2ban-client unban