Bagaimana Anda bisa mencatat setiap perintah yang diketik

24

Bagaimana Anda bisa mencatat setiap perintah yang telah dimasukkan seseorang ke dalam shell?

Saya bertanya atas dasar melindungi diri Anda apakah Anda masuk ke server orang lain dan sesuatu rusak, atau apakah orang lain masuk ke server Anda (baik secara sengaja atau jahat).

Bahkan seorang pemula dapat memotong sejarah dengan unset historyatau membuat shell baru untuk menyembunyikan jejak mereka.

Saya ingin tahu bagaimana admin senior linux melacak perintah apa yang telah dimasukkan / perubahan yang dilakukan pada sistem.

spuder
sumber

Jawaban:

29

Lihat auditd . Jika Anda menambahkan

-a exit,always -F arch=b64 -S execve
-a exit,always -F arch=b32 -S execve

untuk /etc/audit/audit.rulessetiap perintah yang dieksekusi akan dicatat. Lihat: http://whmcr.com/2011/10/14/auditd-logging-all-commands/

Kemudian kirimkan ke server syslog.

Batu
sumber
Tentunya execvebukan satu-satunya syscall yang perlu Anda login. Kenapa tidak execvpjuga? Atau execl? dll
2rs2ts
Sebenarnya, saya perhatikan bahwa di halaman manual untuk execitu mengatakan bahwa " exec() Keluarga fungsi menggantikan gambar proses saat ini dengan gambar proses baru. Fungsi-fungsi yang dijelaskan dalam halaman manual ini adalah ujung depan untuk execve(2)." Jadi sementara saya tidak yakin tentang execveatsaya bisa merasa yakin tentang execkeluarga.
2rs2ts
5

Anda dapat menggunakan perintah skrip . Perintah ini tidak termasuk dalam POSIX, tetapi Anda akan merasa berguna untuk menyimpan dalam file semua penekanan tombol serta output dan pesan kesalahan. Anda nanti dapat melihat file. Jika Anda melakukan beberapa pekerjaan penting dan ingin menyimpan log semua aktivitas Anda, Anda harus menjalankan perintah ini segera setelah Anda masuk:

$ script
Script dimulai, file adalah typescript
$ _ Perhatikan bahwa ini adalah shell lain - anak dari shell login

Prompt mengembalikan dan semua penekanan tombol Anda (termasuk yang digunakan untuk backspace) yang sekarang Anda masukkan di sini direkam dalam file 'naskah'. Setelah rekaman Anda selesai, Anda dapat mengakhiri sesi dengan memasukkan keluar .
Catatan: Jika Anda memasukkan nama file skrip , sesi akan disimpan dalam nama file file daripada naskah , yaitu, naskah adalah default jika tidak ada nama file tertentu yang ditentukan.

Anda sekarang dapat menggunakan nama file kucing atau skrip kucing , apa pun kasusnya, untuk melihat sesi yang direkam.

Jika Anda ingin menambahkan sesi baru untuk penggunaan file lama: script -a Menambahkan sesi baru ke naskah, aturan standar yang sama berlaku di sini juga

Ini adalah salah satu cara admin sistem dapat melacak sesi. Semoga ini informatif dan bermanfaat. Tepuk tangan!

Menandai
sumber