所有文章

WordPress 的 Ensomedia Security 插件:检查什么,怎么用

免费 ShieldWave WordPress 插件的逐屏指南:首次扫描、概览、修复问题、登录保护、历史记录,以及它不做什么。

Radek,ENSOMEDIA发布于 11 分钟阅读In EnglishPo polskuAuf DeutschEn españolEn françaisبالعربية

Ensomedia Security 是一款免费的 WordPress 插件,从内部检查你的网站,并用直白的话告诉你哪里有问题、怎么修复。WordPress.org 目录中的名称是 Ensomedia Security powered by shieldwave.io,在你的后台里显示为 ShieldWave。

它的 25 项检查会查找恶意软件和被篡改的文件、插件和主题中的已知漏洞、隐藏在内容里的垃圾信息和脚本、任何人都能下载的备份,以及有风险的账号和设置。它还会锁定猜密码的人,并提供双重验证登录。它从不自行更改你的文件、用户或设置。移入隔离区、恢复为 WordPress.org 上的原始版本和清除被注入的代码,都只在你点击按钮时才会发生。

截图展示的是深色主题下的 1.0.3 版。插件顶部的按钮可以切换为浅色主题。

安装并运行首次扫描

在后台进入“插件 > 安装插件”,搜索“Ensomedia Security”,然后点击“立即安装”和“启用”。它要求 WordPress 6.2 和 PHP 7.4 或更新版本。启用它不会开始任何扫描,也不会向任何地方发送任何东西。

打开左侧菜单中的 ShieldWave,点击“开始首次扫描”。

扫描过程中的 ShieldWave 概览:标题“正在检查您的站点”,一个进度条,显示正在运行的检查的名称及其在列表中的位置,以及“停止扫描”链接。
首次扫描在后台运行,你可以关闭标签页,稍后再回来。截图显示的是英文界面。

首次扫描通常需要几分钟,因为 ShieldWave 会把你的文件记录下来作为基准,供之后的扫描对比。后续扫描更快,因为没有变动的干净文件不会再次分析。扫描在后台分成短小的步骤运行,绝不会在访客加载页面时进行,所以你可以关闭标签页。此后,ShieldWave 每天在你网站时间的 03:00 扫描。“设置”中可以更改时间和频率。

阅读概览

概览以一句关于你网站的话开头:“您的站点看起来是安全的”;“您的站点状况良好”,意思是没有紧急情况,但有几处可以更好;“1 个问题需要您关注”(或更多),最紧急的一项会在下面点名;或者“您的站点有被入侵的迹象”,下文会讲。

下面是上一次扫描的时间、下一次扫描的时间,以及满分 100 的得分。对每项检查,最严重的未解决问题会扣分:严重扣 30,高危扣 15,中危扣 8,低危扣 3。

深色主题下的 ShieldWave 概览:“您的站点状况良好”一句,以及上次扫描、下次扫描和得分;右侧是一颗标有网站地址的行星;待办列表分在“建议修复”和“仅供参考”之下;旁边是“防护”和“实时防护”面板。
一次扫描之后的概览。行星上方飞过的光点是对典型机器人流量的模拟,不是对你网站攻击的记录。截图显示的是英文界面。

再往下是你的待办列表。同类问题共用一行,所以几个过期的插件只算一项,而不是几项。这些行分为四组:

  • 立即修复:可能让别人进入你网站的问题,或者已经有人进入的迹象。
  • 建议修复:不紧急,但每一项都会让攻击更容易。
  • 请开发者检查:ShieldWave 不确定的发现项,例如高级插件中未经更新就出现的新 PHP 文件。了解网站的人一分钟就能判断,而且它们从不触发邮件。
  • 仅供参考:有空时可以做的小改进。

右侧一栏列出保护网站的措施:自动扫描、邮件提醒、已知漏洞检查、登录保护、双重验证登录和安全加固。凡是关闭的,都有一个指向“设置”的“开启”链接,“设置”标签上的数字显示还有多少项没开。列表下方的“ShieldWave 检查的内容”可以展开,列出每一项检查及其最新结果。

