我遇到了服务器问题,因为有时恶意软件会在文件的末尾或开头添加代码。我已经根据我的知识修复了安全漏洞。我的托管服务提供商已经告知现在安全性已经足够,但我已经变得偏执于我网站上的病毒/恶意软件活动。我有一个计划,但我不熟悉Linux编辑器,如sed或awk或gawk,所以需要你的帮助。我可以使用我的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
但不幸的是,我无法破译任何东西。
对上述细节的任何帮助都非常感谢。欢迎任何其他建议。
问候,
尼丁
答案 0 :(得分:1)
使用版本控制和/或备份;如果发生可疑活动,请删除实时站点并从备份或版本控制源重新安装。
答案 1 :(得分: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
答案 2 :(得分:0)
$ find . -type f | grep "txt$" | xargs sed -i -r '1i add here'
将该命令应用于当前目录中或下的所有文件。你可以将grep逻辑折叠成find,但我喜欢简单的咒语。