Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink

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 ! big_smile

Hors ligne