Registra ogni invocazione di ogni programma SUID?


12

Vorrei avere un file di registro che contenga una voce ogni volta che un utente esegue un programma suid, contenente il nome utente, il programma e tutti gli argomenti della riga di comando passati ad esso. Esiste un modo standard per raggiungere questo obiettivo su Linux?

Risposte:


7

È possibile registrare tutte le invocazioni di un eseguibile specifico (setuid o meno) tramite il sottosistema di controllo . La documentazione è piuttosto scarsa; iniziare con la pagina man auditctl , o forse questo tutorial . Le distribuzioni più recenti spediscono un auditdpacchetto. Installalo e assicurati che il auditddemone sia in esecuzione, quindi fallo

auditctl -A exit,always -F path=/path/to/executable -S execve

e guarda le chiamate registrarsi /var/log/audit/audit.log(o ovunque la tua distribuzione lo abbia impostato).


1
Immagino che uno potrebbe scrivere uno script per ottenere prima tutti i binari SUID con find e quindi utilizzare la soluzione per ognuno. Non elegante, ma sicuramente fattibile. Grazie!
Kim,

2
@ Kim: Penso che sia possibile registrare tutte le invocazioni di un binario root setuid da parte di un utente non root sostituendolo -F path=…con -F euid=0 -F 'uid!=0'qualcosa del genere. Non riesco a vedere un hook nel codice setxid invocatoexecve né un orologio setxid specifico nel sottosistema di controllo . Oppure, ovviamente, puoi registrare ogni execvee postprocess.
Gilles 'SO- smetti di essere malvagio'

Interessante. Non ne ho mai sentito parlare prima. Mi chiedo quanto sia ampiamente usato. Debian popcon non ha una voce per auditd.
Faheem Mitha,

findcomando per elencare tutti i file SUID:find / -xdev \( -perm -4000 \) -type f -print

1
@FaheemMitha Ha una voce popcon: qa.debian.org/popcon-graph.php?packages=auditd
jofel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.