SSH bruteforce [kapalı] nasıl durdurulur / önlenir


22

Ağ yönetiminde çok yeniyim, o yüzden lütfen henüz tecrübeli olmadığımı düşünün.

Plesk panelli bir Ubuntu kök sunucum var.

Dün arkadaşlarım ve ben TS3'teki konuşma kalitesinin çok kötüleştiğini fark ettik. Sunucuya ping gönderdim ve çok yüksek bir paket kaybı oldu. Ondan sonra biraz googled ve bir olduğunu öğrendim auth.log. İndirdim ve biraz kaydırdım, sonra şunu buldum:

May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102 
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102

Birisi SSH üzerinden defalarca giriş yapmaya çalıştı gibi görünüyor. Biraz kaydırdım ve bu kişinin birçok farklı kullanıcı adı kullanmaya çalıştığını gördüm:student, tech, psi, news,...

Dosyada bu girişlerin yüzlerce tanesi gösterildi.

Veri merkezimin web sitesinde trafik istatistiklerine baktım. Saatte sadece 17 MB idi. 100Mbit bir Omurgaya sahibim, bu yüzden veri transferinin kendisi sorun değil gibi görünüyor.

Şu anda hiçbir şekilde sunucuya erişemiyorum.

Sorum şu: nasıl tekrar erişebilirim, bu saldırıyı nasıl bastırabilir ve aşağıdaki atakları önleyebilirim?


Halen eşyalarımı bu bölümde öğreniyorum .... Ama bu liman kapı çalmak için iyi bir kullanım olmaz mı?
mjrider


Yanıtlar:


37

Nasıl erişilir?

Hesabınıza neden erişemediğiniz açık değil.

Makineniz saldırı altında veya aşırı yüklüyse, erişiminizi kısıtlama (IP Kısıtlamaları) veya sunucuyu çevrimdışı duruma getirme (İnternet bağlantısını kesme) hakkında sağlayıcınızla konuşmalısınız.

Ayrıca, sağlayıcınızın size yardımcı olabileceği bant dışı erişim de gerekebilir.

Biri sunucunuzu tehlikeye attıysa, yedeklemelerden geri yüklemeniz veya bir kurtarma görüntüsü kullanmanız gerekebilir.

Sunucunuza, özellikle de SSH'ye yapılan saldırıları önleme

kaba kuvvet oturum açmalarını önlemenin en iyi yolu?

İlk başta makinenize girmelerine izin vermeyin! Kaba kuvvet denemelerini ev sahibinize ulaşmadan önce, hatta SSH seviyesinde durdurmanın birçok yolu vardır.

İşletim Sisteminizi fail2ban gibi bir şeyle korumak harika bir fikir. http://en.wikipedia.org/wiki/Fail2ban

Fail2ban, DenyHosts'a benzer ... ancak SSH'ye odaklanan DenyHosts'tan farklı olarak, fail2ban, oturum açma girişimlerini bir günlük dosyasına yazan herhangi bir hizmeti izlemek ve yalnızca IP adreslerini / ana bilgisayarlarını engellemek için /etc/hosts.deny kullanmak yerine yapılandırılabilir. fail2ban Netfilter / iptables ve TCP Wrappers /etc/hosts.deny komutunu kullanabilir.

Kaba kuvvet girişlerinin engellenmesine yardımcı olmak için göz önünde bulundurmanız gereken bazı önemli güvenlik teknikleri vardır:

SSH:

  • Root'un giriş yapmasına izin verme
  • Ssh şifrelerine izin verme (özel anahtar kimlik doğrulaması kullanın)
  • Her arayüzde dinleme
  • SSH için talep ettiğiniz hizmetten farklı olan (örn. Eth0) bir ağ arayüzü oluşturun (örn. Eth1)
  • Yaygın kullanıcı adlarını kullanma
  • Bir izin listesi kullanın ve yalnızca SSH Erişimi gerektiren kullanıcıların izin ver
  • İnternet Erişimi gerekiyorsa ... Erişimi sınırlı bir IP grubuyla sınırlandırın. Bir statik IP idealdir, ancak onu xx0.0 / 16'ya kilitlemek 0.0.0.0/0'tan daha iyidir
  • Mümkünse İnternet Erişimi olmadan bağlanmanın bir yolunu bulursanız, SSH için tüm internet trafiğini reddedebilirsiniz (örneğin, AWS ile İnterneti atlayan doğrudan bir bağlantı elde edebilirsiniz, buna Doğrudan Bağlantı)
  • Herhangi bir kaba kuvvet saldırılarını yakalamak için fail2ban gibi bir yazılım kullanın
  • İşletim sisteminin her zaman, özellikle de güvenlik ve ssh paketlerinin güncel olduğundan emin olun

Uygulama:

  • Uygulamanızın, özellikle güvenlik paketlerinin her zaman güncel olduğundan emin olun.
  • Uygulamanızın 'yönetici' sayfalarını kilitleyin. Yukarıdaki tavsiyelerin çoğu uygulamanızın yönetici alanı için de geçerlidir.
  • Parola Yönetici alanınızı koruyun; web konsolu için htpasswd gibi bir uygulama, tüm temel uygulama açıklarını yansıtır ve giriş için ekstra bir engel oluşturur
  • Dosya izinlerini kilitleyin. 'Klasörleri yükle', her türden kötü şeyin giriş noktaları olarak bilinir.
  • Uygulamanızı özel bir ağın arkasına koymayı ve yalnızca ön uç yük dengeleyicinizi ve bir atlama kutusunu göstermeyi düşünün (bu, VPC kullanan AWS’de tipik bir kurulumdur)

