Catat setiap permintaan setiap program SUID?

12

Saya ingin memiliki file log yang berisi entri untuk setiap kali pengguna menjalankan program suid apa pun, yang berisi nama pengguna, program, dan argumen baris perintah apa pun yang diteruskan ke sana. Apakah ada cara standar untuk mencapai ini di Linux?

Kim
sumber

Jawaban:

7

Anda dapat mencatat semua doa dari executable tertentu (setuid atau tidak) melalui subsistem audit . Dokumentasinya agak jarang; mulai dengan halaman manual auditctl , atau mungkin tutorial ini . Distribusi terbaru mengirim auditdpaket. Instal dan pastikan auditddaemon berjalan, lalu lakukan

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

dan saksikan panggilan masuk /var/log/audit/audit.log(atau di mana distribusi Anda telah mengatur ini).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Saya kira kita bisa menulis skrip untuk mendapatkan semua binari SUID terlebih dahulu dengan menemukan dan kemudian menggunakan solusi Anda untuk masing-masing. Tidak elegan, tetapi tentu saja bisa dilakukan. Terima kasih!
Kim
2
@Kim: Saya pikir Anda dapat log semua doa dari akar biner setuid oleh pengguna tidak-akar dengan mengganti -F path=…dengan -F euid=0 -F 'uid!=0'atau sesuatu seperti itu. Saya tidak bisa melihat kait dalam kode setxid yang dipanggil olehexecve atau setxid khusus jam tangan di subsistem audit . Atau, tentu saja, Anda dapat mencatat setiap execvedan pasca proses.
Gilles 'SANGAT berhenti menjadi jahat'
Menarik. Tidak pernah mendengar hal ini sebelumnya. Saya ingin tahu seberapa banyak digunakan. Popian Debian tidak memiliki entri untuk auditd.
Faheem Mitha
findperintah untuk mendaftar semua file SUID:find / -xdev \( -perm -4000 \) -type f -print
1
@FaheemMitha Ini memiliki entri popcon
jofel