【发布时间】:2011-09-06 04:23:50
【问题描述】:
我的服务器遇到问题,因为有时恶意软件会在文件末尾或开头添加代码。我已在我所知的范围内修复了安全漏洞。我的托管服务提供商已告知现在安全性足够,但我对我网站上的病毒/恶意软件活动变得偏执。我有一个计划,但我不太熟悉 sed 或 awk 或 gawk 等 Linux 编辑器,因此需要您的帮助。我可以使用我的 PHP 知识来做到这一点,但这将非常耗费资源。
由于恶意软件/病毒在文件的开头或结尾添加代码(以便网站不会显示任何错误),请您告诉我如何编写一个递归查看所有 .php 文件的命令(我将使用帮助来更改父目录和所有子目录中的其他类型的文件),并在文件的开头和结尾添加特定标签,例如 XXXXXX_START 和 YYYYYY_END。
然后我需要一个脚本来读取所有 .php 文件,并检查代码的第一行是否为 XXXXX_START,最后一行是否为 YYYYYYY_END,如果发现任何文件不同,则创建报告。
我将设置一个 cron 来检查所有文件并将报告通过电子邮件发送给我,如果发现任何差异。
我知道这不是 100% 万无一失的,因为病毒可能会在注释行之后添加数据,但这是我能想到的最佳选择。
我已经尝试了以下命令在开始时添加数据 -
sed -i -r '1i add here' *.txt
但这不是递归的,它只向父目录文件添加行。
然后我发现了这个 - BEGIN 和 END 是特殊模式。它们不用于匹配输入记录。相反,它们用于为您的 awk 脚本提供启动或清理信息。 BEGIN 规则在第一个输入记录被读取之前执行一次。在读取所有输入之后执行一次 END 规则。例如:
awk 'BEGIN { print "Analysis of `foo'" }
/foo/ { ++foobar }
END { print "`foo' appears " foobar " times." }' BBS-list
但不幸的是,我无法破译任何东西。
非常感谢您对上述细节的任何帮助。欢迎任何其他建议。
问候,
尼丁
【问题讨论】:
-
您最好为每个文件生成一个 SHA-256 哈希,并在托管服务提供商以外的地方(U 盘、笔记本电脑或其他地方)记录官方哈希.当您需要检查时,您会在托管服务提供商上重新生成文件的哈希值,然后将这次获得的内容与上次记录的内容进行比较。任何差异都是由于文件更改造成的。最可能的原因是您忘记了更新文件并且没有更改保存的哈希值,但它给您提供了有限数量的文件(希望)来查看。