GNU/Linux >> Belajar Linux >  >> Cent OS

Cara menggunakan auditd untuk memantau SYSCALL tertentu

SYSCALL terjadi setiap kali pengguna menjalankan perintah yang meminta kernel Linux menyediakan layanan. Ada beberapa SYSCALL seperti mount, umount, kill, open dll. SYSCALL ini dapat dipantau dengan sistem auditd. Mari kita ambil contoh “bunuh” SYSCALL.

Pengguna ingin menangkap siapa yang telah mematikan proses tertentu pada sistem. Ini dapat dengan mudah dicapai dengan menulis aturan auditd yang dapat menangkap SYSCALL kill kapan pun dipanggil.

Menginstal dan mengonfigurasi auditd

auditd sebagian besar sudah diinstal sebelumnya pada distribusi Linux. Jika tidak tersedia, Anda dapat menggunakan manajer paket OS masing-masing untuk menginstalnya. Misalnya, dalam kasus CentOS/RHEL:

# yum install auditd

Aktifkan layanan auditd untuk memulai saat boot dan memulainya menggunakan perintah “service”.

# systemctl enable auditd
# service start auditd

Mengonfigurasi aturan auditd untuk Memantau SYSCALL

Mari kita buat aturan untuk memantau SYSCALL "bunuh" yang dapat digunakan untuk menemukan semua proses pembunuhan.

1. Tambahkan aturan di bawah ini ke file konfigurasi aturan auditd /etc/audit/rules.d/audit.rules :

# vi /etc/audit/rules.d/audit.rules
-a exit,always -F arch=b64 -S kill -k kill_rule
Pada CentOS/RHEL 6, file konfigurasinya adalah /etc/audit/audit.rules bukannya /etc/audit/rules.d/audit.rules.

Di sini,
-jalan keluar,selalu – Di sini, kami memiliki aksi dan daftarnya. Setiap kali OS keluar dari panggilan sistem, daftar keluar akan digunakan untuk menentukan apakah peristiwa audit perlu dibuat.
-F arch=b64 – Opsi -F digunakan untuk membangun bidang aturan. B64 berarti komputer berjalan dengan CPU x86_64. (Apakah itu Intel atau AMD tidak masalah.)
-S kill – Opsi -S menentukan panggilan sistem yang ingin kita pantau.
-k – Ini adalah nama aturan yang ditentukan pengguna.

Catatan :“arch” adalah arsitektur CPU dari syscall. Jika sistemnya adalah OS 32 bit, Anda perlu mengaturnya dengan “arch=b32”.

2. Mulai ulang layanan auditd agar aturan baru berlaku.

# service restart auditd

3. Anda dapat memverifikasi apakah aturan yang ditentukan aktif, menggunakan perintah “auditctl -l”.

# auditctl -l
-a always,exit -F arch=b64 -S kill -F key=kill_rule

Verifikasi

Mari kita lihat contoh apakah aturan yang baru saja kita buat benar-benar berfungsi atau tidak. Kami hanya akan memulai proses "tidur 500" dan mematikannya. Ini akan menghasilkan log audit dengan semua detail seperti siapa yang mematikan proses (uid) dengan program/perintah apa, dll.

1. Memunculkan proses tidur sederhana di latar belakang.

# sleep 600 &

2. Periksa ID proses dari proses tidur dan matikan.

# ps -ef | grep sleep
root      2089  1784  0 15:12 pts/0    00:00:00 sleep 600
# kill -9 2089

3. Periksa file log audit /var/log/audit/audit.log untuk log audit pembunuhan. Log akan terlihat seperti yang ditunjukkan di bawah ini.

# tail -f /var/log/audit/audit.log
type=SYSCALL msg=audit(1529507591.700:304): arch=c000003e syscall=62 success=yes exit=0 a0=829 a1=9 a2=0 a3=829 items=0 ppid=1783 pid=1784 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="kill_rule"
type=OBJ_PID msg=audit(1529507591.700:304): opid=2089 oauid=1001 ouid=0 oses=1 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ocomm="sleep"
type=PROCTITLE msg=audit(1529507591.700:304): proctitle="-bash"

4. Terkadang log audit bisa sulit untuk mencari log yang kita minati. Dalam hal ini Anda juga dapat menggunakan perintah “ausearch” dengan kunci yang ditentukan dengan aturan. Misalnya:

# ausearch -k kill_rule
...
time->Wed Jun 20 15:13:11 2018
type=PROCTITLE msg=audit(1529507591.700:304): proctitle="-bash"
type=OBJ_PID msg=audit(1529507591.700:304): opid=2089 oauid=1001 ouid=0 oses=1 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ocomm="sleep"
type=SYSCALL msg=audit(1529507591.700:304): arch=c000003e syscall=62 success=yes exit=0 a0=829 a1=9 a2=0 a3=829 items=0 ppid=1783 pid=1784 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="kill_rule"


Cent OS
  1. Cara Mengabaikan/Menonaktifkan Entri Logging auditd Tertentu

  2. Bagaimana mengizinkan hanya pengguna non-root tertentu yang menggunakan crontab

  3. Cara menggunakan pengelola tugas di Ubuntu untuk memantau sistem

  1. Bagaimana cara menggunakan perintah 'cp' untuk mengecualikan direktori tertentu?

  2. bagaimana cara menggunakan kill SIGUSR2 di bash?

  3. cara menggunakan netstat pada port tertentu di Linux

  1. Cara Menggunakan Garam di Centos 8

  2. Bagaimana cara menggunakan yum untuk menginstal versi Paket tertentu?

  3. Linux – Bagaimana Cara Menggunakan Tiga Monitor Pada Laptop?