设置fail2ban禁止失败的phpMyAdminlogin尝试

我们一直在使用fail2ban来阻止失败的ssh尝试。 我想为phpMyAdmin设置相同的东西。

由于phpMyAdmin不loggingauthentication尝试到一个文件(我知道),我不确定如何最好的去做这件事。

是否存在一个插件/configuration使phpMyAdmin日志身份validation尝试到一个文件? 还是有其他地方我应该寻找这样的活动日志?

理想情况下,我将能够find一个只涉及修改fail2banconfiguration的解决scheme,因为我必须在多个服务器上configuration具有相同选项的fail2ban ,并且不希望修改所述服务器上的各种phpMyAdmin安装。

我认为使用phpMyAdmin的最好方法(在我看来不那么危险)是不直接在公网IP上打开phpMyAdmin,而是只侦听内部IP或环回,并使用本地端口连接到SSH隧道你想使用phpMyAdmin的机器。 通过这种方式,敏感的身份validation由SSH控制(并且已经被fail2ban阻止)。

我们通过为phpmyadmin位置添加apache htaccess ldap身份validation(或文件身份validation)来保护phpmyadmin。 您必须键入密码两次,但失败的login尝试被fail2ban识别。

[ http://www.cyberciti.biz/faq/howto-setup-apache-password-protect-directory-with-htaccess-file/%5D%5B1%5D

我已经使用.htaccess和一个简单的php脚本的组合来提供我觉得可以接受的解决scheme:

的.htaccess

 php_value auto_prepend_file /path/to/fail2ban.php 

fail2ban.php

  • 检测$_REQUEST['pma_{username|password']
  • 根据mysqlvalidationpma_{username|password}user
  • 如果详细信息无效,则logging错误(格式如下)

日志格式

 phpMyadmin login failed with username: root; ip: 192.168.1.50; url: http://somedomain.com/phpmyadmin/index.php phpMyadmin login failed with username: ; ip: 192.168.1.50; url: http://192.168.1.48/phpmyadmin/index.php 

这个解决scheme适合我,因为我可以很容易地把它集成到bash脚本中,这些脚本放在了我们的服务器fail2ban平滑fail2banconfiguration。

感谢所有提供可能解决scheme的人!

作为一个后续,我已经开了一个关于创build一个自定义的fail2banfilter来观察和处理这个新的日志文件的问题。Custom fail2ban为phpMyadmin暴力破解尝试过滤 。