Linux 使用awk阻止恶意软件病毒活动所需的帮助

Linux 使用awk阻止恶意软件病毒活动所需的帮助,linux,editor,sed,awk,gawk,Linux,Editor,Sed,Awk,Gawk,我的服务器有时会出现问题,因为恶意软件会在文件的末尾或开头添加代码。据我所知,我已经修复了安全漏洞。我的主机提供商已经通知我,现在安全性已经足够了,但我已经对我的网站上的病毒/恶意软件活动产生了偏执。我有一个计划,但我不太熟悉像sed、awk或gawk这样的Linux编辑器,所以需要你们的帮助。我可以用我的PHP知识做到这一点,但这将是非常资源密集型的 由于恶意软件/病毒会在文件的开头或结尾添加代码(这样网站就不会显示任何错误),请告诉我如何编写一个命令,递归地查看所有.php文件(我将使用帮助

我的服务器有时会出现问题,因为恶意软件会在文件的末尾或开头添加代码。据我所知,我已经修复了安全漏洞。我的主机提供商已经通知我,现在安全性已经足够了,但我已经对我的网站上的病毒/恶意软件活动产生了偏执。我有一个计划,但我不太熟悉像sed、awk或gawk这样的Linux编辑器,所以需要你们的帮助。我可以用我的PHP知识做到这一点,但这将是非常资源密集型的

由于恶意软件/病毒会在文件的开头或结尾添加代码(这样网站就不会显示任何错误),请告诉我如何编写一个命令,递归地查看所有.php文件(我将使用帮助对其他类型的文件进行更改)在父目录和所有子目录中,并在文件的开头和结尾添加一个特定的标记,例如XXXXXX\u start和yyyyy\u end

然后我需要一个脚本,它将读取所有的.php文件,并检查代码的第一行是否为XXXXX\u START,最后一行是否为yyyyyy\u END,如果发现任何文件不同,则创建一个报告

我会设置一个cron来检查所有的文件,如果发现任何不一致的地方,我会通过电子邮件将报告发送给我

我知道这不是100%万无一失的,因为病毒可能会在注释行之后添加数据,但这是我能想到的最好的选择


我已尝试使用以下命令在开始时添加数据-

sed -i -r  '1i add here' *.txt
但这不是递归的,它只在父目录文件中添加行

然后我发现了这个- 开始和结束是特殊的模式。它们不用于匹配输入记录。相反,它们用于向awk脚本提供启动或清理信息。在读取第一条输入记录之前,执行一次BEGIN规则。在读取所有输入后执行一次结束规则。例如:

awk 'BEGIN { print "Analysis of `foo'" }
     /foo/ { ++foobar }
     END   { print "`foo' appears " foobar " times." }' BBS-list
但不幸的是,我什么都不能破译

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

问候,

尼汀


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

使用版本控制和/或备份;如果出现可疑活动,请清除活动站点并从备份或版本控制源重新安装。

您可以使用以下方法修改文件(还可以创建名为.bak的备份文件):

可以使用以下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

如果这些文件不会定期更改,另一种方法可能是为每个文件计算一个校验和(例如md5sum),然后检查它是否仍然匹配。谢谢您的快速回答。我喜欢校验和的想法,但是随着我们在网站上不断地更改内容,文件也在不断地更改。你能解释一下你写的命令吗answer@Nitin:发布过程的一部分是在上载文件之前生成文件校验和,或者在上载文件之后立即生成文件校验和(不太令人满意)。如果你没有一个足够好的发布过程,现在可能是开始实施的好时机。说真的,如果你不使用版本控制,你就注定要失败。停止新闻报道,安排一两天的时间让某人进行设置,然后安排半天时间让全体船员学习基本知识。可能您的一些开发人员已经熟悉版本控制系统,至少足以运行“svnadmin init”和Google如何设置访问控制。您最好为每个文件生成一个SHA-256哈希,并将官方哈希记录在托管提供商以外的其他地方(U盘、笔记本电脑或其他地方)。当您需要检查时,请重新生成托管提供程序上的文件哈希值,然后将您此次获得的哈希值与上次记录的哈希值进行比较。任何差异都是由于文件更改造成的。最可能的原因是您忘了更新文件,并且没有更改保存的哈希值,但这会给您一个要查看的文件数量有限(希望如此)。请小心backticks中的find。如果遇到此错误,请使用Google搜索“参数列表太长”。或者在读取f时只使用
find-name“*.php”-print;在$'START\u XXXX\nEND\u YYYY'中使用case$(sed-n-e'1p'-e'$p'$f')继续;;以撒;回显“$f:不匹配”;完成
我们已经让SVN在wy服务器上为我们工作,我们能够将站点恢复到正常状态。我们有一个提交后代码,它会自动在服务器上部署代码,但问题是恶意软件也会编辑.svn文件夹中的文件。SVN版本控制是每个开发公司不可或缺的一部分,但这并不能保证任何事情。我正试图追踪正在编辑我的文件的程序,但在此之前,我需要让我的系统充分工作,以使我的业务不受影响。
find . -name "*.php" | xargs sed -i.bak '1iSTART_XXXX
$aEND_YYYY'
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