wordpress - 暴力攻击/用户枚举

标签 wordpress security brute-force

自上周以来,我不断收到有关我的 WordPress 网站登录尝试失败的警报。

最初几天,攻击者使用了错误的用户名,并在 3 次尝试后被锁定。我使用 sucuri 免费插件和 wp-security 插件。后者具有登录锁定功能。

几天后,攻击者找到并使用了我的用户名,这让我感到惊讶。我立即将其更改为新用户名,以为这样就安全了。我还在这两个插件上使用了大部分强化选项。我专门检查了该字符串 ?author=n,不在我的网站上提供任何结果。

无论如何,今天我又收到了 3 条警报,表明有人试图使用这个新用户名登录,这意味着我在 24 小时内无法访问自己的网站。

这让我想知道:

a) 别人怎么可能找到我的用户名?

b) 是否有任何其他插件(例如 cerber security)可以防止这些漏洞?

c) 有什么规则可以添加到 htaccess 中吗? (虽然我相信sucuri和wp-security添加了几条规则)

非常感谢!

最佳答案

列出用户

用户可以使用以下方式列出您的用户名:

yoursite.com?author=1

其中 ID 是 user_id。

您可以通过检测作者页面来阻止它,并使用此重定向它,例如(放入您的主题 function.php):

// Disable access to author page
function remove_author_pages_page() {
    global $wp_query;

    if ( is_author() ) {
        $wp_query->set_404();
        status_header(404);
        wp_redirect(get_option('home'));
    }
}
add_action( 'template_redirect', 'remove_author_pages_page' );

从 wp-admin 查找用户名

  • 攻击者可以通过尝试登录 wp-admin 找到用户名
  • 如果攻击者输入了正确的用户名,即使密码错误,wordpress 错误消息也会发生变化,以便攻击者知道该用户名存在
  • 您可以将此代码添加到 function.php 中,以防止 wp-admin 错误的登录错误消息提供任何信息。

代码:

function no_wordpress_errors() {
    return '<strong>Error</strong>: check your logins';
}
add_filter( 'login_errors', 'no_wordpress_errors' );

防止 wp-admin 暴力破解

这是我非常喜欢的解决方案:

  • 它使用 wp-fail2ban插件
  • 您的服务器需要 fail2ban安装并配置软件包
  • 此软件包允许您禁止(从 iptables)多次连接 SSH 失败的 IP,或暴力破解端口
  • wp-fail2ban 插件为您提供了一个自定义的fail2ban jail ,可以添加到您的fail2ban jail 中(wp 插件有关于它的完整文档)
  • 安装两者后,fail2ban 将禁止在 WP-admin 上失败过多的 IP(在 IPtable 级别上,因此甚至无法达到 PHP。攻击者最终不会使用太多服务器资源,因为服务器将阻止他的 IP。他甚至无法访问 PHP)

其他一些插件(如 Wordfence)也提供了一些安全性,但当它到达 PHP 时,攻击者会使用更多的资源。但实现起来需要较少的技术知识。

关于wordpress - 暴力攻击/用户枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52311220/

相关文章:

html - 如何使 WordPress 下划线菜单的导航栏内容居中

css - 图片在 IE 中加载,但在 Firefox 或 Chrome 中不加载

javascript - javascript Submit() 是否停止了 php 验证的必要性?

java - 我如何在没有暴力破解的情况下做 Euler 5?

java - 在 Java 中暴力破解自己的加密

php - 按多个复选框类别过滤帖子 - wordpress

php - 更新 wordpress 自定义表

jquery - $ ('iframe' ).css ('visibility' ,'hidden' ) 无法在 Google Chrome 中工作

wcf - 如何在不使用任何证书的情况下使用公钥/私钥对保护 WCF 服务

php - 是否有包含大多数已知危险用户输入的列表? PHP/MySQL