Löschen von Dateien mit auditd ohne unlink verknüpfen?

982
theillien

Ich arbeite daran, eine auditd-Regel zu erstellen, die das Löschen von Dateien und Verzeichnissen aufzeichnet. Ich habe eine, die oft bei Online-Suchen auftaucht, aber ich bin mir nicht sicher, ob sie wirklich nützlich ist:

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

Es gibt eigentlich zwei. Jeweils eine für 32-Bit und 64-Bit.

Das Problem, das ich habe, ist, dass ich niemanden kenne, der unlinkDateien anstelle von löscht rm. Ich habe getestet, rmdass er vielleicht gerufen hat, unlinkaber es wird nichts im Protokoll angezeigt.

Fehlt mir etwas? Gibt es eine Möglichkeit, Dateilöschungen mit zu verfolgen rm?

0
Aufgrund der betriebssystemspezifischen Art der Frage migriere ich zu SuperUser. Dies ist technisch gesehen eine betriebssysteminterne Frage und keine Sicherheitsfrage. schroeder vor 8 Jahren 0
"Unlink" ist Windows-spezifisch, richtig? Wenn ja, benötigt der Beitrag "Windows" -Tags. JakeGould vor 8 Jahren 0
Nein, "unlink" ist sicherlich nicht Windows-spezifisch. Dies ist der Name der Unix-Systemfunktion, die das Herzstück des Unix-Programms "rm" bildet, und (mindestens) der Originalversionen von "rmdir". Programme, die als "unlink" bezeichnet werden, sind auf verschiedenen Unix-Systemen aufgetaucht, und in der Tat ist es [von POSIX angegeben] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/unlink.html). Es ist im Grunde ein Bare-Bones-Wrapper für den Systemaufruf "unlink", dh das Programm "rm", bei dem alle Sanitätsprüfungen entfernt werden. Ich weiß nicht, ob es unter Windows einen Unlink gibt. Scott vor 8 Jahren 1

1 Antwort auf die Frage

1
theillien

Ich rannte hin, um strace rm testzu sehen, ob er anrufen würde unlink. Es ruft unlinksich nicht selbst an, sondern stattdessen unlinkat. Ich habe das zur auditd-Regel hinzugefügt:

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

Dies wird bei jeder Dateilöschung ausgelöst, entweder durch root oder durch einen normalen Benutzer.

Die straceAusgabe:

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) = ?