(重新)考虑对管理区域使用密码保护

(重新)考虑对管理区域使用密码保护

我管理着一台安装了多个 wordpress 的服务器。正在寻找一种解决方案来防止暴力攻击导致 CPU 占用过高,这会导致服务器每天有几个小时无法使用。

这些是目标:

  • Referer 检测还不够(例子)(已经尝试过这个解决方案,但攻击我的黑客可以绕过它并填满 CPU)。
  • 通过 .htaccess 对“wp-login.php”进行密码保护不是一个好的解决方案(例子)(公司要求)。

答案1

你可以采取很多措施来阻止攻击者消耗你的资源。

(重新)考虑对管理区域使用密码保护

您可能有充分的理由不在所有或部分网站上使用此方法,但请不要低估此技术的实用性。尽可能使用。

通过要求用户在 Web 服务器级别登录,您可以最大限度地减少攻击者可能造成的损害,限制应对这些攻击所需的资源,并进一步保护可能存在漏洞的网站。

限制管理员登录到 IP 白名单(Web 服务器)

您可以拒绝访问您网站的部分内容。即使您必须开放相当大的 IP 子网,也比让全世界都访问要好!

在 nginx 中它可能看起来像这样:

location /wp-admin {
  # block one workstation
  deny    192.168.1.1;
  # allow anyone in 192.168.1.0/24
  allow   192.168.1.0/24;
  # drop rest of the world
  deny    all;
}

使其更难找到

暴力攻击会做出许多假设。如果您可以重命名 wp-admin 文件夹、重命名 wp-login.php 或在非标准端口上运行 wp-admin,那么您就不必花费宝贵的资源来验证这些暴力登录。

尝试fail2ban

http://wordpress.org/plugins/wp-fail2ban/

fail2ban 是您可以实施的最简单、最有效的安全措施之一,可以防止暴力猜测密码攻击。

fail2ban 有一些有趣的功能:

阻止使用错误用户名登录的尝试

许多攻击者会尝试使用常见用户名(例如 admin)登录。最好不要使用这些用户名,这样您就可以阻止任何尝试使用这些用户名登录的人。

WPf2b 现在允许您指定一个正则表达式,如果请求的用户名匹配,它将简化登录过程

定义('WP_FAIL2BAN_BLOCKED_USERS','^admin$');

ip 白名单 (fail2ban)

这里的想法是列出将作为请求的远程 IP 出现的可信代理的 IP 地址。

define('WP_FAIL2BAN_PROXIES','192.168.0.42,192.168.0.43');

答案2

我马上就能想到几种可能性;按照对合法用户的侵入性大致增加的顺序:

  • 重命名wp-login.php为其他名称?(升级时需要维护,依靠隐蔽性实现安全性,但应该能够阻止大多数非针对性脚本攻击,同时尽量减少合法用户的麻烦。)
  • CPU 限制 Web 服务器进程?(导致 Web 服务器在请求泛滥时变得有些迟缓,但即使在面临重击的情况下也应允许服务器维护;即使只剩下 5% 的 CPU 也应该足够了。可能还需要与数据库服务器进程协调。)
  • wp-login.php在前端负载均衡器或防火墙中限制请求的速率?(在请求泛滥时会给合法用户带来麻烦,但至少服务器的其余部分(包括对博客内容的公共访问)应该可以继续顺利运行。)

答案3

我编写了一个 WordPress 插件,您可能会觉得它很有用。

不良行为有很好的跟踪记录阻止这些暴力攻击。它是一种极简主义的 Web 应用程序防火墙,可以在 WordPress 加载完成之前很早就阻止链接垃圾邮件和其他一些恶意流量,从而节省 CPU 和其他资源。(我说极简主义是因为可以做什么仅有的与您在 Web 服务器或单独设备上可以执行的操作相比,此层的操作是最少的,尽管它是为没有其他选择的人设计的。

您可以在WordPress 插件库


由于您运行服务器,您可能还想使用ModSecurity核心规则集。许多“不良行为”的规则都在这里重新实施(在其中查找我的名字和/或“不良行为”的名字),并且规则集还包含许多其他可能对您有帮助的规则。

相关内容