Quindi la domanda qui è come determiniamo quale utente o processo di sistema sta smontando o montando un particolare punto di montaggio. Il montaggio e lo smontaggio di un punto di montaggio possono essere monitorati con l'aiuto di auditd. auditd è un componente dello spazio utente del sistema di auditing Linux. Ciò significa che gli utenti del sistema potranno eseguire auditd per configurare regole e avvisi per la funzionalità di controllo con il sistema Linux.
Una delle cose migliori di auditd è che è strettamente integrato con il kernel, quindi ci dà il potere di monitorare quasi tutto ciò che vogliamo, davvero. Per impostazione predefinita, non ci sono regole configurate. Dobbiamo scrivere le nostre regole in /etc/audit/rules.d/audit.rules file di configurazione che verrà letto e verranno applicate le azioni di controllo corrispondenti.
Installazione di auditd
1. I pacchetti auditd fanno parte dell'installazione predefinita dei sistemi RHEL/CentOS 7. Possiamo verificarlo con il seguente comando:
# rpm -qa | grep audit audit-libs-2.8.1-3.el7.x86_64 audit-libs-python-2.8.1-3.el7.x86_64 audit-2.8.1-3.el7.x86_64
2. Se il pacchetto non fa parte del nostro sistema, possiamo procedere e installarlo:
# yum install audit
3. Assicurarsi che il demone di controllo sia in esecuzione. Useremo il seguente comando:
# systemctl status auditd ● auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2018-06-17 06:56:06 UTC; 2min 37s ago Docs: man:auditd(8) https://github.com/linux-audit/audit-documentation Process: 657 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS) Process: 652 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS) Main PID: 653 (auditd) Tasks: 2 CGroup: /system.slice/auditd.service └─653 /sbin/auditd
In caso di CentOS/RHEL 6, puoi utilizzare il comando service per verificare lo stato del servizio auditd:
# service auditd status
Configurazione di regole auditd per monitorare il montaggio/smontaggio di filesystem
Configuriamo ora le regole di auditd richieste per monitorare il montaggio/smontaggio dei filesystem.
1. Aggiungi la seguente regola nel file /etc/audit/rules.d/audit.rules controlla le operazioni di montaggio e smontaggio. Notare che il nome di umount SYCALL è umount2.
# vi /etc/audit/rules.d/audit.rules -a always,exit -F arch=b64 -S mount,umount2 -k mount_umountSu CentOS/RHEL 6, il file di configurazione è /etc/audit/audit.rules invece di /etc/audit/rules.d/audit.rules.
Qui,
-a – Aggiunge la regola alla fine dell'elenco con l'azione.
sempre, esci – sono le azioni specificate con l'opzione -a.
-S – sta per SYSCALL (In uor case mount e umount2)
arch=b64 – specifica la regola per l'architettura a 64 bit.
2. Riavvia il servizio auditd con il comando “service”:
# service auditd restart Stopping logging: [ OK ] Redirecting start to /bin/systemctl start auditd.service
Verifica
1. Prendiamo il punto di montaggio /data come esempio e vediamo se otteniamo registri di controllo generati durante il montaggio/smontaggio di questo punto di montaggio.
# df -hP /data Filesystem Size Used Avail Use% Mounted on /dev/xvdf 976M 2.6M 907M 1% /data
2. Smonta questo punto di montaggio manualmente.
# umount /data
Monitora /var/log/audit/audit.log, cerca messaggi simili a quelli seguenti. Il uid= e gid= sezioni così come il pid= parte dei log di controllo può aiutare a determinare il processo o l'utente che esegue il comando:
# tailf /var/log/audit/audit.log ... type=SYSCALL msg=audit(1529223527.639:881): arch=c000003e syscall=166 success=yes exit=0 a0=55a5863d3880 a1=0 a2=1 a3=7ffe52c22320 items=1 ppid=2930 pid=3335 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=2 comm="umount" exe="/usr/bin/umount" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="mount_umount" type=CWD msg=audit(1529223527.639:881): cwd="/root"
Passare attraverso /var/log/audit/audit.log può essere opprimente se hai molte cose da controllare nel tuo server. Invece, puoi usare il comando “ausearch” con la chiave definita nella regola per filtrare i log solo relativi al montaggio e allo smontaggio. Ad esempio:
# ausearch -k mount_umount ---- time->Sun Jun 17 08:18:47 2018 type=PROCTITLE msg=audit(1529223527.639:881): proctitle=756D6F756E74002F64617461 type=PATH msg=audit(1529223527.639:881): item=0 name="/data" inode=2 dev=ca:50 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:unlabeled_t:s0 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=CWD msg=audit(1529223527.639:881): cwd="/root" type=SYSCALL msg=audit(1529223527.639:881): arch=c000003e syscall=166 success=yes exit=0 a0=55a5863d3880 a1=0 a2=1 a3=7ffe52c22320 items=1 ppid=2930 pid=3335 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=2 comm="umount" exe="/usr/bin/umount" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="mount_umount"Come monitorare i file /etc/shadow e /etc/passwd per le modifiche con Auditd?
Come utilizzare auditd per monitorare l'eliminazione di un file in Linux
Capire il controllo del sistema con auditd