用 WP-CLI 核验 WordPress 文件完整性:核心与插件巡检上手指南

枫少@KillBoy
枫少@KillBoy
枫少@KillBoy
管理员
287
文章
0
粉丝
信息安全1949字数 1375阅读4分35秒阅读模式
AI智能摘要
AI 生成的文章内容摘要

WP-CLI 的核心与插件校验命令会将本地文件与相应的校验和进行比对,适合在例行维护、版本变更后或发现异常时做一次可复核的文件完整性巡检。校验不一致表示文件与参考版本不同,并不等于已经遭到入侵;应结合变更记录、文件来源和部署时间判断。

巡检前:确认范围、备份与权限

先确认操作对象是获准维护的站点,并记录站点路径、WordPress 版本、语言环境和插件版本。多站点环境还要确认目标站点;WP-CLI 的 --url 参数可用于指定目标站点。

校验命令主要读取文件,但异常后的隔离、替换或恢复会改变站点状态。操作前应确保有可用的文件与数据库备份,必要时创建服务器快照,并确认备份能够恢复。建议用能读取站点文件、但不具备不必要高权限的系统账户运行 WP-CLI,避免以 root 身份执行后造成文件属主或权限变化。

进入 WordPress 安装目录,或通过 --path 明确指定目录:

wp --path=/var/www/example core version

先核对输出的版本是否与部署记录一致。校验需要获取参考校验和,因此运行环境还应能访问相应的 WordPress.org 服务。不要为了绕过证书问题而关闭 TLS 校验。

执行最小巡检

校验 WordPress 核心文件

wp --path=/var/www/example core verify-checksums

该命令将本地核心文件与对应版本的参考校验和进行比较。若站点使用非默认语言,或需要核对特定版本,可明确指定参数:

wp --path=/var/www/example core verify-checksums --version=6.5.3 --locale=zh_CN

示例中的版本号应替换为站点实际安装的版本。不要为了让结果“通过”而随意指定与现场不符的版本或语言环境。

巡检插件文件

检查所有插件:

wp --path=/var/www/example plugin verify-checksums --all

也可以只检查指定插件:

wp --path=/var/www/example plugin verify-checksums akismet

插件校验针对 WordPress.org 提供参考校验和的插件文件。自研插件、商业插件或其他没有对应参考校验和的插件,不能仅凭这条命令完成同等校验。插件的 readme.txt 等“软变更”在默认检查中可能不触发错误;如需将这类变化也纳入严格比对,可加上 --strict:

wp --path=/var/www/example plugin verify-checksums --all --strict

严格模式会扩大报告范围。升级流程或维护人员对说明文件做过修改时,结果可能反映的是正常变更,而不是安全事件。

复核异常结果

巡检结果应与版本、变更记录和文件来源一并留档。可以将输出保存到工单或巡检记录中,并注明执行时间、命令参数、站点路径和操作账户。

常见异常可按以下思路复核:

  • 文件校验不一致:确认近期是否有版本升级、补丁发布、人工修改或部署覆盖;再将本地文件与可信发布包中的对应文件比较。
  • 文件缺失:检查升级是否中断、部署是否遗漏文件,以及文件是否曾被有意移除。
  • 出现额外文件:先确认它是否属于站点自定义代码、部署工具或其他合法组件,不要仅凭“多出来了”就直接删除。
  • 插件无法匹配校验和:确认插件来源、名称和版本。若插件不是通过 WordPress.org 分发,或没有可用的参考校验和,该结果不能证明插件文件无异常。

官方命令文档列出了插件与核心校验的用途及参数,可在实际执行前核对具体选项:插件校验命令 和 核心校验命令。

异常文件的隔离与恢复

确认文件不属于已记录的正常变更后,先保存证据:记录路径、时间、属主和权限;按事件流程保留文件副本及校验结果。若怀疑站点正处于安全事件中,不要急于覆盖或删除文件,以免破坏后续分析所需的信息。隔离操作也可能影响站点运行,应先评估影响,并将证据副本保存到 Web 根目录之外、访问受控的位置。

恢复时,优先从可信来源取得与现场版本一致的核心或插件文件,再逐项比对和替换。若需要重装插件,应先备份其文件与相关数据;不要把重新安装视为无需评估的安全操作。对于曾做过本地修改的文件,先与版本控制、变更单或原始发布包核对,避免覆盖自定义实现。完成恢复后重新运行对应校验命令,并验证站点功能。

核心与插件校验覆盖的是相应范围内可比对的文件,不会替代对自定义代码、主题、上传目录、配置文件或数据库内容的独立检查。把结果当作一条可复核的证据,而不是入侵判定或全面安全结论,才能避免误删有效改动,也能让后续处置有据可查。

 
枫少@KillBoy
评论  19  访客  19
    • 梦魇舞者
      梦魇舞者 1

      WP-CLI 校验命令确实能帮大忙

      • 大宛良驹
        大宛良驹 1

        自研插件没法用这个校验有点遗憾

        • 冥府使徒
          冥府使徒 1

          平时巡检容易忽略权限问题,已记下

          • 墨痕浅淡
            墨痕浅淡 0

            遇到异常先备份再处理很关键

            • 话痨小星云
              话痨小星云 1

              严格模式会不会误报太多正常修改?

              • 不想上班的咸鱼
                不想上班的咸鱼 1

                多站点环境指定 URL 参数很实用

                • 顽皮的兔子
                  顽皮的兔子 1

                  文件多了不敢直接删,得先排查来源

                    • 开朗阳光
                      开朗阳光 1

                      @ 顽皮的兔子 可以先比对发布包,确认不是部署残留

                      • 青鸾鸣涧
                        青鸾鸣涧 1

                        @ 顽皮的兔子 额外文件也可能是缓存或上传产物

                        • 废话输出机器
                          废话输出机器 0

                          @ 顽皮的兔子 我一般先留证再隔离到站外

                        • 影刃歌
                          影刃歌 0

                          建议搭配版本控制一起看更稳妥

                          • 炽炎之翼
                            炽炎之翼 1

                            非官方插件没参考校验和怎么判断?

                            • Shadow风
                              Shadow风 1

                              恢复文件前记得核对自定义代码改动

                              • SunflareLeo
                                SunflareLeo 1

                                巡检输出最好带参数和时间一起存档

                                • 山间漫步
                                  山间漫步 2

                                  别把校验通过当成全站安全

                                  • 彩虹糖的梦
                                    彩虹糖的梦 1

                                    恢复后还要重新跑一遍命令确认

                                    • 终端猎手
                                      终端猎手 2

                                      上传目录和数据库内容还得单独检查

                                      • 鹿角铃
                                        鹿角铃 0

                                        不要为了过检随意指定版本或语言

                                        • 七星灯魂
                                          七星灯魂 0

                                          隔离副本放Web根目录外更稳

                                        匿名

                                        发表评论

                                        匿名网友

                                        拖动滑块以完成验证