Как 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 запущен.