Configurer Fail2ban (configurer un anti-ddos simple)

Information importante pour Debian 12

Sur Debian 12, fail2ban recherche un fichier auth.log (pour ssh), sinon il refuse de se lancer. Le contournement consiste à indiquer à fail2ban qu'il doit utiliser systemd désormais :

[sshd]
mode = normal
port = ssh
backend = systemd
logpath = journal

Installer Fail2ban

apt install fail2ban -y

Le répertoire des fichiers de conf est : /etc/fail2ban


1ère étape : Créer une copie du fichier principal

On ne travaille pas sur le fichier par défaut (.conf). On va créer une copie : jail.local

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

2ième étape : Configurer nftables

Indiquer à fail2ban que vous utilisez le pare-feu nftables et plus iptables. (Debian est passé à nftables depuis 3 ans.. fail2ban lui, est resté sur iptables par défaut).

nano /etc/fail2ban/jail.local

Cherchez les 2 lignes suivantes et modifiez-les comme ci-dessous :

banaction = nftables-multiport # au lieu de iptables-multiport
banaction_allports = nftables-allports # au lieu de iptables-allports

A partir de là, vous pouvez configurer ce que vous souhaitez. Fail2ban fonctionne par "jail".. Pour chacun des services entre [] dans jail.local, fail2ban cible un service qui peut être installé et utilisé sur votre serveur et "tente" de le protéger.

Pour désactiver un jail, on place enabled = false sous la section concernée... Par défaut, les jails sont actifs autrement.

[sshd]
enabled = false
# ...

Configurer un anti-DDoS pour Apache

Pour configurer un anti-ddos pour apache, nous devons d'abord écrire un filtre pour que fail2ban puisse correctement lire les logs d'apache, puis écrire un jail spécifique dans jail.local

D'abord le filtre

cd /etc/fail2ban/filter.d
nano apache-ddos.conf
[Definition]
failregex = ^ -.*"(GET|POST).*"
ignoreregex =

À présent le jail

nano /etc/fail2ban/jail.local

(rapprochez-vous des jail concernant apache pour plus de cohérence, et rajoutez :)

[apache-ddos]
port = http,https
logpath = /var/log/apache2/*.log
maxretry = 200
bantime = 6m
findtime = 1m
filter = apache-ddos

3ième étape : Relancer fail2ban

N'oubliez pas de relancer fail2ban !

systemctl restart fail2ban

Vérifiez si fail2ban s'est bien lancé (si vous n'avez pas fait d'erreur de syntaxe !)

systemctl status fail2ban

4ième étape : Tests de fonctionnement

Faîtes des tests de fonctionnement avec ddosify par exemple (voir l'article consacré au sujet). Regardez vos logs fail2ban en direct :

tail -f /var/log/fail2ban.log

⬆️ Retour en haut de la page