Pada posting ini kami akan menunjukkan cara melacak dan melacak proses Linux pada sistem dengan dua alat, alat baris perintah ps dan strace. Alat sistem ini dapat membantu Anda mengidentifikasi proses sistem nyata dan asalnya.
Pada server hosting web bersama, sangat umum menghadapi masalah spam dan malware. Masalah ini dapat terjadi karena banyak alasan, dan terkadang spam atau serangan keluar ini diluncurkan dari proses sistem seperti skrip Perl menggunakan banyak sumber daya CPU.
Pada sebagian besar kasus ini, tampaknya "hanya" proses perl, tetapi inilah beberapa pertanyaan menarik:bagaimana Anda tahu dari mana asalnya? Bagaimana proses sistem Linux dapat menutupi nama aslinya? Apa cara paling mudah dan andal untuk mengetahui di mana proses Linux ini dimulai?
Hari ini kita akan mencoba menjawab semua pertanyaan ini dengan beberapa contoh praktis yang cepat dan mudah.
Melacak proses Linux menggunakan perintah ps
Mari kita lihat contoh nyata yang terjadi beberapa hari yang lalu di server khusus yang saya kelola.
Di salah satu situs web tertentu ada masalah spam keluar yang mengirim banyak email, tetapi tidak ada malware yang ditemukan di dalam folder public_html, juga semua kata sandi kotak email diubah, sama seperti kata sandi akun FTP/cPanel. Namun, ada cara penyerang menggunakan sistem Linux untuk mengirim email keluar.
Sumber email adalah proses yang berjalan di bawah pengguna "johndoe" yang tampaknya berbahaya, dan bukan seperti yang diklaim:
[[email protected] ~] ps -U johndoe -u johndoe u USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND johndoe 59289 4.0 0.0 43568 9528 ? Ss Jun08 110:01 httpd
Seperti yang Anda lihat, hal pertama untuk mengetahui prosesnya adalah dengan menggunakan perintah ps, seperti yang Anda lihat di bawah ini:
ps -U user -u user u
Ganti "pengguna" dengan pengguna sistem Anda yang sebenarnya.
Setelah itu, setelah proses yang mencurigakan terdaftar, gunakan ll perintah untuk mengetahui informasi lebih lanjut menggunakan PID its , seperti yang terlihat sebelumnya:
Seperti yang Anda lihat, proses mengklaim sebagai "httpd" untuk menyembunyikan dirinya sendiri (proses apa pun dapat mengubah judul prosesnya sendiri), sebenarnya ini adalah proses perl:
[[email protected] ~] ll /proc/59289/exe lrwxrwxrwx 1 johndoe johndoe 0 Jun 10 10:05 /proc/59289/exe -> /usr/bin/perl*
Namun, tidak ada file skrip yang terkait dengannya. Skrip kemungkinan besar disalurkan ke proses perl untuk menghindari meletakkan apa pun di sistem file di mana ia akan meninggalkan jejak.
Saya tidak tahu bagaimana skrip bisa berjalan di bawah pengguna ini, tetapi ini adalah instalasi WordPress yang rentan dengan banyak plugin usang dan malware yang disuntikkan yang dapat dengan mudah menyebabkan masalah seperti ini.
Membunuh proses pemerah pipi adalah hal terbaik untuk dilakukan dalam kasus ini:
kill -9 59289
Ganti “59289” dengan ID proses yang sebenarnya.
Strace:cara mudah lain untuk melacak proses sistem
strate adalah alat yang sangat berguna dan berguna yang digunakan oleh administrator sistem untuk men-debug dan mendiagnosis masalah terkait sistem dan proses di mana sumbernya tidak terlalu jelas dan tersedia saat melihat sekilas dan pertama.
Alat debug ini memungkinkan pemrogram dan pengguna sistem untuk mengetahui dengan cepat bagaimana suatu program berinteraksi dengan OS. Ini dilakukan dengan memantau panggilan dan sinyal sistem.
Seperti yang akan kita lihat pada contoh berikutnya, strace mengeluarkan setiap baris dalam jejak yang menyertakan nama panggilan sistem, argumennya, dan nilai kembalian (di dalam tanda kurung).
contoh jejak
Mari kita jalankan strace terhadap /bin/ls, dan simpan hasilnya ke dalam file bernama ls.txt
strace -o ls.txt /bin/ls
Untuk membaca output, jalankan saja:
more ls.txt
Tapi itu hanya contoh strace dasar. Bagian yang menarik datang ketika Anda dapat menelusuri proses server web dan mencari tahu apa yang sebenarnya dilakukannya. Mari kita ambil proses php-fpm sebagai contoh:
strace -p 18478 -s 80 -o /root/php-fpm.debug.txt
[[email protected]:~]strace -p 18478 -s 80 -o /root/php-fpm.debug.txt Process 18478 attached ^CProcess 18478 detached [[email protected]:~]
Dengan menekan CTRL + C Anda akan menghentikan jejak dan itu akan terlepas.
Anda juga dapat menentukan apa yang perlu Anda lacak, misalnya, jika Anda hanya perlu melacak panggilan sistem terbuka dan membaca, Anda harus menentukannya dalam sintaks strace, seperti yang Anda lihat di bawah:
strace -e trace=open,read -p 18478 -s 80 -o /root/php-fpm.debug.txt
Contoh strace cepat ini menggunakan beberapa opsi perintah, dijelaskan di sini:
-o filename: used to write the strace output into a file name. -p PID: here you must specify the system process ID. -s SIZE: sets the maximum string size to print (32 is the default).
Sekali lagi, untuk membaca hasilnya, jalankan saja:
more /root/php-fpm.debug.txt
Sekarang Anda tahu cara melacak proses Linux dengan mudah dengan dua perintah sederhana, dengan informasi ini Anda dapat dengan mudah melacak proses Linux untuk mengetahui apa yang sebenarnya dilakukan di dalam server Anda. strace membutuhkan sedikit lebih banyak waktu untuk memahami dari manual, tetapi ini adalah alat definitif untuk melacak proses Linux.
Bacaan lebih lanjut:
- strace pria
- mencari halo dunia
- perintah ps