Takže máte situaci, kdy se určitý soubor často maže a musíte prozkoumat, kdo soubor odstraní. Může to být použití nebo systémový proces, který může smazat soubor. Služba auditd může být dokonalým nástrojem pro prošetření takových problémů s mazáním souborů. Příspěvek nastiňuje kroky k instalaci a konfiguraci auditovaného ke sledování mazání souboru /var/tmp/test_file.
Red Hat Enterprise Linux poskytuje funkci pravidel auditu pro protokolování činností se soubory prováděných uživateli nebo procesy. Toho lze dosáhnout konfigurací pravidel auditu.
Instalace auditována
1. Většinou najdete auditované již nainstalované v distribucích založených na redhat. Pokud ne, nainstalujte jej pomocí yum:
# yum install audit
2. Dále se ujistěte, že je služba spuštěna při spouštění a spusťte službu.
# systemctl enable auditd # systemctl start auditd
Při restartování auditované služby se doporučuje v CentOS/RHEL 7 použít místo systemctl příkaz „service“. Pokud použijete příkaz systemctl, můžete narazit na níže uvedenou chybu:
# systemctl restart auditd Failed to restart auditd.service: Operation refused, unit auditd.service may be requested by dependency only (it is configured to refuse manual start/stop). See system logs and 'systemctl status auditd.service' for details.
3. Zkontrolujte stav služby:
# systemctl status auditd ● auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2018-06-16 03:29:19 UTC; 8s ago Docs: man:auditd(8) https://github.com/linux-audit/audit-documentation Process: 1951 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS) Process: 1946 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS) Main PID: 1947 (auditd) Tasks: 2 CGroup: /system.slice/auditd.service └─1947 /sbin/auditd
Konfigurace pravidel auditu
1. Chcete-li nakonfigurovat pravidla auditu, přidejte do souboru /etc/audit/rules.d/audit.rules následující řádek:
# vi /etc/audit/rules.d/audit.rules -a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -S rmdir -k delete -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -S rmdir -k deleteNa CentOS/RHEL 6 je konfigurační soubor /etc/audit/audit.rules místo /etc/audit/rules.d/audit.rules.
Výše uvedená pravidla sledují změny všech souborů v systému, jako je odpojení, přejmenování, smazání atd. Volitelně můžete zadat úplnou cestu ke sledovanému adresáři, například pokud chcete sledovat smazání souborů pouze v konkrétním souboru systém můžete určit bod připojení přidáním následujícího pole do pravidla auditu:
-F dir=[directory or mount point]
Výše definovaná pravidla se tedy nyní stanou jediným pravidlem, jak je ukázáno níže:
# vi /etc/audit/rules.d/audit.rules -a always,exit -F dir=/var/tmp -S unlink -S unlinkat -S rename -S renameat -S rmdir -k delete_var
Upozorňujeme, že jsem také upravil klíč v pravidlech.
2. Aby pravidla nabyla účinnosti, musíte restartovat auditovanou službu.
# service auditd restart
3. Pomocí příkazu ‚auditctl -l‘ zobrazíte aktuálně aktivní auditovaná pravidla.
# auditctl -l -a always,exit -S rename,rmdir,unlink,unlinkat,renameat -F dir=/var/tmp -F key=delete_var
Zkontrolujte protokoly auditu pro odstranění souboru
1. Nyní můžete zkusit smazat soubor „/var/tmp/test_file“, abyste zjistili, zda auditované pravidlo, které jsme právě vytvořili, zaznamenává tuto událost do souboru protokolu.
2. Tím se zaprotokolují operace mazání souborů do souboru /var/log/audit/audit.log , můžeme však použít příkaz ausearch s klíčem zadaným v pravidle auditu (-k) pro prohlížení událostí:
# ausearch -k delete_var ... ---- time->Sat Jun 16 04:02:25 2018 type=PROCTITLE msg=audit(1529121745.550:323): proctitle=726D002D69002F7661722F746D702F746573745F66696C65 type=PATH msg=audit(1529121745.550:323): item=1 name="/var/tmp/test_file" inode=16934921 dev=ca:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:user_tmp_t:s0 objtype=DELETE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529121745.550:323): item=0 name="/var/tmp/" inode=16819564 dev=ca:01 mode=041777 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:tmp_t:s0 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=CWD msg=audit(1529121745.550:323): cwd="/root" type=SYSCALL msg=audit(1529121745.550:323): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=9930c0 a2=0 a3=7ffe9f8f2b20 items=2 ppid=2358 pid=2606 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=2 comm="rm" exe="/usr/bin/rm" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="delete_var"
Jak můžete vidět ve výše uvedeném protokolu, uživatel root(uid=0) smazal (exe=”/usr/bin/rm”) soubor /var/tmp/test_file.