Отслеживание удаления файла с использованием AuditD без ссылки?

937
theillien

Я работаю над созданием правила audd, которое будет отслеживать удаление файлов и каталогов. У меня есть один, который часто появляется в онлайн-поисках, но я не уверен, что это действительно так полезно:

-a exit,always -F arch=b32 -S unlink -S rmdir -k deletion 

На самом деле их два. По одному для 32-битных и 64-битных.

У меня проблема в том, что я не знаю никого, кто использует unlinkдля удаления файлов вместо rm. Я проверил, rmможет быть, он действительно звонил, unlinkно в журнале ничего не отображается.

Я что-то пропустил? Есть ли способ отслеживать удаление файлов с помощью rm?

0
Из-за специфики вопроса, связанной с ОС, я перехожу на SuperUser. Технически это внутренний вопрос ОС, а не вопрос безопасности. schroeder 8 лет назад 0
`unlink` специфичен для Windows, верно? Если это так, посту нужны теги `Windows`. JakeGould 8 лет назад 0
Нет, `unlink` определенно не относится к Windows. Это имя системной функции Unix, которая лежит в основе программы Unix `rm`, и (по крайней мере) исходных версий` rmdir`. Программы с именем `unlink` возникли в различных системах Unix, и, фактически, это [определено POSIX] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/unlink.html). По сути, это пустая оболочка для системного вызова unlink, т. Е. Программа rm со всеми проверками работоспособности. Я не знаю, есть ли в Windows "unlink". Scott 8 лет назад 1

1 ответ на вопрос

1
theillien

I ran strace rm test to see if it was making any calls to unlink. It isn't calling unlink itself, but instead unlinkat. I've added that to the auditd rule:

-a exit,always -F arch=b32 -S unlink -S unlinkat -S rmdir -k deletion 

This will trigger on any file deletion whether by root or a regular user.

The strace output:

execve("/bin/rm", ["rm", "test"], [/* 17 vars */]) = 0 brk(0) = 0x60d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3a8e43c000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, ) = 0 mmap(NULL, 26788, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f3a8e435000 close(3) = 0 open("/lib64/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\356\0015;\0\0\0"..., 832) = 832 fstat(3, ) = 0 mmap(0x3b35000000, 3750152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3b35000000 mprotect(0x3b3518a000, 2097152, PROT_NONE) = 0 mmap(0x3b3538a000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18a000) = 0x3b3538a000 mmap(0x3b3538f000, 18696, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3b3538f000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3a8e434000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3a8e433000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3a8e432000 arch_prctl(ARCH_SET_FS, 0x7f3a8e433700) = 0 mprotect(0x3b3538a000, 16384, PROT_READ) = 0 mprotect(0x3b34a1f000, 4096, PROT_READ) = 0 munmap(0x7f3a8e435000, 26788) = 0 brk(0) = 0x60d000 brk(0x62e000) = 0x62e000 open("/usr/lib/locale/locale-archive", O_RDONLY) = 3 fstat(3, ) = 0 mmap(NULL, 99158576, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f3a885a1000 close(3) = 0 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, ) = 0 newfstatat(AT_FDCWD, "test",, AT_SYMLINK_NOFOLLOW) = 0 geteuid() = 0 unlinkat(AT_FDCWD, "test", 0) = 0 close(0) = 0 close(1) = 0 close(2) = 0 exit_group(0) = ? 

Похожие вопросы