行星大致标出你网站的位置,上方是你的域名。位置来自 WordPress 中设置的时区,不会在网上查询任何东西。飞过它的光点是对典型机器人流量的模拟,正如行星下方的说明所言,不是对你网站攻击的记录。说明旁边的按钮可以让动画停止。

修复一个问题

点击一行即可展开。

展开的一个待办项:发现它的检查及时间,发现了什么,“修复方法”框,以及前往修复所在 WordPress 页面的按钮、“复制给开发者”和“忽略”。
展开的一项:发现了什么,如何修复,以及前往操作页面的按钮。截图显示的是英文界面。

展开的项目会说明是哪项检查在什么时候发现的,具体发现了什么,并在单独的框里给出“修复方法”。如果修复要在某个 WordPress 页面上进行,主按钮就会前往那里:过期的插件是“前往更新”,意料之外的管理员是“前往用户”,在你网站注册的人权限过高时是“前往常规设置”。如果 ShieldWave 自己的某个开关就能解决问题,例如文件编辑器或 XML-RPC,按钮会打开那个开关。

有些修复需要有服务器访问权限的人来做。“复制给开发者”会把一条现成的消息放进你的剪贴板:网站地址、发现了什么、在哪里、技术细节以及如何修复。粘贴到邮件里,你就没有什么需要解释的了。这场对话的其余部分,请见如何和开发者谈网站安全。底部的“技术详情”列出文件、匹配的规则和代码,或是漏洞的 CVE 编号和修复它的版本。

如果某项发现涉及你有意做的改动,点击“忽略”。它就不再计入得分和提醒,并移到列表下方的“已忽略”链接之下,在那里“还原”可以把它带回来。被忽略的文件如果再次变动,会自动回来。

修复之后,点击“立即扫描”。一旦扫描不再发现这个问题,该项就会从列表中消失。

当它说你的网站有被入侵的迹象

这个标题需要明确的证据:文件中的恶意代码,与官方版本不同的 WordPress、插件或主题 PHP 文件,不该存在的 PHP 文件,uploads 文件夹里的 Web shell(让人可以通过浏览器控制服务器的脚本),或者拥有管理员权限、却没有“管理员”角色的账号。ShieldWave 不确定的发现项从不触发它。

概览页,标题为“您的站点有被入侵的迹象”,下面是“现在该做什么”框,里面有三个步骤,恶意文件列在“立即修复”之下。
只有明确的证据才会出现这个标题。列表上方的三个步骤排在最前面。截图显示的是英文界面。

列表上方的“现在该做什么”框随后给出三个步骤:

  1. 先不要删除或编辑文件。打开“立即修复”下的各项,看涉及哪些文件或账号。
  2. 在你信任的电脑上,修改所有管理员、你的主机账号和数据库的密码。
  3. 用“复制给开发者”把详情发给你的开发者或主机商。他们可以用干净的备份恢复文件。

仓促删除文件会毁掉显示攻击者如何进入的痕迹,入口依然敞开。网站被黑的迹象更详细地介绍了第一个小时。

在“设置”中开启保护

“设置”是一个页面,左侧有分区菜单。

ShieldWave 设置:左侧是分区菜单,右侧是设为每天 03:00 的“自动扫描”,以及带有若干开关的“邮件提醒”部分。
自动扫描和邮件提醒默认开启。每个部分单独保存。截图显示的是英文界面。

“自动扫描”和“邮件提醒”默认开启。定时扫描之后,你只会收到关于新出现或变严重的问题的邮件,级别由你选择:“仅严重问题”、“严重问题”(默认)或“含较轻问题”。同一个问题不会发两次,每天最多四封,你自己发起的扫描之后也不发,因为你已经在看结果了。另有一个单独的开关,在有人成为管理员时立刻发邮件通知你。

