GNU/Linux >> Belajar Linux >  >> Linux

Adakah yang tahu cara sederhana untuk memantau proses root spawn

Solusi 1:

Ini terdengar seperti pekerjaan yang sempurna untuk auditd. Setelah Anda menjalankan audit, layanan default pada sistem berbasis RedHat modern, Anda dapat membuat aturan yang akan melakukan apa yang Anda inginkan dengan mengeksekusi

auditctl -a task,always -F uid=0

Melanggar aturan perintah ini, memanfaatkan halaman manual secara berlebihan, kami menemukan bahwa:

   -a list,action
          task       Add  a  rule to the per task list. This rule list is used
                     only at the time a task is created -- when fork() or
                     clone() are called by the parent task. When using this
                     list, you should only use fields that are known at task
                     creation time, such as the uid, gid, etc.
          always     Allocate an audit context, always fill it in at syscall 
                     entry time, and always write out a record at syscall exit
                     time.

Jadi, selalu tuliskan catatan untuk tindakan ini setiap kali panggilan sistem fork atau tiruan keluar.

Opsi terakhir dapat dianggap sebagai filter string, dalam penggunaan -F uid=0 kita hanya membatasi kami untuk kasus di mana uid dari pemilik proses adalah 0.

Perhatikan bahwa aturan ini dapat dijalankan pada waktu proses dengan memastikan bahwa auditd telah dikonfigurasi dengan benar, dan menambahkan aturan tersebut
-a task,always -F uid=0
ke dalam file yang relevan untuk distribusi Anda, kemungkinan besar /etc/audit/audit.rules

Perlu diingat bahwa ini akan sangat berisik, dan siapa pun yang melakukan tinjauan log Anda harus siap untuk itu.

Solusi 2:

Saya tidak berpikir ada cara yang bersih untuk melakukan ini tanpa mengkompilasi ulang kernel Anda dengan CONFIG_PROC_EVENTS dan/atau CONFIG_KPROBES (walaupun saya ingin tahu apakah ada cara untuk melakukannya, jadi saya telah menjawab pertanyaan Anda).

Saya memang punya ide untuk menggunakan iwatch/inotify untuk pembuatan direktori di dalam/proc tetapi sepertinya tidak berhasil, begitu pula auditctl. Sepertinya pilihan terbaik Anda, meskipun kotor, adalah terus mengurai ps untuk perubahan dari skrip. Kode Perl berikut akan melakukannya, meskipun cenderung melewatkan beberapa dan mengabaikan ps (karena jika tidak akan memicu dirinya sendiri):

perl -e 'my %pids; while(1) { my @pids = `ps -U root -u root`; foreach (@pids) { next if /ps$/; ($pid) = /^\s*(\d+)\D/; if (!$pids{$pid}) { $pids{$pid}++; print "Process $pid created (" . `cat /proc/$pid/cmdline` . ")\n"; } } }

Linux
  1. Linux – Mengapa Setuid Tidak Bekerja??

  2. Apa Arti `chown Root.root $file`?

  3. Cara Portabel (posix) Untuk Mencapai Substitusi Proses?

  1. Cara Membuat Script Shell Selalu Jalankan Sebagai Root?

  2. Monitor Proses setara untuk Linux?

  3. Apakah ada cara untuk mendengarkan proses?

  1. Apakah Systemd Masih Tahu Tentang Runlevel?

  2. Bagaimana Bash Tahu Bagaimana Itu Dipanggil?

  3. Linux Setuid Tidak Berfungsi?