Bagaimana Cara Menentukan Alamat IP dari siapa yang login ke Root?


15

Ada beberapa orang dengan akses root ke VM tertentu yang saya tangani. Saya ingin mencari tahu alamat IP mana yang digunakan untuk login ke root.


1
Anda dapat mengakses log untuk melihat perintah apa yang dilakukan sebelumnya sudo less /root/.bash_history
:,


6
Jika seseorang masuk sebagai root, mereka dapat melakukan hampir semua hal yang mereka inginkan untuk menghapus semua log yang mereka butuhkan juga ...
Comintern

4
Sebagai catatan, Anda harus melarang login langsung root. Ini adalah masalah keamanan besar.
fedorqui

Jawaban:


15

Anda dapat menggunakan lastperintah untuk mendapatkan informasi ini

# last|head
phemmer  ssh          192.168.0.24     Wed Aug 20 21:08 - 21:08  (00:00)
phemmer  pts/13       192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:07 - 23:07  (00:00)
phemmer  pts/15       192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  ssh          192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  :0                            Wed Jul 30 20:06   still logged in
reboot   system boot  3.13.2-gentoo    Wed Jul 30 20:05   still running

Seperti yang pasti Anda lihat, kolom ke-3 akan menunjukkan alamat IP jarak jauh jika terjadi SSH login.

lastmenggunakan /var/log/wtmpfile, jadi metode ini mirip dengan jawaban G-Man (hanya sedikit lebih sederhana karena Anda tidak harus menentukan path ke file).


14

Ini tergantung pada distribusi atau OS Anda. sshdakan mencatat setiap login di suatu tempat, dan akan memasukkan alamat IP yang relevan dalam login dengan format seperti ini:

Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297

Bagian itu konsisten, tetapi bagaimana Anda sampai di sana dapat bervariasi. Pada sistem berdasarkan systemd, gunakan journalctl:

journalctl /usr/bin/sshd

untuk mencantumkan semua pesan log dari yang sshddapat dieksekusi. Anda dapat mencabutnya untuk login root atau kriteria lainnya, dan batasi berdasarkan tanggal dengan --sincedan --until(lihat man journalctl).

Atau sebagai alternatif, pesan akan masuk (biasanya) di suatu tempat di /var/log. Secara umum sshdpesan masuk /var/log/auth.log, tetapi file yang tepat dapat bervariasi secara substansial. Yang mana pun itu:

grep sshd /var/log/auth.log

akan memberi Anda output yang setara secara luas untuk journalctlversi tersebut.



7

Anda tidak boleh mengizinkan orang untuk menggunakan sshdengan masuk secara langsung sebagai root (menggunakan kata sandi root atau sertifikat masuk /root/.ssh/authorized_keys) jika Anda ingin mengaudit siapa yang login sebagai root. Alih-alih, gunakan satu akun untuk setiap orang dan biarkan mereka gunakan sudountuk mendapatkan izin root. Dengan cara ini Anda akan menemukan di log yang sesuai (posisi file log tergantung pada distribusi yang Anda miliki, Anda bahkan dapat mengkonfigurasi daemon log untuk mengirim pesan ke mesin lain) pesan user john ran the command 'sudo rm -rf /'. Yah, mungkin Anda tidak akan dengan mudah menemukan satu perintah itu dalam log.


2
Pertama, ini tidak menjawab pertanyaan. Kedua, Anda harus selalu memiliki cara untuk menyelamatkan sistem. Apa yang terjadi ketika Anda menggunakan otentikasi LDAP, dan server LDAP Anda mati? Bagaimana Anda akan masuk ke dalam kotak?
Patrick

4
@ Patrick Pertama, pertanyaan dimulai dengan "ada beberapa orang dengan akses root ke VM tertentu", jadi masuk akal untuk menyarankan bahwa pendekatan yang tepat bukanlah mengaudit IP tetapi mengaudit pengguna. Kedua, masalah yang Anda ajukan tidak terkait: jika seseorang seharusnya mengakses mesin dalam keadaan darurat LDAP tidak berfungsi, ia harus memiliki akun lokalnya sendiri, dan jika ia seharusnya melakukan pekerjaan administrasi dalam keadaan darurat seperti itu, akun lokal harus memiliki sudokekuasaan. Tidak pernah ada alasan nyata untuk berbagi akun antara dua orang, tetapi seseorang dapat memiliki dua akun jika diperlukan.
pqnet

Pertanyaannya bukan menanyakan bagaimana mengubah desain mereka, tetapi menanyakan bagaimana cara mendapatkan alamat IP. Adapun solusi Anda yang lain, sekarang Anda memiliki akun lokal (mungkin beberapa), dengan kata sandi yang tidak pernah kedaluwarsa. Saya tidak akan menganggap itu sebagai peningkatan.
Patrick

@ Patrick apalah. Anda mengelola server Anda sendiri, saya mengelola server saya. Anda membuat poin Anda, orang akan membaca komentar Anda dan memutuskan.
pqnet

1
Peningkatan @Patrick atas apa? Memiliki akun pengguna yang terpisah untuk orang-orang yang terpisah hampir pasti merupakan peningkatan dibandingkan memiliki beberapa orang berbagi satu rootakun.
jw013

0

Dari uraian singkat yang Anda berikan, tampaknya akan lebih baik jika Anda membuat sistem pemantauan log. Ini akan membantu Anda memantau login, membuat peringatan, membandingkan data beberapa hari, dan ya tentu saja Grafik untuk semua itu.

Tetapi jika Anda perlu memonitornya sementara , Anda dapat menggunakan lastperintah.

last | grep root | grep -v tty | awk '{print $3}'

Ini akan memberi Anda daftar IPsatau Hostnamesdari mana, pengguna root telah login.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.