“登录保护”部分,“保护登录”已开启,五次失败登录后锁定 20 分钟,并有一个可信地址;下面是“双重验证登录”部分,带“立即设置”按钮。
全新安装时登录保护默认开启。双重验证登录由每位管理员为自己的账号设置。截图显示的是英文界面。

全新安装时,“登录保护”默认开启;如果你是从旧版本更新的,请在这里打开。同一个地址连续失败登录五次(可以在 3 到 50 之间选择),该地址会被锁定 20 分钟,或你设置的时长。锁定始终是暂时的,可信地址永远不会被锁定,而你开启保护时所用的地址会加入可信列表。同一个开关还会保护你的用户名不被泄露:登录表单不再确认用户名是否存在,未登录的访客也无法通过 REST API、站点地图或 ?author= 手法读取它们。

“双重验证登录”由每位管理员为自己的账号设置。点击“立即设置”,把密钥添加到 Google Authenticator 或 Authy 这样的验证器应用,然后输入它显示的六位数代码。确认之后才会要求输入代码,同时你会得到十个一次性恢复代码,用于手机丢失的情况。ShieldWave 只显示一次,请保存在密码管理器里。

“安全加固”为每项保护各设一个开关。“关闭文件编辑器”会从后台移除插件和主题代码编辑器,这样被盗的管理员密码就无法通过它植入代码,更新仍然正常。“关闭 XML-RPC”会关闭攻击者用来批量猜密码的旧接口。如果你用的某个插件需要它,比如 Jetpack,设置里会点名。这两个开关不会改动任何文件,关闭开关会立即恢复原样。“阻止上传目录中的 PHP”会在 Apache 和 LiteSpeed 上往 uploads 目录的 .htaccess 文件里写入阻止规则,在 nginx 和 IIS 上则显示需要添加的规则,“立即检查”会测试它是否生效。“发送安全响应头”会补上服务器尚未发送的响应头。“虚拟补丁”会在威胁情报源有对应补丁时,拦截利用已安装插件已知漏洞的请求。“安全更新”在 WordPress 6.6 或更高版本上按插件逐个选择,让 WordPress 安装修复你所用版本已知漏洞的版本,更新失败时自动回滚。

“登录检查”和“垃圾信息陷阱”在你打开之前保持关闭。你可以允许用通行密钥代替密码登录,在登录、注册和密码重置表单上加入机器人验证(由浏览器解一道小题,或使用你自己密钥的 Cloudflare Turnstile),拒绝出现在数据泄露中的新密码,把登录页面移到你选择的地址,并在评论、注册、Contact Form 7 和 WPForms 中识别由程序填写的表单。如果其中某项把你挡在外面,插件的常见问题里给出了写入 wp-config.php 的那一行代码,以及关闭它的 WP-CLI 命令。

“请求防火墙”同样默认关闭。它在你的服务器上用本地规则检查请求,覆盖常见的注入攻击和可执行文件上传、按 IP 和国家封禁以及请求次数限制,不向任何地方发送请求数据。先用“仅记录”模式运行,看看它本会拦下什么,一两周后再切换到“拦截”。WordPress 需要防火墙吗?一文解释了它与主机商或 CDN 的防火墙如何搭配。

“实时防护”有三项功能,打开之前全部关闭,每项都有“发送的内容”说明:

  • 已知漏洞(含高级版) 在你运行的插件、主题或 WordPress 版本存在已公布的安全漏洞时发出警告,并指出修复它的更新。它发送你的 WordPress 版本以及插件和主题的名称与版本,从不发送网站地址。
  • 实时威胁情报源 大约每小时下载一次新的恶意软件规则和虚拟补丁。它不发送任何关于你网站的信息。
  • AI 复核 对扫描器自己无法判断的文件给出通俗的结论,依据是一小段摘录,其中的网站地址、邮箱地址和任何像密码或密钥的内容已先被移除,wp-config.php 从不发送。

