我们一直用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 过滤器。