防止服务器无法使用WordPress的暴力攻击

我pipe理一个服务器上有很多的WordPress的安装。 search一个解决scheme,以防止暴力攻击高CPU,这使服务器一天几个小时无法使用。

这些是目标:

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

有很多事情可以阻止攻击者咀嚼你的资源。

(重新)考虑使用pipe理区域的密码保护

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

通过要求用户在Web服务器级别login,可以最大限度地减less攻击者可以执行的操作,限制处理这些攻击所需的资源,并进一步保护可能存在漏洞的网站。

限制pipe理员login到一个ip白名单(networking服务器)

您可以拒绝访问您网站的某些部分。 即使你不得不开放一个相当大的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; } 

使其更难find

蛮力攻击做出了一些假设。 如果您可以重命名您的wp-admin文件夹,请重命名wp-login.php或在非标准端口上运行wp-admin,那么您将不必花费宝贵的资源来试图validation这些蛮力login。

尝试fail2ban

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

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

fail2ban有一些有趣的function:

阻止尝试使用不正确的用户名login

许多攻击者试图用普通的用户名login,比如admin。 不要使用这些用户名是一个好习惯,在这种情况下,您可以阻止任何尝试使用这些用户名login的用户。

WPf2b现在允许您指定一个正则expression式,如果请求的用户名匹配,将会使login过程更快捷

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

ip-whitelist(fail2ban)

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

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

我可以从头脑中想到几种可能性; 依次大致增加对合法用户的侵入性:

  • 重命名wp-login.php到别的东西? (升级时需要维护,默默无闻地依赖安全性,但应该以合理用户的最小麻烦来阻止大部分无目标的脚本攻击。)
  • CPU限制Web服务器进程? (导致Web服务器在请求泛滥期间变得更加缓慢,但即使面对沉重的冲击,也应该允许服务器维护;即使只剩下5%的CPU也应该足够多,可能还需要与数据库服务器进程协调。
  • 在前端负载均衡器或防火墙中对wp-login.php进行速率限制请求? (在请求泛洪期间会给合法用户带来麻烦,但至less包括公开访问博客内容在内的其他服务器应该保持畅快。)

我写了一个WordPress插件,你可能会发现有帮助。

不良行为在阻止这类暴力攻击方面有着良好的logging 。 它是一个极简主义的Web应用程序防火墙,可以在所有的WordPress加载之前,很快地阻止链接垃圾邮件和其他恶意stream量,节省CPU和其他资源。 (我说极简主义,因为与在networking服务器上可以完成的工作相比, 只有在这一层才能完成的工作甚至是单独的设备,尽pipe它是为没有其他select的人devise的)。

你会在WordPress插件库中find它。


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