Cara melacak aktivitas pengguna super

21

Saya ingin tahu apa pendekatan terbaik untuk melacak aktivitas pengguna super di lingkungan Linux.

Secara khusus, saya mencari fitur ini:

  • A) Pencatatan penekanan tombol ke server syslog yang diamankan
  • B) Kemampuan untuk memutar ulang sesi shell (sesuatu seperti scriptreplay)
  • C) Idealnya, ini harus menjadi sesuatu yang mustahil (atau cukup sulit) untuk dielakkan tanpa memiliki akses fisik ke server.

Pikirkan hal ini dari sudut pandang keamanan / audit, dalam lingkungan di mana sysadmin yang berbeda (atau bahkan pihak ketiga) perlu diizinkan untuk melakukan operasi istimewa di server.

Setiap administrator akan memiliki akun nominalnya sendiri, dan setiap sesi interaktif harus sepenuhnya dicatat, dengan kemungkinan untuk mengulanginya jika perlu (misalnya, jika seseorang menggunakan mc untuk menghapus atau mengubah file penting, itu tidak akan cukup untuk ketahuilah bahwa orang itu mengeluarkan perintah mc; harus ada cara untuk melihat dengan tepat apa yang dilakukan setelah meluncurkan mc).

Catatan tambahan :

  1. Seperti yang ditunjukkan oleh womble, mungkin opsi terbaik adalah tidak meminta orang untuk masuk dengan hak root untuk melakukan perubahan pada server, tetapi melakukan hal itu melalui sistem manajemen konfigurasi. Jadi mari kita asumsikan situasi di mana kita tidak memiliki sistem seperti itu dan kita perlu memberikan akses tingkat root ke orang yang berbeda melalui server yang sama .
  2. Saya sama sekali tidak tertarik melakukan hal ini secara diam-diam: setiap orang yang masuk ke server dengan hak akses root akan sepenuhnya sadar bahwa sesi akan direkam (dengan cara yang sama, misalnya, operator pusat panggilan tahu bahwa percakapan mereka adalah sedang direkam)
  3. Tidak ada yang akan menggunakan akun pengguna super umum ("root")
  4. Saya menyadari ttyrpld dan sepertinya melakukan apa yang saya cari. Tetapi sebelum seperti itu, saya ingin tahu apakah ini dapat diselesaikan dengan menggunakan kernel yang tidak dimodifikasi. Saya ingin tahu apakah ada alat untuk Debian pada khususnya (atau Linux pada umumnya) yang memungkinkan audit penuh akun superuser tanpa menambal shell atau kernel.
mfriedman
sumber
2
(meraih kursi dan popcorn) ini pasti bagus ...
Avery Payne
+1 ... memikirkan hal yang persis sama. LOL
KPWINC
Perhatikan juga pertanyaan terkait ini: serverfault.com/questions/46614/…
sleske
Saya masih berpikir Anda harus menggunakan sistem manajemen konfigurasi. (wayang / cfengine / koki / systemimager / koki / dll ...)
KevinRae
Kevin, aku setuju denganmu. Lihat misalnya komentar saya untuk jawaban womble: serverfault.com/questions/50710/… . Sayangnya, itu bukan opsi pada lingkungan ini, dan itu sebabnya saya meminta untuk mengambil skenario di mana sistem manajemen konfigurasi tidak tersedia. Bagaimanapun, saya ingin mengucapkan terima kasih atas tanggapan Anda tentang topik ini.
mfriedman

Jawaban:

8

Untuk lingkungan dengan banyak admin, jangan gunakan root - jika memungkinkan.

Gunakan sudo untuk semuanya - sudo sangat bisa dikonfigurasi dan mudah didata.

Log semua / semua login atau su untuk me-root & menyelidikinya karena seseorang kemudian berkeliling di sekitar aturan yang Anda buat.

DisabledLeopard
sumber
3
Ya, sudo punya logging besar - semua orang "womble ran / bin / sh sebagai root" entri nyata membantu. Tanpa manajemen konfigurasi, orang akan selalu menjadi root untuk melakukan tugas admin, dan seseorang yang ingin melakukan sesuatu yang jahat bisa melakukan hal mereka di sesi root yang sama dengan melakukan tugas yang valid. Penutup yang sempurna.
womble
Kebijakan harus mencegah hanya keluar sebagai root untuk ini menjadi baik tentu saja, dan Anda tidak akan bisa tahu apa yang mereka lakukan setelah mereka pergi reservasi, tetapi mempersempit daftar tersangka ...
dmckee
2
Kebijakan: "sudo / bin / sh" = dipecat / diselidiki. Cukup jelas, solusi yang cukup mudah.
Karl Katzke
5
ada begitu banyak cara untuk mendapatkan shell dari program yang orang perlu jalankan secara sah (misalnya dari sudo vi) sehingga tidak ada gunanya hanya memblokir 'sudo /bin/sh'... kecuali Anda dapat yakin bahwa Anda telah memblokir setiap metode yang mungkin, Anda hanya akan mengeluarkan tantangan untuk menemukan lebih banyak cara yang tidak jelas. dalam hal apa pun: a) terkadang sudo / bin / sh diperlukan, dan b) ini masalah manajemen, bukan teknologi.
cas
Chris membuat poin bagus: Masalah manajemen, bukan masalah teknologi.
Karl Katzke
2

