Le service Fail2Ban permet de bloquer les adresses IP des robots qui devinent les mots de passe de votre site. Récemment, il a souvent été utilisé pour mener des attaques, car un grand nombre de requêtes de publication créent une charge importante sur le serveur Web. Dans nos exemples, nous examinerons le blocage des adresses IP en utilisant l'exemple du CMS populaire - Wordpress, ainsi que pour le service ssh.
1. Installez le service Fail2Ban
1.1 Connectez le référentiel Epel
yum install epel-release
puis dans /etc/yum.repos.d/epel.repo vous devez l'activer, activé = 1
yum install fail2ban
2. Paramètres généraux
Le service Fail2ban stocke ses fichiers de configuration dans le répertoire /etc/fail2ban. Il existe un fichier avec des valeurs par défaut appelé jail.conf. Étant donné que ce fichier peut être écrasé par les mises à jour du package, nous ne devons pas l'utiliser. Au lieu de cela, nous écrirons un nouveau fichier appelé jail.local. Toutes les valeurs définies dans jail.local remplacent les valeurs dans jail.conf.
jail.conf contient une section [DEFAULT], suivie de sections pour les services individuels. jail.local peut remplacer n'importe laquelle de ces valeurs. De plus, les fichiers de /etc/fail2ban/jail.d/ peuvent être utilisés pour remplacer les paramètres de ces deux fichiers. Les fichiers sont appliqués dans l'ordre suivant :
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf, alphabetically
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local, alphabetically
Vérifions et ajoutons les paramètres par défaut au fichier /etc/fail2ban/jail.local
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
Redémarrons le service
service fail2ban restart
Vérifions l'état avec la commande
fail2ban-client status
3. Filtre Wordpress
Ajoutons un filtre et une règle (prison) pour bloquer les adresses IP qui ont accédé à l'adresse /wp-login.php (administrateur Wordpress) plus de 10 fois à partir de la même adresse IP en 10 minutes.
3.1 Filtre
/etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = ^.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200
ignoreregex =
En utilisant ce filtre, nous rechercherons des adresses IP.
3.2 Ajouter une prison
/etc/fail2ban/jail.d/wordpress.conf
[wordpress]
action = iptables-multiport[name="wordpress", port="http,https"]
filter = admin-wordpress
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log
Si vous utilisez un autre serveur Web, vous devez modifier le filtre en fonction de la manière dont il génère le journal et spécifier le chemin correct vers le fichier journal (access_log). Après avoir apporté des modifications, vous devez redémarrer le service.