过去我经手过的WordPress项目出安全问题最多见的两个原因:

  1. 网站没有安装安全防护插件,或者安装了但因为某种原因没有激活
  2. 高权限(Subscriber以上)的账号用了弱密码或复用相同密码在别的网站被泄露

绝大多数WordPress网站都不是高价值攻击目标,只要能做好上面两项防护,是不需要担心被黑的。

一线的安全插件有3个:WordFenceSucuriiThemes Security Pro,暂时没有太多预算的朋友可以从免费版的WordFence开始。

WordFence安装激活后会自动提示设置防火墙,它能自动检测web服务器(nginx或apache)并自动配置,普通站长也能方便地激活应用防火墙(WAF),能处理绝大多数自动攻击手段如wp-admin暴力破解,各种SQL Injection,PHP Injection,XSS攻击 … 初开防火墙可能处于Learning Mode(学习模式),不必担心,WF会自行设定日期开启防护,学习模式下,插件仍会从官方同步大量防护规则,防火墙的99%实际上已经开启了。

你需要开启的另一个WF功能是定期扫描(Scan),你可以在All Options => Scan Scheduling中找到配置选项,免费版只提供让WF自行安排扫描时间的选项,付费版可以让站长指定扫描时间。对于有过被黑历史(后恢复)的网站,我建议你把Scan Type设置为High Sensitivity,有一些WordPress恶意代码很狡猾,可能重复感染,且可能很隐蔽,我曾经帮客户处理过一个广告木马,感染方式是冒充知名的matomo统计的js迁入代码,客户不知情(正好也在用Matomo),木马在网站运行了好几个月Google报危险网站才最终被发现。

另外,确保在Email Alert Preferences里打开这些邮件报警(通知)选项:

  • Email me if Wordfence is deactivated (当WF被关闭时邮件报警)
  • Email me if the Wordfence Web Application Firewall is turned off (当WF防火墙被关闭时邮件报警)

如果你能把WordFence用对,网站95%的安全问题已经解决了,另外4%的安全,经常是因为认为的懒惰,比如分配到Author,Editor,甚至Administrator权限的账号用了好记忆但非常弱的密码,或者缺乏安全意识的用户干脆用了自己最常用的密码,而这密码早就在因为其它平台的安全缺陷泄露了。

要强制WordPress核心账户流程(注册、登录、忘记密码)使用强密码并不难,WordFence提供的设置有:

  • Enforce strong passwords (强制强密码)
  • Check password strength on profile update (用户修改资料时强制强密码)

但WF未必能干预非WordPress核心账户流程,如各种能替换掉默认注册登录表单的表单插件,各种第三方账户流程插件,它们不是都有那么强的安全意识,如果你用了这样的插件,需要关注文档里关于安全的说明章节,或者联系作者插件将如何保护用户账号。

重复密码的问题,WF也有防护选项:

  • Alert when someone is blocked from logging in for using a password found in a breach (当网站用户用被泄露的密码登录网站时报警)

但它可能不是一个技术问题,而是一个流程问题,要在流程上杜绝密码复用,拥有写权限的账户必须由管理员分配(分配不可能重复的强密码),而非由用户自己注册,通过技术手段关闭这类账户手动修改密码的能力:

add_filter( 'allow_password_reset', 'wss_disable_password_reset' );
funciton wss_disable_password_reset() {
    if(current_user_can('edit_posts') || current_user_can('manage_options')) {
         return false;
    }
    return true;
}

要为一个WordPress站点做安全加固当然有更多事可做,但恐怕绝大多数WordPress站长并没有这个时间和技术能力去做更加深入的配置,我有信心如果读者能解决好本文种描述的两类问题,就能确保你的WordPress网站安全,再重复一遍:

  1. 使用安全插件,可以从WordFence开始
  2. 强制强密码,从流程上杜绝密码复用

更多链接:

类似文章

订阅评论
提醒

4 Comments
内联反馈
查看所有评论
Harry
4 月 前

WP叔叔你好,目前我司有個網站被集團告知有被XSS攻擊
現在才裝WordFence,想請問該如何排除這個情況?
我裝了之後檢測好像還是被XSS攻擊的狀態,能請您幫幫忙嗎?
如需要費用請通知我,我們願意外包出去

Gavin
2 年 前

还有一招,打开authenticator功能,每次登陆都输入下验证码

3 年 前

专业啊