监视 Web 服务器目录中是否存在已更改的/新的文件

监视 Web 服务器目录中是否存在已更改的/新的文件

总结:是否有一个简单的方法来监视目录中的新文件、更改文件或删除文件?

细节:虚拟服务器上的一个简单的 WordPress 网站遭到了黑客攻击。没有什么大不了的。没有重要的项目/数据,也没有造成实际损失。似乎有人利用了某个漏洞插入了一些代码,从而允许更改一些现有文件并创建新文件。

显然,以后应该避免这种情况。除了显而易见的步骤(更改所有密码、更新所有软件等)之外,我还考虑过监控网络文件的变化。当然,这可以防止新的攻击,但至少可以帮助更快地检测到它。因此,虽然这肯定不是唯一的安全措施,但它可能是整体安全性的一小部分。

大多数 Web 文件都是静态的,不会发生变化。除了一些日志文件之外,不会创建新文件,并且现有文件在常规使用过程中会被删除。

因此,如果任何文件被更改、删除或添加,这可能是由于攻击造成的。是否有任何现有工具可以自动监控此情况?

创建一个包含所有当前文件及其哈希值的列表,然后以一定间隔重新运行此测试就足够了。如果检测到任何更改,则会发送通知。

在重新发明轮子之前,我想知道是否已经有一个工具可以完成这项工作。

答案1

您可以使用两个工具来管理完整性和监控文件操作。

为了诚信你可以尝试助手当某个文件被修改时会发出警告

对于活动,您可以使用audit子系统。例如命令:

auditctl -w /etc/hosts -p w -k monitor-hosts

将添加规则来监控/etc/hosts文件的写入

答案2

我宁愿建议在 WordPress 网站前面放置 WAF(Web 应用程序防火墙),以减少威胁行为者滥用 WordPress 网站的机会。一个免费的选项是使用 Nginx 或 Apache 的 ModSecurity。如果威胁行为者已经更改了文件,那么您基本上已经太晚了,因为您不知道他还可能更改了什么。WAF 会过滤 http/https 流量并在任何恶意模式到达服务器之前阻止它们。当然,您无法用它来防止零日攻击,但在我看来,WAF 比密切关注更改的文件是一种更好的保护。WordPress 还有一个数据库,可以通过发送数据库查询来滥用它,如果只查看更改的文件,您会错过这一点。

答案3

值得注意的是,您没有提到它运行在什么操作系统上 - 在处理安全问题和选择要安装的软件时,这是一个相当重要的考虑因素。

对于你提出的问题有很多工具可用。本地搜索引擎会给你很多建议,如果你明确搜索“基于主机的入侵检测系统”,许多答案都会相关。明显的候选者是 osiris、tripwire、integrit、samhain、debsums 和 tiger。但在你这样做之前,你可以轻松地设置自己的粗略脚本:

#!/bin/bash

CHECKFILE="/var/run/webfiles"

find /var/www/html -newer "$CHECKFILE" >/tmp/newfiles$$
if [[ -s "/tmp/newfiles$$" ]] ; then
   cat "$CHECKFILE" | mail -s "File changes" [email protected]
fi
touch "$CHECKFILE"

或者,简单地从 cron 内联:

find /var/www/html -newer /var/run/webfiles ; touch /var/run/webfiles ; false

.....然而,这是 XY 问题。Wordpress 在设计上是不安全的 - 它是自我修改代码,并且使用与正常使用相同的通道来控制修改。虽然基础包在保持这些问题分离方面做得很出色,但插件的质量差异很大。即使没有这些考虑,检测也不如预防那么有价值。

除了明显的步骤之外

...包括在部署期间使所有 PHP 和 javascript 文件变为只读(至少对于 Web 服务器 uid 而言)?

相关内容