启用插件后,它会询问一次是否开启防护。“开启防护”会打开漏洞查询、威胁情报源和虚拟补丁。AI 复核在那里有单独的勾选框,不勾选就保持关闭。概览中的“开启实时防护”会一次性打开全部三项实时功能,包括 AI 复核,“设置”里的开关则可以让你逐项选择。在廉价或繁忙的主机上,打开“附加检查”,再进入“高级”,把“扫描速度”设为“温和”。

历史记录

“历史记录”按天用简明的句子记录每次扫描和每项与安全相关的改动:发现或修复的问题、新管理员、安装、更新或删除的插件、新主题、WordPress 更新、登录失败后的锁定、发出的提醒和修改的设置。自 1.1.27 版起,它还会记录登录、创建和删除的账号、角色变更,以及谁编辑、发布或删除了文章或页面,只记标题,从不记内容。顶部的按钮可以只显示扫描记录,或只显示站点上的更改。

ShieldWave 历史记录:按天分组的条目,每次扫描显示发现了什么、如何启动、用时多久以及得分,其间是站点上的更改,顶部有“全部”、“扫描记录”和“站点上的更改”筛选。
历史记录用简明的句子告诉你发生了什么、什么时候发生的。截图显示的是英文界面。

如果出现了一个没人记得添加过的管理员,“历史记录”会显示这是什么时候发生的,而这正是你的开发者或主机商会问的第一件事。

哪些免费,哪些需要账号

本指南中的所有功能都无需账号,检查、定时扫描和邮件提醒没有任何限制。插件在启用或打开它的页面时不会发出外部请求。扫描期间,它会向 WordPress.org 请求官方校验值,并请求你自己网站上的几个地址。实时防护功能和账号连接只有在你打开之后,才会联系 shieldwave.io。泄露密码检查会联系 Have I Been Pwned 服务,Cloudflare Turnstile 会联系 Cloudflare,同样只在你打开之后。

账号用于在一个地方管理你的网站。在“设置 > ShieldWave 账户”下点击“使用 shieldwave.io 连接”,登录或创建免费账号并确认:你回到 WordPress 时已完成连接,无需复制密钥。shieldwave.io 上的控制台随后会显示该网站及其得分和未解决的问题,旁边是同一网站的外部扫描。所有账号(包括免费账号)都会显示所有已连接的网站。网站连接期间,插件会在你的首页添加一个不可见的标签,让 shieldwave.io 确认该域名是你的。这个连接只发送结果:控制台无法更改任何设置,也无法在你的网站上启动任何东西,断开连接会把网站及其结果从 shieldwave.io 上移除。你仍然可以在“改用 API 密钥”下粘贴 API 密钥。插件页面列出了每项可选服务会发送什么。

插件不做什么

  • 它不是完整的 Web 应用防火墙。它的“请求防火墙”在你的服务器上运行本地规则,不能替代主机商或 CDN 的过滤。刚安装时,插件只拒绝错误的登录和陌生人索要你的用户列表。其他拒绝都要在你打开相应功能后才会发生:被防火墙或虚拟补丁拦截的请求、没通过机器人验证或落入垃圾信息陷阱的表单、出现在数据泄露中的密码、对旧登录地址的访问,以及文件编辑器和 XML-RPC。
  • 它不会清理被入侵的网站。它显示恶意软件在哪里、该怎么办。被注入到主题、自定义插件、uploads 目录、文章或选项中的代码,它只在你逐项批准后才清除,并且先做备份、可以撤销。其他改动由你、你的开发者或主机商来做。
  • 它不做备份。“备份”检查会查找备份插件,并在最新备份超过 7 天时提醒你。入侵之后恢复网站,需要一份存放在服务器之外的干净副本。
  • 它不会给访客看到的页面增加任何东西,只有网站连接账号期间首页上那个不可见的验证标签除外。打开相应功能后,机器人验证会在登录表单上加入一道小题或 Cloudflare Turnstile,垃圾信息陷阱会在评论、注册和联系表单中加入一个隐藏字段。

同样值得做的是删掉你不再使用的插件。过期的 WordPress 插件介绍了先更新什么、删除什么。