设置 fail2ban 以禁止失败的 phpMyAdmin 登录尝试

设置 fail2ban 以禁止失败的 phpMyAdmin 登录尝试

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

由于phpMyAdmin没有将身份验证尝试记录到文件中(据我所知),我不确定如何最好地解决这个问题。

是否存在对文件进行日志身份验证尝试的插件/配置phpMyAdmin?或者我应该在其他地方寻找这样的活动日志吗?

理想情况下,我将能够找到fail2ban仅涉及修改配置的解决方案,因为我必须fail2ban在多台服务器上使用相同的选项进行配置,并且不希望修改phpMyAdmin所述服务器上的各种安装。

答案1

我认为使用 phpMyAdmin 的最佳方式(在我看来也是最不危险的方式)是不直接在公共 IP 上打开 phpMyAdmin,而是只监听内部 IP 或环回,并使用要使用 phpMyAdmin 的机器上的本地端口建立 SSH 隧道以连接到它。这样,合理的身份验证由 SSH 控制(并且已被 fail2ban 阻止)。

答案2

我们通过为 phpmyadmin 位置添加 apache htaccess ldap 身份验证(或文件身份验证)来保护 phpmyadmin。您必须输入两次密码,但 fail2ban 可以识别失败的登录尝试。

[http://www.cyberciti.biz/faq/howto-setup-apache-password-protect-directory-with-htaccess-file/][1]

答案3

我结合使用了.htaccess一个简单的php脚本来提供我认为可以接受的解决方案:

.htaccess

php_value auto_prepend_file /path/to/fail2ban.php

fail2ban.php

  • 检测存在$_REQUEST['pma_{username|password']
  • pma_{username|password}根据mysql.user表进行验证
  • 如果详细信息无效,则记录错误(格式如下)

日志格式

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

这个解决方案对我来说很适合,因为我可以轻松地将其集成到bash我编写的脚本中,以便fail2ban在我们的服务器上顺利进行配置。

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

作为后续行动,我提出了一个问题,关于我在创建自定义fail2ban过滤器来监视和处理这个新日志文件时遇到的问题:针对 phpMyadmin 暴力破解尝试的自定义 fail2ban 过滤器

相关内容