我pipe理一个服务器上有很多的WordPress的安装。 search一个解决scheme,以防止暴力攻击高CPU,这使服务器一天几个小时无法使用。
这些是目标:
有很多事情可以阻止攻击者咀嚼你的资源。
您可能有充分的理由不要在所有或某些网站上使用此function,但请不要低估此技术的实用性。 尽可能使用。
通过要求用户在Web服务器级别login,可以最大限度地减less攻击者可以执行的操作,限制处理这些攻击所需的资源,并进一步保护可能存在漏洞的网站。
您可以拒绝访问您网站的某些部分。 即使你不得不开放一个相当大的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,那么您将不必花费宝贵的资源来试图validation这些蛮力login。
http://wordpress.org/plugins/wp-fail2ban/
fail2ban是您可以执行的最简单和最有效的安全措施之一,可防止暴力猜测密码攻击。
fail2ban有一些有趣的function:
许多攻击者试图用普通的用户名login,比如admin。 不要使用这些用户名是一个好习惯,在这种情况下,您可以阻止任何尝试使用这些用户名login的用户。
WPf2b现在允许您指定一个正则expression式,如果请求的用户名匹配,将会使login过程更快捷
定义( 'WP_FAIL2BAN_BLOCKED_USERS', '^ ADMIN $');
这里的想法是列出将显示为请求的远程IP的可信代理的IP地址。
define('WP_FAIL2BAN_PROXIES','192.168.0.42,192.168.0.43');
我可以从头脑中想到几种可能性; 依次大致增加对合法用户的侵入性:
wp-login.php到别的东西? (升级时需要维护,默默无闻地依赖安全性,但应该以合理用户的最小麻烦来阻止大部分无目标的脚本攻击。) wp-login.php进行速率限制请求? (在请求泛洪期间会给合法用户带来麻烦,但至less包括公开访问博客内容在内的其他服务器应该保持畅快。) 我写了一个WordPress插件,你可能会发现有帮助。
不良行为在阻止这类暴力攻击方面有着良好的logging 。 它是一个极简主义的Web应用程序防火墙,可以在所有的WordPress加载之前,很快地阻止链接垃圾邮件和其他恶意stream量,节省CPU和其他资源。 (我说极简主义,因为与在networking服务器上可以完成的工作相比, 只有在这一层才能完成的工作甚至是单独的设备,尽pipe它是为没有其他select的人devise的)。
你会在WordPress插件库中find它。
由于您运行服务器,您可能还想要使用ModSecurity与核心规则集 。 许多不良行为的规则在这里被重新实现(查找我的名字和/或不良行为的名字),规则集还包含许多其他的规则可能对你有帮助。