KakapoWPKakapoWP
登录免费试用
帮助中心/Security/配置文件守卫

配置文件守卫

适用于:Kakapo Security·5 分钟阅读

首次采集:建立基准

首次启动时没有可比较的对象——这一轮会改为建立基准:为每个文件生成一个校验和(PHP 自带时用 sha256,否则用 md5),并记录大小、修改时间和所属区域。这个过程分批进行,出厂设置下每一步最多处理 400 个文件或 5 秒;您可以关掉窗口,稍后再继续。首次采集不显示百分比,因为总数还没有人知道——显示的是已读取的文件数和待处理的目录数。请先注意一点:守护程序会记住它所看到的一切,并把它当作正确状态。如果您对这套安装并不放心,请先运行文件完整性检查(核心对照 WordPress.org)和恶意软件扫描。在迁移或恢复之后,“丢弃基准”是干净的做法:所有校验和与检测结果都会被清除,下一轮重新采集。此操作不可撤销。

哪些会被检查——哪些不会

检查范围是从 WordPress 目录开始的整棵目录树。如果您的主机商把 wp-content 或插件目录放在外面,它会作为独立的根被一并纳入,并在显示中获得自己的前缀。位于安装目录上一层的 wp-config.php 会作为具名的单个文件被纳入,并在每一轮开始时首先检查——上级目录本身则被有意排除在外,因为在大多数主机商那里,那里放着别人的安装和备份。出厂设置下排除的是上传目录以及 15 个内置的缓存、临时和日志模式(其中包括 wp-content/cache、wp-content/upgrade、node_modules、.git、*.log);这两个开关都可以关掉,那样一来运行时间会变长,而且每次上传图片都会产生一条检测结果。自定义模式请在排除列表中补充:最多 100 条,每条最多 200 个字符。不带斜杠的模式会命中同名的任意路径段,带斜杠的模式则锚定在根部,* 只在一个路径段内生效。命中所有示例路径的模式会被拒绝——它会关掉整个监控,而从列表上却看不出来。登记时会统计并显示当前基准中有多少文件落入其中。不会被读取的有:超过大小上限的文件(出厂 16 MB,可在 1 到 512 之间设置)、无法读取的文件,以及符号链接之后的一切——这些情况会作为单独的数字出现在结果中,并且明确不算作“缺失”。

查看并应用检测结果

共有三种类型:已更改、新增、缺失。每个文件在列表中最多有一条未处理的检测结果,附带首次发现时间、最近发现时间和计数。比较的对象是最近一次确认过的基准,而不是上一轮运行——因此一条检测结果会一直留在那里,直到您把它应用为止。如果内容自行恢复到与基准一致(更新被回滚、文件被还原),该检测结果就会消失;一个已上报、随后又不见了的新文件,会连同路径写入活动日志,而不是被悄悄删除。“应用基准”会先展示将要发生的事,然后以每 500 条为一批执行:已更改的文件获得新的校验和,新增的文件被加入,缺失的文件被剔除。文件本身不会有任何改动——但旧的校验和之后就没有了,所以在按下之前,请把所有您无法解释的内容都看一遍。留档方面提供 CSV 导出,最多包含 2000 条未处理的检测结果,连同新旧校验和。有两个上限您应该知道:超过 3000 条未处理的检测结果之后仍会继续计数,但不再保存(界面会提示这一点),而历史记录中只保留最近 500 条已应用的检测结果。中断的一轮不会得出缺失文件——那需要一次完整的运行。

敏感文件的即时通知

出厂即启用。这里的“敏感”不是指“重要”,而是指:谁能改动这个文件,谁就能执行自己的代码,或者拿到访问凭据。这些文件包括 wp-config.php、服务器配置文件(.htaccess、.htpasswd、.user.ini、php.ini、web.config)、drop-in 文件(db.php、object-cache.php、advanced-cache.php、sunrise.php 及同类)、mu 插件,以及出现在本不该有 PHP 文件之处的 PHP 文件:上传目录中、WordPress 根目录中,以及 wp-content 里 plugins 和 themes 之外的位置。这些通知在每一批处理结束时就发出,而不是等整轮结束——在大型安装上,两者之间可能相隔数小时。最小间隔出厂设置为 15 分钟(可在 0 到 1440 之间调整);这段时间内新增的内容会被收集起来,随下一封通知一起发出,什么都不会丢失。一封通知最多列出 200 条,其余的只报数量。在一轮结束时以及中断时,剩余内容会不顾间隔限制直接发出。请用测试通知把这条链路走一遍:它会明确告诉您 wp_mail() 是接受了还是拒绝了这条消息——至于能否送达,由其后的服务器决定。您还可以额外把自定义模式登记为敏感项;未处理的检测结果会立即重新分类,以免列表出现两套说法。

自动运行与计划任务

出厂设置下,只有您手动启动时才会运行。打开自动运行后,可以在每小时、每天两次、每天(默认)和每周之间选择。第一次执行时间被有意安排在 5 分钟之后,以免在您正在后台工作时突然启动一轮。计算是从上一轮的开始时间算起,并留 5 分钟容差——否则一轮耗时较长的运行会一次比一次更晚。Cron 处理的是同样的分批任务,只要还有未完成的部分,它每 30 秒就重新排一次程;如果您此刻正在浏览器里亲自操作,它会等待 120 秒,不去抢方向盘。同一个任务不会有两位司机——一个随每次响应传递下去的令牌排除了这种情况;该锁在 60 秒后过期,以免被关掉的浏览器长期占住任务。如果您的安装中设置了 DISABLE_WP_CRON,启用时的提示会告诉您:只有当 wp-cron.php 被外部调用时,也就是配置了服务器 Cronjob,该轮才会启动。

这篇文章对您有帮助吗?