phpmyadmin fail2ban登录失败日志

phpmyadmin fail2ban登录失败日志

我有一台安装了 phpmyadmin 的 Debian 服务器。我想使用 fail2ban 来阻止暴力攻击。我有几个问题:

  1. 我如何记录失败的登录尝试?在哪里设置?我只能在 /var/log/apache2/access.log 中找到日志,无论登录成功还是失败。

10.0.5.1 - - [01/Mar/2016:23:47:46 +0800] "GET /phpmyadmin/ HTTP/1.1" 200 4028 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" 10.0.5.1 - - [01/Mar/2016:23:47:49 +0800] "POST /phpmyadmin/index.php HTTP/1.1" 200 4033 "http://10.0.0.105/phpmyadmin/“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/48.0.2564.116 Safari/537.36” 10.0.5.1 - - [01/Mar/2016:23:47:55 +0800] “POST /phpmyadmin/index.php HTTP/1.1” 200 4019 “http://10.0.0.105/phpmyadmin/index.php“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/48.0.2564.116 Safari/537.36” 10.0.5.1 - - [01/Mar/2016:23:48:29 +0800] “POST /phpmyadmin/index.php HTTP/1.1” 200 4019 “http://10.0.0.105/phpmyadmin/index.php“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/48.0.2564.116 Safari/537.36”

  1. 如果这是我唯一能得到的日志,fail2ban 的正则表达式应该是什么?failregex = ^ -*POST /phpmyadmin/index.php *

答案1

  1. 编辑/etc/phpmyadmin/config.user.inc.php文件并添加类似以下内容:
<?php

$cfg['AuthLog'] = '/tmp/phpmyadmin.log';
  1. 一探究竟:
tail -F /tmp/phpmyadmin.log
  1. 在 phpmyadmin 中执行错误登录。预期输出类似于以下内容:
Jan 19 09:20:00 phpmyadmin: user denied: sfsd (mysql-denied) from 10.163.1.128

如果您的 phpmyadmin 服务器位于反向代理后面,并且其私有 IP 地址是10.163.1.128您可能想要记录客户端的公共 IP 地址,因此步骤 1 应该是:

<?php

$cfg['AuthLog'] = '/tmp/phpmyadmin.log';
$cfg['TrustedProxies'] = array('10.163.1.128' => 'HTTP_X_FORWARDED_FOR');

请记住,运行 phpmyadmin 的用户(通常)应该对变量名www-data中定义的文件和父目录具有写访问权限$cfg['AuthLog']


答案2

文档对于版本 4.7.0,该版本仍在开发中并且不能直接使用:

替代方法可能是使用 fail2ban,因为 phpMyAdmin 会将失败的身份验证尝试记录到系统日志(如果可用)

不幸的是,此日志记录仅在当前主分支中引入,正如我所提到的,它将在未来的某个时间点成为 4.7.0。您可以安全地使用主分支,因为开发人员试图在开发过程中不破坏那里的任何东西。除此之外,您必须通过查看 Apache 访问日志而不是直接从 phpMyAdmin 中实现某些功能。

对于 Ubuntu,打包的 fail2ban 开箱即用,我认为 Debian 也类似。编辑/etc/fail2ban/jail.local并启用 Apache 部分,其中包括[apache]和许多类似部分(例如[apache-overflows][apache-badbots])。您可能还希望在此处启用 PHP 过滤。

在这种情况下,我不希望在 Apache 错误日志中看到任何内容,因此从这一点来看,您没问题。

关于实际上调优fail2ban,我不是专家,但这至少可以帮助你入门。

补充阅读:https://www.digitalocean.com/community/tutorials/how-to-protect-an-apache-server-with-fail2ban-on-ubuntu-14-04或您可以在 Google 上找到的任何其他教程。

答案3

不幸的是,通过 apt 提供的版本仍然是 4.6.6,但是确实有一种方法可以更新到当前稳定版本(4.8.3):https://askubuntu.com/a/1057085。 基本上:

  • wget最新版本来自https://www.phpmyadmin.net/downloads/
  • unzip
  • rmmv旧的 phpmyadmin 文件夹/usr/share(显然备份任何自定义配置)
  • 复制刚刚解压的版本,例如cp -r phpMyAdmin-4.8.3-english /usr/share/phpmyadmin
  • 设置“blowfish_secret”/usr/share/phpmyadmin/config.inc.php并使用mkdir tmpchown -R www-data:www-data /usr/share/phpmyadmin/tmp启用模板缓存

之后,您将在 auth.log 中看到失败的尝试。类似于phpMyAdmin[27685]: user denied: admin (mysql-denied) from X.X.X.X。现在打开您的 fail2ban jail 配置(我认为它位于/etc/fail2ban/jail.local并添加以下块:

[phpmyadmin-syslog]
enabled  = true
filter   = phpmyadmin-syslog
maxretry = 3

应该可以正常工作。

相关内容