[RESOLU] Log phpmyadmin apache -> Fail2Ban

Bonjour à tous,

Je voulais sécuriser l’accès a phpmyadmin en bannissant les accès lorsque trop de tentative d’authentification avais été infructueux avec fail2ban.

J’ai bien trouvé des tutos sur internet, mais je ne trouve pas le fichier de log d’apache qui me permettrait de trouver les erreurs d’authentification.

Mon apache est paramétré avec un “LogLevel debug”, et j’ai tout les accès dans les fichiers :

/var/log/apache2/access.log

Mais les erreurs d’authentification ne s’enregistre pas dans ce fichier, ni dans error.log

Ma debian est une debian 7 (wheezy)

Auriez-vous une idée ?

Cordialement,

Qui fonctionnent bien avec fail2ban, tu as :
apache-admin
php-url-fopen
Les as-tu essayés ,

Non, je vais regardé, je ne connais pas du tout.

Mais normalement, il ne faut pas juste récupérer les logs d’authentification pour fail2ban ?!

Après une rapide recherche, fopen est une fonction php qui permet l’ouverture d’une URL ou d’un fichier.

Et apache-admin n’as pas l’air d’être répertorié dans la doc apache, cela a l’air d’être utilisé sur tomcats notament…

Salut,

Puisque tu invoques la sécurisation de phpmyadmin, je suppose donc que tu as crée un vhost à cette effet … :083

Il serait souhaitable de nous fournir le contenu de ton vhost (phpmyadmin) , pour ce faire.

Extrait du fichier [mono]/etc/fail2ban/jail.conf[/mono]

[code][apache-phpmyadmin]

enabled = true
port = http,https
filter = apache-phpmyadmin
logpath = /var/log/apache2/error.log*
maxretry = 3
bantime = 1209600
findtime = 1209599
[/code]
Et concernant le filtre :

[code]$ cat /etc/fail2ban/filter.d/apache-phpmyadmin.conf

Fail2Ban configuration file

Bans bots scanning for non-existing phpMyAdmin installations on your webhost.

[Definition]

Option: failregex

Notes.: Regexp to match often probed and not available phpmyadmin paths.

Values: TEXT

failregex = [[]client []] File does not exist: .(PMA|phpmyadmin|phpMyAdmin|myadmin|mysql|mysqladmin|sqladmin|mypma|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|myadmin2|Joomla)

Option: ignoreregex

Notes.: regex to ignore. If this regex matches, the line is ignored.

Values: TEXT

ignoreregex =

:~$
[/code]

Nota: Regex qui évolue au fil du temps. ( de part l’observation des logs)

Non… J’invoque la sécurisation de phpmyadmin par le bannissement l’accès lorsque trop d’authentification ont échoué. De plus, pour le moment, l’on ne m’a pas communiqué le nom de domaine de ce serveur, je ne peux pas indiquer le “ServerName” (sauf en jouant avec le fichiers hosts…)

Dans l’idée, c’est pas de faire un super truc hyper sécurisé, mais au moins un minimum protégé des bots. Je pense que je vais juste ajouter une authentification http par dessus, celui sera marqué dans les logs.

C’est vraiment un truc bateau que je veux faire :slightly_smiling:

Je test avec ça et vous donne réponse :stuck_out_tongue:

Bon, pas de bol, cela ne fonctionne pas non plus…
Vraiment la poisse ce soir moi :083

Finalement, voici ce qui est enregistrer dans les logs :

[Mon Jan 13 23:17:07 2014] [error] [client 195.132.41.124] user  not found: /admin-sql/
[Mon Jan 13 23:20:03 2014] [error] [client 195.132.41.124] user test not found: /admin-sql/
[Mon Jan 13 23:30:32 2014] [error] [client 195.132.41.124] user phpmyadmin: authentication failure for "/admin-sql/": Password Mismatch

Et voici ce qui se passe lorsque je fais une simulation :

[code]root@preprod:/etc/fail2ban/filter.d# fail2ban-regex /var/log/apache2/error.log /etc/fail2ban/filter.d/apache-auth.conf

Running tests

Use regex file : /etc/fail2ban/filter.d/apache-auth.conf
Use log file : /var/log/apache2/error.log

Results

Failregex
|- Regular expressions:
| [1] ^[[^]]+] [error] [client ] user .* (authentication failure|not found|password mismatch)\s*$
|
`- Number of matches:
[1] 0 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary

Sorry, no match

Look at the above section ‘Running tests’ which could contain important
information.
[/code]

Je fais mes petites recherches de mon côté sur le net 8)

J’ai remplacé par ceci :

failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$

par

failregex = [[]client <HOST>[]] user .* authentication failure [[]client <HOST>[]] user .* not found [[]client <HOST>[]] user .* password mismatch

Et cela fonctionne

Source :
the-art-of-web.com/system/fail2ban-howto/

Edit :

Je confirme, je me suis fais ban :023

Merci à vous deux d’avoir donnée de votre temps pour résoudre le problème :stuck_out_tongue:

Merci à toi d’avoir donné la réponse de ta trouvaille, ça pourra servir à d’autres.

Salut,

Personnellement, je préfère (et de loin) avoir un filtre et prison à part entière pour une application(s) tel que phpmyadmin, (Cf. ci-plus haut) plutôt que de bidouiller le filtre [mono]apache-auth.conf[/mono] déjà en place nativement et fonctionnel du reste … :033

Personnellement je protège phpmyadmin avec un .htaccess qui a un login et un mot de passe assez hard. Cela me semble assez satisfaisant comme protection, enfin en tout cas je n’ai pas eu la sensation de devoir faire “plus”, mais peut être que je me trompe. :confused:

Phpmyadmin, accessible de part un vhost en https et une seule ip (la mienne/local) est autorisé à s’en émouvoir. :033

Pour le reste, fail2ban est de la partie (bien sûr), entre autre:083

[mono]-rw-r----- 1 root www-data 38K 2013-11-07 15:51 .htaccess[/mono]