我的服务器遇到问题,因为有时恶意软件会在文件的末尾或开头添加它们的代码。我已在我所知的范围内修复了安全漏洞。我的托管服务提供商已告知现在安全性足够,但我对我网站上的病毒/恶意软件活动变得偏执。我有一个计划,但我不太熟悉 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
但不幸的是,我无法破译任何东西。
非常感谢对上述细节的任何帮助。欢迎任何其他建议。
问候,
尼丁