SSH erişim girişimlerini günlüğe kaydetme


60

Bir ubuntu sunucusunu, bir telefon ya da dizüstü bilgisayar gibi uzak bir sistemden bağlanmak ve bağlanabilmek için openssh ile yapılandırdım. Sorun şu ki ... Muhtemelen tek ben değilim.

Sunucuya yapılan tüm giriş denemelerini bilmenin bir yolu var mı?


Standart olmayan bir portta sshd çalıştırmayı da düşünmelisiniz. Ayrıca, tek bir IP bir dakika içinde X kez yeni bir ssh bağlantısı kurmaya çalışırsa, yeni bağlantı girişimlerini reddetmek için iptables kurmak mümkündür.
ivanivan

Benim için sorun fail2ban değil sshguard, hiç duymadığım bir şeydi
Ray Foss

Yanıtlar:


55

Ubuntu sunucularında, dosyada ne zaman ve nereden giriş yaptığını bulabilirsiniz /var/log/auth.log. Orada, gibi girişleri bulabilirsiniz:

May  1 16:17:02 owl CRON[9019]: pam_unix(cron:session): session closed for user root
May  1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May  1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)

2
Sadece meraktan, Ubuntu var komutunu ? lastb
Bratchley

1
@JoelDavis Ubuntu 12.04'üm çalışıyor, ancak çıktı, çıktıya hiç benzemeyen tek bir satır. Belki de yapılandırılması gerekiyor.
Anthon


Ubuntu Server 14.04 ve üzeri /var/log/auth.log
sürümlerde

29

Fedora / CentOS / RHEL gibi Red Hat dağıtımlarında, dosya içinde oturum açan kullanıcıları kontrol edebilirsiniz /var/log/secure.

Daha fazla bilgi edinmek istiyorsanız bu Süper Kullanıcı Soru-Cevap bölümünü okuyun: SSH erişim girişimlerini nasıl günlüğe kaydedebilir ve SSH kullanıcılarının en son sunucumda ne yaptığını takip edebilirim? .


1
/var/log/secureUbuntu sistemlerimin hiçbirinde yok .
Anthon

@Anthon, şaşırtıcı bir şekilde /var/log/authbenim sistemlerimde yok. Bu yüzden cevap göndermeden önce, /var/log/securesistemimde bir Ubuntu sunucusu da olup olmadığını kontrol ettim :)
Ramesh

14.04, 12.04 ve eski makineyi 8.04'ün altında kontrol etmiştim. Hangi sürümü kullanıyorsun? O dosyayı almak için özel bir şey yaptın mı?
Anthon

@Anthon, test ettiğim sunucunun RHEL olduğunu ortaya koyuyor. Ancak, verdiğim bağlantıdaki cevap, 3 çeşit ubuntu varyasyonunu kontrol ettiğinizden beri hiç de tuhaf görünen Ubuntu içindi /var/log/secure.
Ramesh

6
/var/log/securebir Fedora / CentOS / RHEL ism'dir.
slm

8

Ubuntu'da SSH üzerinden giriş yapabilir ve /var/log/auth.logdosyanızın son x sayısını görüntülemek için Linux tail komutunu kullanabilirsiniz . SSH üzerinden giriş yaptığınızda, SSH günlüğünüzün son 100 satırını görüntülemek için aşağıdaki komutu kullanın:

tail /var/log/auth.log -n 100

hatta daha temiz

tail -100 /var/log/auth.log | grep 'sshd'

7

Ubuntu'daki varsayılan konfigürasyonun ssh girişlerini /var/log/authdosyaya KAYDETMEME olduğunu unutmayın . Bu, INFOkayıt seviyesidir.

Günlük dosyasında oturum açma girişimlerini içermesini istiyorsanız, /etc/ssh/sshd_configdosyayı (root olarak veya sudo ile) düzenlemeniz ve ' LogLevelden' INFOe değiştirmeniz gerekir VERBOSE.

Ondan sonra, sshd arka planını yeniden başlatın.

sudo service rsyslog restart

Bundan sonra, ssh giriş denemeleri /var/log/auth.logdosyaya kaydedilir .


4

Benim tavsiyem auditd kullanmak . Bu, Linux çekirdeğinin denetim alt sistemini kullanarak ve ciddiyse bunu yapmanın doğru yolunu kullanarak bence. Ve {security related} sorusunun niteliği göz önüne alındığında PAM'yi de kullanmalısınız . Sadece sahip varsayılan düzeyinde auditd ve PAM kurulu, otomatik olarak audit.log dosyasına kaydedilir tüm başarılı ve başarısız SSH girişimlerini elde edilmelidir. Yani hiçbir şeyi yapılandırmanız gerekmiyor, sadece auditd ve PAM kurulu. SLES için bu ilk elden biliyorum. Ve RHEL'e bahse girer ve Linux'un diğer kurumsal sürümleri de benzer şekilde çalışırdı.

http://manpages.ubuntu.com/manpages/precise/man8/auditd.8.html

auditd tarafından oluşturulan ham denetim günlüğünde aureport, auditd man sayfalarında açıklanan filtrelemek gibi bir şey kullanabilir , kendi metin ayrıştırıcınızı yazabilir veya yalnızca VI kullanabilir ve anahtar kelimeleri arayabilirsiniz.