1
Fail2ban'i help.ubuntu.com/community/Fail2ban aracılığıyla yükledim Çok güçlü ve kullanıcı dostu görünüyor (Posta bildirimleri, ...)

Veri merkezimden bir mesaj aldım: Bir flootatak vardı (bu nedir?) Ve bu bağlantı birçok sunucu için çok kötü oldu. Özellikle sunucuma saldırı olmadı.


1
İlginç. Öyle görünüyor ki veri merkezim saldırının hedefiydi. Ama bunun dışında çok zorlandığımı bilmek de benim için çok iyi. Ve Fail2ban gerçekten iyi bir araçtır. Sonraki günlerde Iptables ve SSH Config'i okuyacağım ve daha güvenli hale getirmeye çalışacağım.

3
22 dışındaki bir bağlantı noktasını dinlemek için openssh'ı ve 22 numaralı bağlantı noktasına gelen herhangi bir şeyi bırakacak şekilde iptables'ı yapılandırın. Kendi ülkenizden başka bir ülkeden ssh beklemiyorsanız, countryipblocks.net/country_selection adresinde bir blok listesi oluşturun . php ve iptables ile kullanın.
ThoriumBR

4

bu saldırıyı nasıl bastırabilirim ve aşağıdaki atakları nasıl önleyebilirim

Genellikle varsayılan ssh portunu 2222'den 1122 gibi diğerine değiştiririm. Bu bottan birçok otomatik saldırıyı önler, ancak basit bir port taraması bunu tespit edebilir. Neyse:

vi /etc/ssh/sshd_config

ve düzenleme Limanı 22 kadar Limanı 1122 , ancak bu yeterli değildir.

Bruteforce'da otomatik IPTables kuralları

i kullanmak log2iptables https://github.com/theMiddleBlue/log2iptables ve düzenli bir ifade ile herhangi bir kayıt dosyasına ayrıştırma iptables çalıştırması basit Bash script çünkü Fail2ban yerine. Örneğin 5 eşleşme gerçekleştiğinde, log2iptables belirli ip adresini bırakır. Harika çünkü Telegram API'yi kullan ve bir problem bulduğunda bana telefonumdan mesaj gönderebilir :)

umarım bu yardımcı olur!


8
Proje URL'si ve SF tanıtıcınız arasındaki korelasyondan, bu projeye dahil olduğunuzu tahmin ediyorum. Bakınız kurallarımızı "bu şartı belirterek, özellikle kendi ürünlerini başvuran üzerine siz gerekir yanıtlarınıza ilişkinizi ifşa ".
MadHatter, 8

1

Bunu bir araya getirdim, her 15 dakikada bir cronjob olarak çalıştırdım vs.

for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
  count1=`grep $z /etc/hosts.deny | wc -l`
  count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
  if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
    current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
    sudo cp /etc/hosts.deny.bak /etc/hosts.deny
    sudo chmod 666 /etc/hosts.deny
    if [ $current ] ; then
      echo "sshd : $current , $z" >> /etc/hosts.deny
    else
      echo "sshd : $z" >> /etc/hosts.deny
    fi
    sudo chmod 644 /etc/hosts.deny
  fi
done

0

Bu SSH saldırıları için alternatif çözümüm. Fikir, kullanılmazsa, SSH daemonunu kapatmaya devam etmektir. Açık liman yok, saldırı yok. Deneyebilirsin. Açık kaynaktır https://github.com/indy99/nnet_port_guard


1
Sunucu Arızasına Hoşgeldiniz! Cevabınız, soruya uygulanabilir bir çözüm önerisinin başka bir web sitesinde bulunabileceğini gösteriyor. Sorular ve Cevaplar web sitelerinin Yığın Değişim ailesi genellikle bu tür bir yanıttan kaçınır, çünkü diğer web siteleri taşınır, silinir veya değiştirilebilir. Lütfen okuyun Nasıl iyi bir cevap yazarım? ve sorunu çözmek için gereken adımları içerecek şekilde cevabınızı değiştirmeyi düşünün. Site gezisine çıkmayı unutma .
Paul,

0

Centos / RHEL için Kötü Aktörleri Engelleyen Otomatik Çözüm

İşte Centos'un hem geçersiz kullanıcı hesaplarının hem de geçerli hesapların hatalı şifrelerinin ssh başarısız girişlerini kontrol etmesi için bir komut dosyası. Kaynak IP bize 3 kereden fazla çarptıysa ve zaten reddetme listesinde yoksa, reddetme listesine eklenir. Bunu her 15 dakikada bir kökün crontab'ından çalıştırıyorum. Ayrıca ssh ile root girişlerine izin vermedim, bu yüzden kombinasyon işleri oldukça sessiz tutar.

     #/bin/bash
     # Save a copy of the existing hosts.deny file for safety
     cp /etc/hosts.deny /etc/hosts.deny.bak
     # Get a list of the offending IP addresses and process them
     for z in `grep "Invalid\|Failed" /var/log/secure | awk '{ print $NF }' | sort | uniq`
     do
     # Get the number of times this IP hit us
     hits=`grep "Invalid\|Failed" /var/log/secure* | grep $z | wc -l`
     # Check whether this IP is already blocked
     blocked=`grep $z /etc/hosts.deny | wc -l`
     # If they hit us more than 3 times and are not already on the deny list
     # add them to the deny list
     if [ $hits -gt 3 -a $blocked -eq 0 ]
     then
          echo "sshd : $z" >> /etc/hosts.deny
     fi
     done

1
Bakın fail2banaynı şeyi yapan ve savaş testi.
Patrick Mevzek
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.