GNU/Linux >> Belajar Linux >  >> Linux

Pengantar pemantauan akun pengguna Linux

Dahulu kala dalam sejarah UNIX, pengguna di server adalah pengguna UNIX yang sebenarnya dengan entri di /etc/shadow dan shell login interaktif dan direktori home. Ada alat bagi admin untuk berkomunikasi dengan pengguna, dan untuk memantau aktivitas mereka guna menghindari kesalahan bodoh atau berbahaya yang akan menyebabkan sumber daya server dialokasikan secara tidak adil.

Saat ini, basis pengguna Anda cenderung tidak memiliki entri di /etc/shadow , alih-alih dikelola oleh lapisan abstraksi, baik itu LDAP atau Drupal atau OpenShift. Kemudian lagi, ada lebih banyak server sekarang, yang berarti ada lebih banyak sysadmin yang masuk dan keluar untuk melakukan pemeliharaan. Di mana ada aktivitas, ada peluang untuk kesalahan dan kebingungan, jadi inilah saatnya untuk membersihkan alat pemantauan lama tersebut dan menggunakannya dengan baik.

Berikut adalah beberapa perintah pemantauan yang mungkin Anda lupakan (atau tidak pernah Anda ketahui) untuk membantu Anda melacak apa yang terjadi di server Anda.

siapa

Pertama, dasar-dasarnya.

who perintah disediakan oleh paket coreutils GNU, dan tugas utamanya adalah mengurai /var/log/utmp mengajukan dan melaporkan temuannya.

utmp file log pengguna saat ini pada sistem. Itu tidak selalu menunjukkan setiap proses, karena tidak semua program memulai utmp penebangan. Bahkan, sistem Anda mungkin tidak memiliki utmp berkas secara default. Dalam hal ini, who jatuh kembali pada /var/log/wtmp , yang mencatat semua login dan logout.

wtmp format file sama persis dengan utmp , kecuali bahwa nama pengguna nol menunjukkan keluar dan ~ karakter menunjukkan sistem shutdown atau reboot. wtmp file dikelola oleh login(1) , init(1) , dan beberapa versi getty(8) , namun, tidak satu pun dari aplikasi ini membuat file, jadi jika Anda menghapus wtmp , maka pencatatan dinonaktifkan. Itu saja baik untuk diketahui:jika wtmp hilang, Anda harus mencari tahu alasannya!

Output dari who --heading terlihat seperti ini:

NAME     LINE     TIME               COMMENT 
seth     tty2     2020-01-26 18:19   (tty2)
larry    pts/2    2020-01-28 13:02   (10.1.1.8)
curly    pts/3    2020-01-28 14:42   (10.1.1.5)

Ini menunjukkan nama pengguna setiap orang yang login, waktu login mereka dicatat, dan alamat IP mereka.

who command juga dengan rendah hati menyediakan cara POSIX resmi untuk menemukan pengguna mana Anda login sebagai, tetapi hanya jika utmp ada:

$ who -m
curly   pts/3   2020-01-28 14:44 (10.1.1.8)

Ini juga menyediakan mekanisme untuk menampilkan runlevel saat ini:

$ who -r 
     run-level 5   2020-01-26 23:58

w

Untuk sedikit lebih banyak konteks tentang pengguna, w sederhana perintah menyediakan daftar siapa yang masuk dan apa yang mereka lakukan. Informasi ini ditampilkan dalam format yang mirip dengan output who , tetapi waktu pengguna menganggur, waktu CPU yang digunakan oleh semua proses yang dilampirkan ke TTY login, dan waktu CPU yang digunakan hanya oleh proses saat ini. Proses pengguna saat ini tercantum di bidang terakhir.

Contoh keluaran:

$ w
 13:45:48 up 29 days, 19:24,  2 users,  load average: 0.53, 0.52, 0.54
USER     TTY     LOGIN@  IDLE    JCPU   PCPU WHAT
seth     tty2    Sun18   43:22m  0.01s  0.01s /usr/libexec/gnome-session-binary
curly    pts/2   13:02   35:12   0.03s  0.03s -bash

Atau, Anda dapat melihat alamat IP pengguna dengan -i atau --ip-addr pilihan.

Anda dapat mempersempit output menjadi satu nama pengguna dengan menentukan pengguna mana yang Anda inginkan informasinya:

$ w seth
 13:45:48 up 29 days, 19:27,  2 users,  load average: 0.53, 0.52, 0.54