Pertama, jenis akses pengguna root apa yang ingin Anda pantau? Kesalahan admin bodoh atau orang dalam yang jahat? Yang pertama - Anda akan menginginkan solusi manajemen konfigurasi yang baik, seperti yang telah disarankan. Yang terakhir - jika mereka tahu apa yang mereka lakukan, Anda hanya bisa berharap untuk menangkap cukup untuk menunjukkan sesuatu terjadi layak diselidiki. Anda hanya ingin tahu bahwa beberapa bentuk kegiatan tidak sah dimulai, dan waspadai fakta itu. Jika mereka cerdas, mereka akan menonaktifkan sebagian besar pembuatan log yang Anda buat (dengan mengubah status server atau dengan membawa alat mereka sendiri) tetapi mudah-mudahan Anda dapat mengetahui awal dari insiden tersebut.

Yang sedang berkata, saya sarankan beberapa alat yang dapat Anda gunakan. Pertama, mulailah dengan kebijakan sudo yang baik (yang sudah disarankan). Kedua, periksa sudoshell jika Anda perlu memberikan akses shell root admin tersebut. Ketiga, mungkin taruhan terbaik Anda (meskipun paling intensif), lihatlah audit kernel linux.

romansa
sumber
+1 Terima kasih telah menyarankan sudoshell, dan khususnya untuk metioning sistem audit kernel Linux - yang bisa menjadi pelengkap yang sangat baik untuk apa yang saya coba capai.
mfriedman
2

Apa yang bisa Anda lakukan adalah menggunakan pustaka ini untuk sudo, beri semua orang akun pengguna mereka sendiri dan masukkan sudo -i di profil everyones. Dengan begitu mereka memiliki akses root instan dan setiap perintah yang mereka gunakan sedang dicatat.

blauwblaatje
sumber
+1 Saya tidak tahu tentang perpustakaan itu. Terima kasih sudah berbagi!
mfriedman
1

Mereka punya root. Yang terbaik yang bisa Anda harapkan adalah setidaknya melihat kapan mereka memutuskan untuk keluar dari utopia pemantauan kecil Anda, tetapi di luar itu yang mereka lakukan adalah dugaan siapa pun.

Pilihan "terbaik" yang dapat saya pikirkan adalah untuk mengamanatkan penggunaan otomatisasi dan manajemen konfigurasi yang luas, dan mengelola manifes Anda menggunakan sistem kontrol revisi dan menyebarkan pembaruan melalui itu. Kemudian cegah login root yang sebenarnya ke server. (Darurat "oh noes I Break something" akses dapat disediakan oleh kata sandi atau kunci SSH yang tidak didistribusikan dan tidak didistribusikan setelah digunakan setiap kali, dan semua orang dapat menonton sysadmin yang mengacaukan untuk memastikan mereka tidak ubah apapun).

Ya, ini akan merepotkan dan menyebalkan, tetapi jika Anda cukup paranoid untuk ingin memantau tindakan semua orang sampai tingkat ini, saya kira Anda berada di lingkungan yang tidak nyaman dan cukup menjengkelkan dengan cara lain yang dimenangkan ini. sepertinya masalah besar.

womble
sumber
Saya harus setuju dengan Anda. Opsi terbaik adalah tidak meminta orang untuk masuk dengan hak akses root untuk melakukan perubahan pada server, tetapi melakukan hal itu melalui sistem manajemen konfigurasi. Saya menemukan komentar Anda bermanfaat untuk memperbaiki dan mengklarifikasi pertanyaan saya.
mfriedman
1

Seperti yang dikatakan orang lain, hampir tidak ada cara untuk login pengguna dengan akses root penuh dengan cara mereka tidak dapat menonaktifkan, tetapi jika Anda menjalankan debian / ubuntu lihat snoopy , yang datang cukup dekat dengan apa yang Anda inginkan

snoopy hanyalah pustaka bersama yang digunakan sebagai pembungkus untuk fungsi execve () yang disediakan oleh libc untuk mencatat setiap panggilan ke syslog (authpriv). administrator sistem dapat menemukan snoopy berguna dalam tugas-tugas seperti pemantauan sistem ringan / berat, melacak tindakan administrator lain serta mendapatkan 'perasaan' yang baik tentang apa yang terjadi dalam sistem (misalnya apache menjalankan skrip cgi).

theecereceive
sumber
Terima kasih atas jawaban Anda. Apakah itu mendukung logging keystroke atau hanya perintah logging?
mfriedman
0

Saya setuju dengan komentar disableleopard tentang menggunakan sudo untuk semuanya. Ini tentu membuat hal-hal sedikit lebih mudah untuk dicatat.

