Как fastCGI PHP изменяет файл и избегает обнаружения при помощи audd?

На днях я установил небольшой сценарий оболочки на сервере Debian, чтобы он отправлял мне электронное письмо при изменении файлов; это выглядит так:

#!/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)" "security@example.com"
fi

Я продолжал получать уведомления об одном загадочном текстовом файле 0-длины (доступном через Интернет, доступном для записи для PHP и пользователя vhost, но не Apache), который изменялся 2-3 раза в день, поэтому я настроил audit со следующим правилом.

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 работает как fastCGI, вызываемый Apache. Вызов функции PHP:

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

Возникает вопрос: как fastCGI PHP изменяет файл и избегает обнаружения с помощью auddd? Это начинает выглядеть как ошибка audd.

1 ответ

Удалите это правило и попробуйте это:

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

Также убедитесь, что /etc/init.d/auditd запущен.

Другие вопросы по тегам