Mencatat aktivitas "orang" di Linux

11

Jadi saya sudah membaca banyak posting yang berkaitan dengan ini dan baru saja muncul lebih bingung dari sebelumnya. Ada rekomendasi untuk berbagai alat termasuk ttyrec, snoopy, acct, rootsh, sudosh, ttyrpld, unix auditing dan banyak lagi.

Dalam kasus saya, saya ingin dapat mencatat semua perintah yang dijalankan pada sistem (seperti riwayat dengan cap waktu diaktifkan), tetapi saya juga ingin tahu siapa yang melakukan apa? Namun, kita semua masuk melalui ssh ke bagian kecil yang sama dari akun pengguna (tergantung pada apa yang kita lakukan). Bagaimana saya bisa mendapatkan log perintah termasuk informasi yang "akan" saya berikan kepada saya (sehubungan dengan koneksi) sehingga saya dapat melacak tindakan tersebut ke orang tertentu sebagai pose hanya "pengguna" generik?

Asimema
sumber
Snoopy harus dapat melakukan itu, dan mungkin banyak alternatif lain.
3
2
Panggilan sistem, sudo, riwayat shell, perubahan sistem file? Tidak semua proses pengguna harus dimulai dari shell login.

Jawaban:

9

The auditdpaket dirancang untuk ini, Anda dapat menggunakan PAM untuk menetapkan setiap login ID sesi sehingga Anda dapat melacak aktivitas di sebuah kembali akun untuk login asli (dan kemudian memeriksa log masuk untuk menentukan di mana orang yang login dari), dan penggunaan yang ausearchperintah untuk mencari peristiwa yang Anda tertarik. Anda dapat membaca panduan cukup komprehensif sini meskipun beberapa rincian halus akan perlu diubah untuk mencocokkan distribusi Anda. Redhat memiliki situs dengan FAQ dan beberapa dokumen lain di sini .

Karena ini tidak bergantung pada mencoba mencatat perintah yang diketikkan ke dalam shell atau mencatat riwayat perintah pengguna, itu harus mencatat hal-hal seperti membuka vi (yang mungkin bisa dilakukan lebih dari X atau dalam screen), menulis skrip (mungkin satu karakter pada suatu waktu dengan perintah cut / paste vi dan beberapa menjalankan :.!/usr/games/fortuneuntuk mendapatkan beberapa sumber data yang Anda mungkin tidak dapat login) kemudian jalankan :%!/bin/bashperintah.

DerfK
sumber
Ini mencari jawaban yang paling menjanjikan ... Audit memungkinkan Anda untuk melacak tindakan pengguna secara konsisten mulai dari login hingga logout, terlepas dari identitas apa pun yang mungkin diadopsi pengguna ini dengan menggunakan ID audit yang dibuat saat login dan diserahkan ke proses anak apa pun dari proses tersebut. proses login asli. Sedikit lebih banyak bacaan di bagian saya sekarang untuk mengetahui bagaimana sebenarnya menerapkannya. Terima kasih telah mempersempit banyak pilihan!
Ashimema
Permintaan maaf karena butuh waktu lama untuk menandai jawaban ini diterima .. Saya sudah mencobanya! Berhasil .. Ceria kawan!
Ashimema
4

Sudah ada berbagai alat yang Anda inginkan, yang pertanyaan Anda (dan jawaban ini) mengisyaratkan seperti sejarah, snoopy, auditd, log sudo, dll ... tetapi jika Anda memiliki "Subset Akun" yang digunakan orang, ada tidak ada cara di server untuk mengatakan siapa yang melakukan apa. Satu-satunya cara Anda dapat mengetahui secara spesifik siapa yang melakukannya adalah jika pengguna memiliki komputer sendiri yang mereka gunakan secara khusus dan menggunakan keylogger untuk mengetahui apa yang mereka ketik secara fisik pada keyboard itu.

Setiap kali Anda berbagi akun, Anda tidak dapat mengetahui apa yang sebenarnya terjadi, karena Anda akan memerlukan bukti lebih lanjut siapa yang menggunakan akun root atau akun bob atau apa pun yang dilakukan orang-orang Anda. Jika Anda mencoba untuk menyelidiki apa yang terjadi dalam insiden tertentu, Anda mungkin perlu meninjau kebijakan dan prosedur akses Anda, prosedur pemulihan Anda, dan mengevaluasi karyawan Anda dan / atau terlibat dalam pelatihan ulang jika perlu (atau kepercayaan mereka dengan akun sensitif) sebagai gantinya daripada langsung berfokus pada memburu siapa yang melakukan sesuatu, karena itu mungkin menyedot lebih banyak sumber daya daripada yang bisa Anda dapatkan dalam menemukan orang yang melakukannya.

Kalau tidak, Anda mungkin ingin melihat ke dalam teknik investigasi forensik untuk melacak apa yang terjadi (drive imaging, penelusuran log, dll.) Jika Anda tidak menyelidiki suatu insiden, lihatlah meninjau kebijakan Anda dan melembagakan pelacakan yang lebih baik dan verifikasi akun (hanya Anda yang memiliki root, hanya Bob yang menggunakan akunnya menggunakan sudo untuk mendapatkan akses ke hak istimewa yang lebih tinggi, menginstal dan memantau auditd, dll.) dan berhati-hati untuk tidak membuat lingkaran tepercaya Anda terasa seperti ditahan di bawah mikroskop atau Anda mungkin mengasingkan orang yang mencoba untuk menyelesaikan pekerjaan mereka (atau menghalangi mereka menyelesaikan pekerjaan mereka).

Bart Silverstrim
sumber
2

Linux auditd ( http://people.redhat.com/sgrubb/audit/ ) akan memberi Anda kekuatan paling besar dalam mengawasi siapa yang melakukan apa. Anda memiliki lebih banyak tentang hal itu dalam jawaban DerfK.

Namun, tidak ada yang akan memberi tahu Anda, yang masuk sebagai webadmin, jika ada n orang yang memiliki akses ke akun webadmin. Saya menyarankan untuk menggunakan akun bernama untuk setiap pengguna dan kemudian menggunakan su - atau sudo untuk menjalankan perintah dari akun "fungsi".

Paweł Brodacki
sumber