fastCGI PHP 如何改变文件并逃避 auditd 的检测?

fastCGI PHP 如何改变文件并逃避 auditd 的检测?

有一天,我在 Debian 服务器上设置了一个小 shell 脚本,当文件发生变化时向我发送电子邮件;它看起来像这样:

#!/bin/sh

items=`find /var/www/vhosts -regex ".*/httpdocs/.*" -newer files_start -ls`
if [ ! -z "$items" ]
then
 touch files_start
 echo "$items" | mail -s "new file(s)" "[email protected]"
fi

我不断收到通知,一个神秘的 0 长度文本文件(可通过网络访问,可由 PHP 和 vhost 用户写入,但不能由 Apache 写入)每天被修改 2-3 次,因此我使用以下规则设置了 auditd。

auditctl -l
LIST_RULES: exit,always watch=/var/www/vhosts/path/to/file.txt perm=rwa key=wh1

我使用 ausearch 进行了测试,结果与预期一致:

...comm="touch" exe="/bin/touch"...

在收到下一封包含新修改日期的电子邮件后,我运行了 ausearch:没有新的匹配!

怎么会这样呢?

- - 更新 - -

我通过其他方式发现该进程是 PHP 作为 Apache 调用的 fastCGI 运行的。PHP 函数调用是:

touch('path/to/file.txt');

所以问题变成了:fastCGI PHP 如何修改文件并逃避 auditd 的检测?这开始看起来像是 auditd 的一个错误。

答案1

删除该规则并尝试以下操作:

auditctl -w <path-to-file> -p wa -k mystery-file

还要确保 /etc/init.d/auditd 已启动。

相关内容