USER     TTY     LOGIN@  IDLE    JCPU   PCPU WHAT
seth     tty2    Sun18   43:25m  0.01s  0.01s /usr/libexec/gnome-session-binary

utmpdump

utmpdump utilitas melakukan (hampir) persis seperti namanya:ia membuang konten /var/log/utmp file ke layar Anda. Sebenarnya, itu membuang salah satu utmp atau wtmp file, tergantung yang Anda tentukan. Tentu saja, file yang Anda tentukan tidak harus berada di /var/log atau bahkan bernama utmp atau wtmp , dan bahkan tidak harus dalam format yang benar. Jika Anda memberi makan utmpdump file teks, itu membuang konten ke layar Anda (atau file, dengan --output option) dalam format yang dapat diprediksi dan mudah diuraikan.

Biasanya, tentu saja, Anda hanya akan menggunakan who atau w untuk mengurai catatan login, tetapi utmpdump berguna dalam banyak hal.

  • File bisa rusak. Sedangkan who dan w seringkali dapat mendeteksi korupsi sendiri, utmpdump semakin toleran karena tidak melakukan penguraian sendiri. Itu membuat data mentah untuk Anda tangani.
  • Setelah Anda memperbaiki file yang rusak, utmpdump dapat menambal perubahan Anda kembali.
  • Terkadang Anda hanya ingin mengurai data sendiri. Mungkin Anda mencari sesuatu yang who dan w tidak diprogram untuk dicari, atau mungkin Anda mencoba membuat korelasi sendiri.

Apapun alasannya, utmpdump adalah alat yang berguna untuk mengekstrak data mentah dari catatan login.

Jika Anda telah memperbaiki log masuk yang rusak, Anda dapat menggunakan utmpdump untuk menulis perubahan Anda kembali ke master log:

$ sudo utmpdump -r < wtmp.fix > /var/log/wtmp

ps

Setelah Anda mengetahui siapa yang masuk ke sistem Anda, Anda dapat menggunakan ps untuk mendapatkan snapshot dari proses saat ini. Ini tidak menjadi bingung dengan bagian atas, yang menampilkan laporan berjalan pada proses saat ini; ini adalah cuplikan yang diambil saat ps dikeluarkan, dan kemudian dicetak ke layar Anda. Keduanya memiliki kelebihan dan kekurangan, sehingga Anda dapat memilih mana yang akan digunakan berdasarkan kebutuhan Anda. Karena sifatnya yang statis, ps sangat berguna untuk analisis selanjutnya, atau hanya sebagai ringkasan yang mudah dikelola.

ps perintah lama dan terkenal, dan tampaknya banyak admin telah mempelajari perintah UNIX lama daripada implementasi terbaru. ps modern modern (dari procps-ng package) menawarkan banyak mnemonik yang bermanfaat, dan itulah yang dikirimkan di RHEL, CentOS, Fedora, dan banyak distribusi lainnya, jadi itulah yang digunakan artikel ini.

Anda bisa mendapatkan semua proses yang dijalankan oleh satu pengguna dengan --user (atau -u ), bersama dengan nama pengguna yang ingin Anda laporkan. Untuk memberikan output konteks tambahan dari proses mana yang merupakan induk dari proses anak, gunakan --forest opsi untuk tampilan "pohon":

$ ps --forst --user larry
  PID TTY        TIME     CMD
  39707 ?        00:00:00 sshd
  39713 pts/4    00:00:00  \_ bash
  39684 ?        00:00:00 systemd
  39691 ?        00:00:00  \_ (sd-pam)

Untuk setiap proses pada sistem:

$ ps --forest -e
[...]
  29284 ?        00:00:48  \_ gnome-terminal-
  29423 pts/0    00:00:00  |   \_ bash
  42767 pts/0    00:00:00  |   |   \_ ps
  39631 pts/1    00:00:00  |   \_ bash
  39671 pts/1    00:00:00  |       \_ ssh
  32604 ?        00:00:00  \_ bwrap
  32612 ?        00:00:00  |   \_ bwrap
  32613 ?        00:09:05  |       \_ dring
  32609 ?        00:00:00  \_ bwrap
  32610 ?        00:00:15      \_ xdg-dbus-proxy
   1870 ?        00:00:05 gnome-keyring-d
   4809 ?        00:00:00  \_ ssh-agent
[...]

