Cara mencatat semua pemanggilan sistem yang dilakukan oleh suatu proses dan semua turunannya dengan auditd

13

dapat saya lakukan

auditctl -a always,exit -S all -F pid=1234

Untuk mencatat semua panggilan sistem yang dilakukan oleh pid 1234 dan:

auditctl -a always,exit -S all -F ppid=1234

Untuk anak-anaknya, tetapi bagaimana cara saya mencakup anak-anak cucu dan anak-anak mereka (saat ini dan masa depan)?

Saya tidak bisa mengandalkan (e) uid / (e) gid yang melakukan perubahan.

(perhatikan bahwa menggunakan stracebukan merupakan pilihan juga)

Stéphane Chazelas
sumber
4
omg, omg, omg, Stephane mengajukan pertanyaan ... (Saya datang ke sini hanya dari judul, berpikir strace -s^^ tetapi kemudian saya melihat siapa yang bertanya dan segera tahu "dia sudah tahu itu!") ... Stephane, bisakah Anda mungkin: 1) membuat daftar pids menggunakan opsi "tree" dari ps, 2) meluncurkan auditctl pada semua pids yang tercantum di dalam tree? (yaitu, dapatkah Anda memiliki beberapa "pid = ...."? atau beberapa auditctl, masing-masing satu?) atau cara "bodoh": auditctl segalanya, dan beberapa jenis egrep pada "pid | pid | pid" jika mereka muncul di setiap baris?) (peringatan: Saya tidak memiliki akses ke atm linux, jadi saya tidak tahu bagaimana info muncul)
Olivier Dulac
sebuah trik yang mungkin dapat Anda gunakan (sekali lagi, saya tidak tahu secara spesifik tentang auditd, juga tidak dapat saya coba saat ini): tentukan variabel lingkungan spesifik ketika meluncurkan orangtua paling atas, dan audit semua proses yang memiliki set variabel ini?
Olivier Dulac
@OlivierDulac, menandai proses dengan cara tertentu (yang diwariskan oleh anak-anak) adalah satu hal yang ada dalam pikiran saya. Tetapi daftar hal-hal yang dapat cocok dengan aturan audit cukup tipis (bahkan tidak sid, pgid ...). Mungkin yang SELinux, tapi saya tidak tahu apa-apa tentang SELinux. Mungkin memproses spasi nama?
Stéphane Chazelas
mungkin orang tua paling atas dapat berada di grup prosesnya sendiri? ( en.wikipedia.org/wiki/Process_group )
Olivier Dulac
2
Saya pikir mungkin menjalankan program Anda dalam wadah tertentu, jika itu pilihan bagi Anda. Jika saya memahami utas bug ini dengan benar, itu seharusnya bekerja dengan kernel ≥3.13. Selain itu, saya tidak melihat metode selain SELinux dan UID audit . Apakah AUID berlaku untuk use case Anda?
Gilles 'SO- stop being evil'

Jawaban:

1

Hanya mengusulkan sesuatu tanpa memiliki cara untuk mencobanya sekarang ... tetapi hanya menebak dari pos itu sendiri

Berikut ini adalah proposal solusinya:

Dengan asumsi id proses paling atas adalah dalam $ pid, dan bahwa di linux juga ps -Tmemberikan pohon proses (saya tidak dapat memiliki akses ke linux saat ini)

for eachpid in $(ps -T "$pid" | awk '{print $1}' | grep -v 'PID')
do
   auditctl -a always,exit -S all -F pid=$eachpid  >somelog_${eachpid}.log 2>&1
done

Tentu saja, ganti ps -T "$pid"dengan yang setara untuk linux, jika yang itu tidak bekerja di linux (atau menemukannya dengan awk-ing "pstree -p" output, pid akan berada di antara kurung)

Olivier Dulac
sumber
2
Terima kasih, tetapi itu tidak mencakup anak-anak "masa depan", dan menjalankannya dalam satu lingkaran sering kali tidak akan mencakup proses yang berumur pendek. Dan penggunaan ulang pid akan menyebabkan masalah juga.
Stéphane Chazelas
semua poin yang valid ... Maka saya percaya bahwa apa yang Anda inginkan mungkin adalah fitur "paling dicari", dan karena itu sudah dapat hadir di tingkat auditctl (tetapi tentu tidak muncul sekarang di halaman manual): mungkin ada untuk diusulkan (atau ... ditulis) untuk versi masa depan. Saya tidak ingat beberapa cara untuk "mengikuti pohon" proses ... tetapi Anda mungkin dapat menerapkan satu per 1) memiliki beberapa skrip melakukan setara "ps-T" biasa, 2) skrip lain membunuh yang pertama segera setelah pid mati 3) setiap kali daftar pid dari 1) berubah, tambah / hapus auditctl untuk pids itu? (tidak terlalu sulit untuk dilakukan)
Olivier Dulac
1
(Komentar terakhir saya tidak menyelesaikan pb untuk proses yang sangat singkat ... ini mungkin memerlukan sesuatu di tingkat kernel itu sendiri, dan saya tidak cukup tahu untuk memberi tahu Anda jika ada sesuatu untuk itu. Mungkin layak pertanyaan tentang mailing list kernel)
Olivier Dulac