Pages : 1
#1 Le 05/10/2015, à 22:54
- Lowbaka
Sécurisé phpmyadmin avec fail2ban
Bonjour à tous,
Pour une fois que j'ai une solution à apporter à un soucis, je viens la partager ici. Peut être cela servira t-il à quelqu'un un jour.
Mon problème était le suivant : empêcher les brutes force sur phpmyadmin. Seulement, après quelques heures de recherches, rien de vraiment bien concret sur internet. C'est en assemblant différentes petites briques que j'ai trouvé une solution simple mais efficace que je viens donc vous livrer.
Pour commencer on fait une légère modification dans les scripts de phpmyadmin :
$ sudo nano /usr/share/phpmyadmin/libraries/plugins/auth/AuthenticationCookie.class.php
Rechercher la déclaration de la fonction authFail(), et après
[...]header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');[...]
Rajouter sur une ligne
error_log('phpmyadmin: authentification failed');
Ce code est simple : lorsque cette fonction est appelé, il fait loguer à apache un "phpmyadmin: authentification failed" qui nous permettra, avec fail2ban, de détecter les erreur de connexion. En fait, c'est la partie vraiment manquant pour pouvoir utiliser fail2ban sur phpmyadmin.
Attention, ici on modifie AuthenticationCookie.class.php qui est la classe appelé lorsque l'authentification de phpmyadmin est réglée en "cookie" (par défaut). La solution doit être aisément transposable aux autres modes mais je n'ai pas testé.
Ensuite, il ne reste qu'à créer le filtre et la configuration fail2ban :
$ sudo nano /etc/fail2ban/filter.d/apache-phpmyadmin.conf
Y mettre le code suivant :
Détection erreur connexion phpmyadmin
# Auteur : Merle Cédric
[Definition]
# Option: failregex
# Notes.: regex to match failed login into phpmyadmin with modification of authFail(). The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching.
# Values: TEXT
failregex = .*\[client <HOST>:[0-9]+\] phpmyadmin: authentification failed.*
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
ignoreregex =
Puis la configuration des jails :
$ sudo nano /etc/fail2ban/jail.conf
Rajouter
[apache-phpmyadmin]
enabled = true
filter = apache-phpmyadmin
port = http,https
logpath = %(apache_error_log)s
Voilà. Maintenant phpmyadmin log les erreurs de connexion directement dans les logs de apache et fail2ban est capable de les récupérer.
Je suis tout ouïe pour toute question, remarque, proposition d'amélioration, etc...
Dernière modification par Lowbaka (Le 05/10/2015, à 23:01)
Hors ligne
#2 Le 08/10/2015, à 11:49
- voxdemonix
Re : Sécurisé phpmyadmin avec fail2ban
merci pour l'infos fort intéressante
Dernière modification par voxdemonix (Le 08/10/2015, à 11:49)
Hors ligne
#3 Le 10/03/2019, à 18:28
- Brian_55599
Re : Sécurisé phpmyadmin avec fail2ban
Merci pour l'astuce !
Hors ligne
Pages : 1