Saya juga menambahkan cadangan file sejarah bash secara berkala. Tampaknya sering diabaikan tetapi kadang-kadang bisa menjadi sumber informasi yang bagus ... tanyakan saja pada Goldman Sachs. ;-)

http://www.guardian.co.uk/business/2009/jul/12/goldman-sachs-sergey-aleynikov

KPWINC
sumber
2
saya memiliki skrip .bash_logout yang membuat salinan riwayat waktu yang dicap untuk /var/lib/history/$user.$tty-or-IP.$yymmddhhss jika saya lebih peduli, saya akan menyiapkan proses akuntansi atau yang tepat alat audit ... tapi itu tidak benar-benar untuk keamanan, itu sehingga saya dapat mengetahui siapa yang melakukan sesuatu yang bodoh dan memberi tahu mereka a) tidak melakukannya lagi, dan b) bagaimana melakukannya dengan benar. meningkatkan level petunjuk junior jauh lebih merupakan masalah di sini daripada kepercayaan.
cas
1
Mengingatkan saya pada kisah di mana seorang tenaga penjualan junior menghancurkan kesepakatan jutaan dolar. Dia mengharapkan bos untuk memecatnya dan bos itu berkata, "Sial, tidak! Harganya hanya sejuta dolar untuk Melatih ANDA!" Aku bisa merasakan "level petunjuk" dari junior meningkat saat kita berbicara. ;-)
KPWINC
0

Itu akan sulit ...

root dapat berjalan dengan hati-hati skrip yang diuji dengan baik yang dapat melanggar semua langkah-langkah keamanan (membunuh proses pemantauan), rusak file log / potong mereka dll ... Tapi masih ...

Dengan asumsi beberapa admin diberikan privilege root bekerja sebagai sebuah tim. Dan root juga dapat membunuh proses pemantauan. Dan sayangnya, login / kata sandi itu menjadi publik. Atau mereka mendapatkan perusahaan yang tidak diinginkan.

Membuat beberapa akun root dengan UID 0 meskipun tidak disarankan, mungkin berlaku di sini.

Di / etc / ssh / sshd_config Mengubah baris menjadi: PermitRootLogin no

direkomendasikan. Jadi, Di sini, pengguna log in menggunakan akun normalnya (stempel waktu dicatat bersama (mungkin Alamat IP palsu)) Lalu beralih ke root. menggunakan perintah su

Dan Direct login sebagai root dicegah seperti ini.

Kita harus berpikir, apa yang tidak bisa dilakukan root di sini.

sudo harus bagus. Mencadangkan direktori / etc File Konfigurasi harus baik. / var / direktori File log harus diemail secara berkala atau disimpan di NFS terpisah.

Bagaimana dengan Menulis Skrip yang mengintegrasikan API dari perusahaan Gateway Mobile yang mengelompokkan SMS ke semua ponsel pengguna root, yang salah satunya di luar rumah untuk bekerja. Saya tahu itu akan menjengkelkan, tapi tetap saja.

Melanggar SSH sebagian besar dari pertanyaan.

Siddharth Bhattacharya
sumber
0

Kami memiliki pengaturan berikut di situs pelanggan:

  • Buka juga untuk mengautentikasi dengan kerberos di AD (akun pribadi)
  • Otorisasi hanya untuk grup AD tertentu dari admin Unix
  • grup sudoers == grup AD
  • Agen HIDS OSSEC pada setiap server dan manajer pada server yang diperkeras
  • OSSEC Web UI
  • Splunk 3 dengan Splunk-for-OSSEC

Ini akan mencatat setiap penggunaan sudo di server dan juga melacak perubahan apa pun pada file, pemasangan paket, proses yang mencurigakan, dll.

chmeee
sumber
0

Kami memiliki beberapa server terminal untuk mengakses semua peralatan kami, itu artinya seseorang dapat login ke apa saja baik dari server terminal atau jika seseorang memiliki akses fisik.

Sshd pada server terminal ditambal dengan http://www.kdvelectronics.eu/ssh-logging/ssh-logging.html , berfungsi dengan baik, tetapi tidak diperbarui untuk waktu yang lama. Saya telah sedikit memodifikasinya untuk bekerja pada openssh 4.7, tetapi gagal melakukannya dengan 5.1. Patch sshd segfaults, dan selama saya tidak punya cukup waktu untuk memperbaikinya, saya hampir beralih ke ttyrpld.

Dima Medvedev
sumber
0

Sejauh ini, inilah yang saya miliki:

  • sudosh : tampaknya mendukung A dan B (tidak sepenuhnya yakin tentang A sekalipun)
  • Sudoscript : tampaknya mendukung B (Sudoscript memiliki komponen bernama sudoshell, dan jika itu yang disarankan romansa, terima kasih atas tipnya)
  • Snoopy Logger atau sudo_exetrace : tidak persis apa yang saya cari, tetapi bisa menjadi pelengkap yang baik (terima kasih kepada theotherreceive dan blauwblaatje untuk tautan tersebut)

Apakah Anda tahu ada alat serupa lainnya yang tidak melibatkan menambal kernel atau komponen sistem lainnya?

mfriedman
sumber