Я установил auditd
на 64-битную Ubuntu 12.04 для отслеживания некоторых неожиданных удалений ( хорошее обсуждение AuditD ). Это мое правило (удаление тегов с помощью ключевого слова deletes
):
-a exit,always -F arch=b64 -S unlink -S rmdir -k deletes
auditctl -l
показывает, что оно настроено:
LIST_RULES: exit,always arch=3221225534 (0xc000003e) key=deletes syscall=rmdir,unlink
Это прекрасно работает:
# mkdir xyx
# rmdir xyz
# ausearch -k deletes|grep 'xyz'
type=PATH msg=audit(1406147794.737:1880): item=1 name="xyz" inode=12386307 dev=08:04 mode=040755 ouid=0 ogid=0 rdev=00:00
но это не так:
# touch xyx
# rm xyx
# ausearch -k deletes|grep 'xyz'
Я вижу, что регистрируются все виды других удалений. Чего мне не хватает?
Я сталкивался с той же проблемой, просто нашел решение. Необходимо будет использовать unlinkat
в качестве трассировки системного вызова:
-a exit,always -F arch=b64 -S unlink -S rmdir -S unlinkat
, потому что rm
не использует unlink
. Спасибо theillien для ответ, отправленный здесь на SuperUser:
Если это
-a exit,always -F arch=b64 -S unlink -S rmdir -k deletes
является Вашей командой, где Вы говорите ей регистрироваться rm
? Я предположил бы, что это зарегистрируется rmdir
и не журнал rm
вообще (как показано Вашими 2 примерами, это кажется случаем).
Рассмотрение auditd расположения я предположил бы, что Вам нужно что-то как:
-a exit,always -F arch=b64 -S unlink -S rm -S rmdir -k delete