{{tag>software linux netadmin sysadmin sécurité fail2ban dokuwiki}} ====== fail2ban : Configuration pour monitoring de dokuwiki ====== En prérequis, il faut installer le **plugin loglog** qui journalise les connexions des utilisateurs au service Dokuwiki. Pour plus de détail concernant la gestion des plugins de Dokuwiki voir le wiki [[software/applications/dokuwiki/extensions |extensions]]. Le fichier de log est créé dans ''./data/cache/loglog.log'' ===== Structure du journal ===== Ci dessous un extrait du fichier de journalisation produit par Dokuwiki lorsque le module loglog est installé: 1682455440 2023/04/25 20:44 176.143.166.229 user0 failed login attempt 1682456821 2023/04/25 21:07 176.143.166.229 user0 logged in temporarily 1682456825 2023/04/25 21:07 176.143.166.229 user0 admin 1682456829 2023/04/25 21:07 176.143.166.229 user0 admin - config 1682456843 2023/04/25 21:07 176.143.166.229 user0 admin - config ["save config"] 1682456941 2023/04/25 21:09 176.143.166.229 user0 admin - logviewer 1682457224 2023/04/25 21:13 176.143.166.229 user0 logged off * 5 colonnes; * Les deux premières colonnes représentent la même information (timestamp et reformatage UTC); * IP source se trouve en 3ième colonne; * le message "failed login attempt" apparaît sur la 5ième colonne lorsqu'un échec d'authentification a lieu. ===== Test ===== # tester l'expression régulière fail2ban-regex /srv/docker/dokuwiki/userdata/data/cache/loglog.log /etc/fail2ban/filter.d/dokuwiki.local fail2ban-clien reload fail2ban-client get dokuwiki failregex ===== Dépannage ===== ==== Le bannissement ne fonctionne pas avec Docker ==== Lorsque l’application Dokuwiki s'exécute depuis un conteneur Docker, l'action de bannissement par défaut ne fonctionne pas. fail2ban-client indique bien que l'IP est bannie, les règles de filtrages sont mises à jour mais les modifications ont lieu sur la chaîne iptable **INPUT** ce qui est parfaitement adapté dans le cas d'un fonctionnement classique. L'application reste accessible car dans le cas de Docker le trafic à destination des conteneurs transite et est filtré par la chaîne **FORWARD**. Il faut donc modifier la configuration et créer une action agissant sur la chaîne FORWARD. * Le fichier ''/etc/fail2ban/jail.d/dokuwiki.local'' utilise l'action ''iptables-multiport''; * En analysant le fichier ''/etc/fail2ban/action.d/iptables-multiport.conf'' on identifie la variable **%%%%** définie dans le ''/etc/fail2ban/action.d/iptables-common.conf'' Pour que les modifications apportées localement ne soient pas écrasées lors d'une mise à jour du paquet et pour qu'elles s'appliquent en dernier, on crée une copie du fichier que l'on modifie: cd /etc/fail2ban/action.d/ cp iptables-multiport.conf iptables-docker-multiport.local Dans ce fichier on redéfinit la variable **%%%%** # Redémarer le daemon systemclt restart fail2ban.service # Vérifier l'existance de la chaine f2b-dokuwiki iptables -t filter -S f2b-dokuwiki # La chaine f2b-dokuwiki doit se trouver en début de la chaine FORWARD iptables -t filter -S FORWARD | head -n 5 -P FORWARD DROP -A FORWARD -p tcp -m multiport --dports 80,443 -j f2b-dokuwiki -A FORWARD -j DOCKER-ISOLATION-STAGE-1 -A FORWARD -j DOCKER-USER -A FORWARD -o br-5d3619a40a01 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT Autoriser à nouveau le client: fail2ban-client set dokuwiki unbanip 92.88.170.111 ===== Références ===== * man fail2ban-regex * https://www.it-connect.fr/filtres-et-actions-personnalises-dans-fail2ban/ * https://seifer.guru/2021/01/2021-01-fail2ban-with-nginx-in-container/