işte /var/log/audit/audit.logbenim dosyam dışında, linux sunucuma bağlanıyorum.

node=shark type=CRED_DISP msg=audit(1480622612.317:2211277): user pid=117768 uid=0 auid=23456 ses=2201 msg='op=PAM:setcred acct="ron" exe="/usr/sbin/sshd" (hostname=abc415.mycompany.us, addr=172.16.152.5, terminal=ssh res=success)'
  • Yukarıdakilerden, sunucu adım köpekbalığı .
  • Bunun gibi pek çok satır audit.log'da, bunu exe = "/ usr / sbin / sshd" e dayanarak istiyorum.
  • ssh'd olan hesabın kullanıcı kimliği, bu örnek için 23456 olan auid'in değeridir.
  • auid ile ilişkilendirilmiş kullanıcı hesabının adı acct = "ron" ile belirtilir.
  • çoğu zaman denetim sistemi bağlanmaya çalışan sistemin dns ana bilgisayar adını kaydeder, ancak her zaman onun ip adresine sahiptir
  • Eğer böyle bir şey aracılığıyla bu dönüştürmek gerekir böylece, dönem zamanının olduğu giriş tarihi date --date @1480622612.317ile sonuçlanan Thu Dec 1 15:03:32 EST 2016ve benim sunucusuna ssh'd ne zaman olacağı.

Ne zaman res=failedkullanıcı adını teşebbüs neyi altında, sistemler bağlanmaya çalıştıkları şey görmek için bu ip adresleri ve hostnames araştırmak istediğinizde olduğunu. Ve açıkçası başarılı ssh, sisteminizde neler olduğunu anlamaya çalışır - örneğin hostname ile her gün aynı masada oturan iş arkadaşınız bob; = bobscomputer ve ip address = 192.168.5.5; Dün sabah saat 2: 00'de, ip adresi 10.10.5.6'daki kullanıcı adı altında başarılı bir ssh girişimi görürseniz, araştırmak için bob ile konuşmanız en iyisi olabilir. Başka biri tarafından olası saldırı girişimi? Ve kısa bir süre sonra, denetleme günlüğünde bob'nin hesabından kaynaklanacak su girişimleri var mı?

Eğer tekrarlayan görünce res=failedve auid=0ve acct=rootdaha sonra bu kök hesaba kutuya ssha çalışan birileri var, ve değiştirmek zaman olduğu /etc/hosts.denyKSHH'da için o IP adresine sahip.


2

Bunun eski olduğunu biliyorum ama başarılı ve başarısız ssh bağlantılarını / girişimlerini izlemek için bir şeyler yazdım. Sshguard kullanıyorsanız, yasaklanmış IP'lerin yanı sıra. Yazılım Python ile yazılmıştır. Birisi ssh ile başarılı bir şekilde bağlandığında, birileri ssh şifresini yanlış aldığında ya da bir çok başarısız girişim nedeniyle biri yasaklandığında size e-posta gönderecektir. Umarım bu, gelecekte bu sorunu arayan ve kodumu bulan birisine yardımcı olacaktır!

https://github.com/amboxer21/SSHMonitor

Python betiği için işlemi izlemek için bir bash betiği yazdım. Her dakika kök cron görevi ile çalışıp çalışmadığını kontrol eder. Çalışmıyorsa, başka bir işlem başlatır. Her dakika bir kök cron görevi tarafından adlandırılan .


-2

SSH komutları günlüğü için şimdiye kadar karşılaştığım en iyi şey root budur, bu araç yöneticinin kapsamlı oturum açma düzeyindeki her oturumdan her komutu almasına izin verir.

Ubuntu ve CentOS / RHEL’de ROOTSH’i kurmak ve yapılandırmak için bir senaryo yazdım.

Burada github indir link

https://gist.githubusercontent.com/mansurali901/e1e3acc7dca13aeca25b68a69571c60f/raw/b1b16f73ec9a974486e4c0c0d65a7d41f2eca718/setup_rootssh.sh

chmod +x setup_rootssh.sh ; sudo ./setup_rootssh.sh

Bunun github profilinizi tanıtmanın kötü bir yolu olduğunu düşünüyorum ... Temel olarak web'den bir betiği indirmek ve root kullanarak çalıştırmak istiyorsunuz. Aşağı oy verildi
UserK

Github profilimi tanıtmıyorum, sadece profili aşağı yükseltmek için bana oy verirseniz, insanların yukarıda olduğu gibi işleri basitleştirmeye çalıştım. üstelik yığın bordrosunun kural kılavuzunda hiçbir şey yazılı değildir, çünkü kod dosyalarını kişisel depolardan paylaşamayız.
Mansur Ali,

Lütfen kötü mizah anlayışımı affet. Her şeyden önce cevap Mansur için teşekkür ederim. Olumsuz olan şey, kök kullanıcı olarak bir sürü bilinmeyen komut yürütmenizi istemeniz gerçeğinden geliyor. En son yaptığımda, içinde bir 'rm-R' işareti vardı.
Kullanıcı

1
Sorun değil, bu arada yığın değişimi bana bu kadar uzun kodlar vermeme izin vermiyor, bu yüzden bu senaryoyu cevabımı yazdım. Linux çok basittir.
Mansur Ali
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.