Kolom default berguna, tetapi Anda dapat mengubahnya agar lebih sesuai dengan apa yang Anda teliti. -o opsi memberi Anda kontrol penuh atas kolom mana yang Anda lihat. Untuk daftar lengkap kolom yang memungkinkan, lihat Penentu Format Standar bagian ps(1) halaman manual.

$ ps -eo pid,user,pcpu,args --sort user
   42799 root      0.0 [kworker/u16:7-flush-253:1]
  42829 root      0.0 [kworker/0:2-events]
  42985 root      0.0 [kworker/3:0-events_freezable_power_]
   1181 rtkit     0.0 /usr/libexec/rtkit-daemon
   1849 seth      0.0 /usr/lib/systemd/systemd --user
   1857 seth      0.0 (sd-pam)
   1870 seth      0.0 /usr/bin/gnome-keyring-daemon --daemonize --login
   1879 seth      0.0 /usr/libexec/gdm-wayland-session /usr/bin/gnome-session

ps perintah sangat fleksibel. Anda dapat memodifikasi outputnya secara asli sehingga Anda tidak harus bergantung pada grep dan awk untuk menemukan apa yang Anda pedulikan. Buat ps good yang bagus perintah, alias untuk sesuatu yang berkesan, dan sering menjalankannya. Ini adalah salah satu cara terbaik untuk tetap mendapatkan informasi tentang apa yang terjadi di server Anda.

pgrep

Terkadang, Anda mungkin memiliki gagasan tentang proses yang bermasalah dan perlu menyelidikinya alih-alih pengguna atau sistem Anda. Untuk melakukan itu, ada pgrep perintah dari psproc-ng paket.

Pada dasarnya, pgrep bekerja seperti grep pada output ps :

$ pgrep bash
29423
39631
39713

Alih-alih mencantumkan PID, Anda bisa menghitung berapa banyak PID yang akan dikembalikan:

$ pgrep --count bash
3

Untuk informasi lebih lanjut, Anda dapat memengaruhi pencarian Anda melalui proses berdasarkan nama pengguna (-u ), terminal (--terminal ), dan usia (--newest dan --oldest ), dan lainnya. Untuk menemukan proses milik pengguna tertentu, misalnya:

$ pgrep bash -u moe --list-name
39631 bash

Anda bahkan bisa mendapatkan kecocokan terbalik dengan --inverse pilihan.

pkill

Terkait dengan pgrep adalah pkill memerintah. Ini sangat mirip dengan kill perintah, kecuali bahwa ia menggunakan opsi yang sama dengan pgrep sehingga Anda dapat mengirim sinyal ke proses yang merepotkan menggunakan informasi apa pun yang paling mudah bagi Anda.

Misalnya, jika Anda telah menemukan bahwa proses yang diprakarsai oleh pengguna larry memonopoli sumber daya, dan Anda tahu dari w larry itu terletak di terminal pts/2 , maka Anda dapat mematikan sesi login dan semua turunannya hanya dengan nama terminal:

$ sudo pkill -9 --terminal pts/2

Atau Anda dapat menggunakan nama pengguna saja untuk mengakhiri semua proses yang cocok dengannya:

$ sudo pkill -u larry

Digunakan dengan bijaksana, pkill adalah tombol "panik" yang bagus atau solusi gaya palu godam saat masalah sudah tidak terkendali.

Pemantauan terminal

Hanya karena serangkaian perintah ada di terminal tidak berarti mereka selalu lebih baik daripada solusi lain. Catat kebutuhan Anda dan pilih alat terbaik untuk kebutuhan Anda. Terkadang sistem pemantauan dan pelaporan grafis adalah yang Anda butuhkan, dan terkadang perintah terminal yang mudah ditulis dan diuraikan adalah jawaban yang tepat. Pilih dengan bijak, pelajari alat Anda, dan Anda tidak akan pernah tahu apa yang terjadi di dalam bare metal Anda.

[Ingin mempelajari lebih lanjut tentang pemantauan dan keamanan? Lihat daftar periksa keamanan dan kepatuhan TI. ]


Linux
  1. 4 Cara Menonaktifkan Akun Root di Linux

  2. Pengantar file Linux /etc/fstab

  3. perintah su Linux

  1. Apa itu pengguna Linux?

  2. Linux – Semuanya Adalah File?

  3. Tidak dapat membuka kunci akun pengguna linux

  1. Izin Linux:Pengantar chmod

  2. Pemantauan Akses File Linux?

  3. Linux – Alasan Tidak Jelas Sebuah File Hanya-Baca?