welcome:linux_usually:secure_joomla
Table des matières
Fail2ban pour Joomla sur Debian10 (Turnkey16) derrière un reverse proxy
Difficulté

Moyen
HAProxy
- Régler pour obtenir les IPs de connexion tout en étant derrière le proxy: HAProxy
- Dans Joomla:
Système
⇒Configuration
⇒Serveur
: aller tout en bas àParamétres du proxy
et activerBehind Load Balancer
OPNSense
Privilèges de l'utilisateur: “Diagnostics: PF Table IP addresses”
Fail2ban de base
source: https://linuxize.com/post/install-configure-fail2ban-on-debian-10/
- fail2ban est configuré d'origine sur ct Turnkey.
#systemctl status fail2ban
le confirme
- installer
whois
pour des infos plus détaillées sur les IPs bloquées# apt-get install whois
- copier le fichier de configuration d'origine qui ne doit pas être modifié
# cp /etc/fail2ban/jail.{conf,local}
- paramétrer dans cette copie
# nano /etc/fail2ban/jail.{conf,local} ... ignoreip = 127.0.0.1/8 IPs.reseau.lan.local/24 si besoin ... bantime = 60m ... findtime = 10m ... maxretry = 5 ... destemail = admin@domain.tld ... action = %(action_mw)s ...
- penser à activer les jails souhaitées au passage
... enabled = true ...
# systemctl restart fail2ban
Fai2ban pour Joomla avec HAProxy
Le filtre
Malheureusement les jails de fail2ban ne suffisent pas car ce n'est pas Apache qui logge pas les tentatives d'identification mais Joomla!
Sources: https://www.joomla-security.de/server/joomla-login-mit-fail2ban-schuetzen.html et https://www.andrehotzler.de/de/blog/technology/62-joomla-login-mit-fail2ban-schuetzen.html
# nano /etc/fail2ban/filter.d/joomla-login-errors.conf [Definition] failregex = ^.*INFO <HOST>.*joomlafailure.*(Benutzername|Username|utilisateur).*
Mettre toutes les traductions des langues utilisées dans le site
La Jail
# nano /etc/fail2ban/jail.d/joomla-login-errors.conf [joomla-login-errors] enabled = true filter = joomla-login-errors port = http,https logpath = /var/www/joomla/administrator/logs/error.php
L'action
# nano /etc/fail2ban/action.d/opnsense.conf # Fail2Ban configuration file # from triumvirat.org [Definition] actionban = /root/fail2ban-IP.sh ban <ip> actionunban = /root/fail2ban-IP.sh unban <ip>
Général
Placer la nouvelle action dans /etc/fail2ban/jail.local
... banaction = opnsense ...
# systemctl restart fail2ban # systemctl status fail2ban
Communiquer avec OPNSense
Il faut créer un petit script:
# nano fail2ban-IP.sh
#!/bin/sh KEY="la_clé" SECRET="le_mot_de_passe" FWIP="ip.de.la.OPNSense" FWPORT="n°_de_port" ALIAS="fail2ban_CT_Joomla" if [ $1 = "ban" ]; then TODO="add" elif [ $1 = "unban" ]; then TODO="delete" fi curl -X POST -d '{"address":"'$2'"}' -H "Content-Type: application/json" -k -u $KEY:$SECRET https://$FWIP:$FWPORT/api/firewall/alias_util/$TODO/$ALIAS
- La clé et le mot de passe sont les identifiants API de l'utilisateur créé à cet effet
- le n° de port est celui utilisé pour la connexion https à l'interface web
- l'alias est celui utilisé pour la règle de blocage du firewall
# chmod 600 fail2ban-IP.sh # chmod +x fail2ban-IP.sh
Pour tester le script:
# ./fail2ban-IP.sh ban 192.168.1.1 # ./fail2ban-IP.sh unban 192.168.1.1
et pour finir:
# fail2ban-client set joomla-login-errors banip 192.168.1.1 # fail2ban-client set joomla-login-errors unbanip 192.168.1.1
Restreindre l'accès au répertoire d'administration
- Dans la config d'Apache:
# nano /etc/apache2/sites-available/joomla.conf et ajouter: <Directory /var/www/joomla/administrator> Order Deny,Allow Deny from all Allow from ip1.ou.bien.réseau1/24 ip2.ou.bien.réseau.2/24 </Directory>
# systemctl restart apache2
welcome/linux_usually/secure_joomla.txt · Dernière modification : de arnaud