0

我的服务器遇到问题,因为有时恶意软件会在文件的末尾或开头添加它们的代码。我已在我所知的范围内修复了安全漏洞。我的托管服务提供商已告知现在安全性足够,但我对我网站上的病毒/恶意软件活动变得偏执。我有一个计划,但我不太熟悉 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

但不幸的是,我无法破译任何东西。

非常感谢对上述细节的任何帮助。欢迎任何其他建议。

问候,

尼丁

4

3 回答 3

1

使用版本控制和/或备份;如果发生可疑活动,请关闭实时站点并从备份或版本控制源重新安装。

于 2011-09-06T06:46:47.463 回答
1

您可以使用以下内容修改文件(也创建名为 .bak 的备份文件):

find . -name "*.php" | xargs sed -i.bak '1iSTART_XXXX
$aEND_YYYY'

您可以使用以下 shell 脚本来检查文件:

for f in `find . -name "*.php" -print`
do
    START_LINE=`head -1 $f`
    END_LINE=`tail -1 $f`

    if [[ $START_LINE != "START_XXXX" ]]
    then
        echo "$f: Mismatched header!"
    fi

    if [[ $END_LINE != "END_YYYY" ]]
    then
        echo "$f: Mismatched footer!"
    fi
done
于 2011-09-06T07:17:45.493 回答
0
$ find . -type f | grep "txt$" | xargs sed -i -r  '1i add here'

将该命令应用于当前目录中或下的所有文件。您可能可以将 grep 逻辑折叠到 find 中,但我喜欢简单的咒语。

于 2011-09-06T04:29:09.517 回答