问题描述
我负责大量共享托管服务器的安全性。他们大多数都在使用 WordPress 网站。每个服务器至少有 500 个 WordPress 网站。
在我看来,WordPress 的问题开始于弱密码。大多数的网站管理员密码很弱,使用弱密码网站被利用并用于各种恶意活动。
现在我的计划是找出 WordPress 网站的弱密码,并强制将管理员密码更改为其他强大的密码。所以 WordPress 可以保护,我的服务器不会有麻烦。
知道存储的 WordPress 密码的强度是什么?
最佳解决方案
Bruteforce 哈希
您可以强制存储在数据库中的哈希值。
WordPress 使用 phpass 进行散列。默认情况下,WordPress 不使用 blowfish 或类似的,但只是 md5 的迭代计数为 8192. 如果你只想找到真正不好的密码,强制是肯定可行的。
但我认为这是一个相当大的违反用户对您的信任,所以我不会推荐这种方法。
登录时分析其密码
您可以添加一个脚本来截取对 WordPress 登录脚本的所有请求,并记录或分析密码,因为它们是纯文本的。
当然,一旦用户实际登录,这只会获得较弱的密码。如果他们已经放弃了自己的网站或者非常活跃,可能需要一段时间才能发现他们使用了弱密码。
我认为这是一个比强制哈希更大的违规行为,它也带来了一些安全问题 (如果你以明文方式存储密码,这显然是一个问题,但即使不是这样,你可能会不小心将一些信息存储在可能有助于攻击者的分析) 。
实施密码策略 (强制用户更改密码)
您可以实施密码策略。当用户提交新的密码时,您会检查是否符合您的策略 (理想情况下,这将发生在 server-side,而不是 client-side 通过 JavaScript) 。
编写良好的密码政策很困难,所以请看现有的政策来帮助你。
当然,老密码也不受策略的影响,所以您需要强制用户更改旧密码以符合该策略
限制伤害
执行强密码当然可以是一个好主意,但理想情况下,被黑客攻击的 WordPress 实例不应该真正影响您作为网站管理员。
一旦攻击者获得了 WordPress 安装的访问权限,您应该想限制这些损害。理想情况下,您只希望只有一个实例受到影响,而不是整个服务器 (因此您可能会担心攻击者将不雅内容放在网站上 – 就像有效的用户可能会这样做 – 但不是关于代码执行或其他恶意活动) 。
这是一个相当广泛的话题,但有一些要点包括:DISALLOW_FILE_EDIT
,限制了插件的使用 (因为它们远远不如 WordPress 本身安全地编码),不允许使用 JavaScript(例如,使用多种功能,只有 super-admins 有权发布 JavaScript,而不是管理员) 等
次佳解决方案
我不知道这是甚么可能的。当您选择密码时,它会在数据库中存储散列。来到哈希算法时没有反向的工作。
根据我的经验,密码强度的脚本位于 www.example.com/wp-admin/js/password-strength-meter.js
中,this 是指向它的链接。
您可以在此处更改密码的级别和百分比,因此您可以将强制密码设置为 100/100 。
而且,如果您希望客户端检查密码强度,可以使用 application 来提供密码。
这里不可能做一些逆向工程,另外还有很少的插件强制用户获得强密码。
第三种解决方案
好消息是,您可以更改用户密码,坏消息是您无法看到它们.Wordpress 是如此强大,即使在数据库中,它使用单向加密存储密码,它不只是一个 md5 哈希,您可以转换,它不是即使是序列化数据,对于密码 test123
,您将获得类似 $P$BjW8o9Dm1vC5bwAcP1iAdNVm0lbvn
的内容,即使您更改数据库中的密码字段而不使用加密,也不会工作。
如何更改密码
我相信你知道这一点,但我会把它留在这里。您可以使用管理员权限输入您的 wordpress 信息中心,去用户,找到一个用户,这部分是为了您的目的是坏的,因为您必须点击生成新密码,它会给你一些随机的字母和符号汤,你可以用自己的编辑,即使这样你也看不到密码。
第四种方案
随着密码的散列,测试其安全性的唯一方法是强制强制他们。收集常用的弱密码列表,并对数据库中存储的哈希进行测试。
除非您使用非常详尽的密码列表,否则这将不会捕获所有弱密码,但会滤除最弱的密码。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。