Kaba kuvvet saldırılarının ssh'ye karşı önlenmesi?


49

Ssh portuna kaba kuvvet saldırılarını önlemek için hangi aracı veya tekniği kullanıyorsunuz? Güvenlik günlüklerimde, ssh aracılığıyla çeşitli kullanıcılar olarak giriş yapmak için milyonlarca denemem olduğunu fark ettim.

Bu bir FreeBSD kutusunda, ancak her yerde uygulanabilir olacağını düşünüyorum.

Yanıtlar:


25

İşte Rainer Wichmann'ın bu konuda iyi bir yazı .

Bunu yapmak için tez yöntemleri üzerinde artılarını ve eksilerini açıklar:

  • Güçlü şifreler
  • RSA kimlik doğrulaması
  • Saldırıyı engellemek için 'iptables' kullanma
  • Saldırıları engellemek için sshd günlüğünü kullanma
  • Saldırıları engellemek için tcp_wrappers kullanma
  • Liman vurmak

39

Yapılandırılabilir bir süre için birkaç başarısız denemeden sonra bir IP'yi kilitleyen fail2ban'ı kullanıyorum .

Kaba kuvvet saldırılarının başarılı olamayacağından emin olmak için bunu şifre kuvveti testiyle ( john (Ripper John) kullanarak ) kullanın.


4
Fail2ban mükemmel. / Var / log / maillog dosyasını izlemesi ve kalıcı spam gönderenlerin posta sunucumu vurmasını yasaklaması için genişletmek çok kolaydı
Dave Cheney

Fail2ban, TARPITkendinizi kötü hissediyorsanız (xtables-addons'dan) hedefine tcp trafiği gönderen bir iptables zinciri ile birleştirilebilir .
Tobu



15

Bu saldırılardan kaçınmanın en kolay yollarından biri, sshd'nin dinlediği portu değiştirmek.


1
Tabii ki, siz sistem buna dayanabilir.
C. Ross

13
Muğlaklıkla güvenlik, her seferinde etkili.
Chris Ballance

1
Limanı o kadar fazla değiştirmeyi umursamıyorum, ama çoğu güvenlik duvarının (kendimden başka) ortak olanlardan (80,22, 443, vb.) Dışındaki tüm bağlantı noktalarını kilitleme eğiliminde olduğunu öğrendim. Bu güvenlik duvarlarının arkasındaysam, standart olmayan bağlantı noktasındaki ev sunucuma erişemiyorum. Benim için bu bir gitmez.
yas

@ grieve bu portu çıkarmak için güvenlik duvarımızı değiştirelim mi?
Rory

@Roy, sahip olduklarım dışındaki güvenlik duvarlarından bahsediyorum. Örneğin, Starbucks'tan ev makineme girmek istersem, güvenlik duvarları giden bağlantı noktasını engeller. Bunu değiştiremem. (Ben sadece bir örnek olarak Starbucks kullandım. Hangi portları engellediklerini veya engellemediklerini bilmiyordum).
yas

12

Chris'in işaret ettiği gibi, şifreler yerine şifreleme anahtarlarını kullanın.

Buna ekle:

  • mümkünse bir beyaz liste kullanın.

Genel ssh bağlantılarınıza gerçekten kaç kişi veya konum (kayan genel IP’ler ile) ihtiyacınız var?

Korumakta olduğunuz genel ssh ana bilgisayarlarının sayısına ve genel bağlantı ölçütlerinizi daraltıp sınırlayamayacağınıza bağlı olarak, birkaç harici ana bilgisayara erişimi sınırlandırmak daha basit ve bakımı kolay bir yapılandırma olabilir.

Bu sizin için işe yararsa, genel giderlerinizi gerçekten basitleştirebilir.


2
Kilitlenmek istemediğiniz sürece herhangi bir kara listemiz yapıyorsanız beyaz liste çok önemlidir.
Ryaner

2
Proaktif olarak beyaz liste için +1.
Chris Ballance

3
Mutlak en iyi cevabı için +1. Bu iki şey sadece makul adımlardır ve gerçekten çok etkilidirler. Her ikisi de tek başına faydalıdır ve ikisi birlikte daha çok. Gizliliğin gizliliğini savunan diğer cevaplara boyun eğ!
dwc

11

Diğer iyi önerilere ek olarak, yapılması gerçekten kolay olan bir şey, gelen bağlantıları hız sınırlamasıdır. IP başına dakikada 3 bağlantıyla sınırlandır:

iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

Bir şeyi yanlış anlamış olabilirim, ancak birçok ana tarayıcı bir seferde 4-6 bağlantı arasında bağlantı kuruyor
Joshua Enfield

1
Evet, 80 numaralı bağlantı noktasını sınırlandırmaya çalışıyorsanız, bu bir sorun olacaktır. Web tarayıcınızla ssh ile bağlantı kurmuyorsunuz ve ssh oturumları kısa süren vatansız oturumlar gibi durumlarını koruyan uzun ömürlü oturumlardır. http. Böyle ssh oturumlarını paralel hale getirmek mantıklı değil. Bu, bunun kıracağı bir ssh kullanımının olmadığını söylemek değildir, fakat nadirdir.
sherbang,

Benim gibi, Subversion'a ssh ile hizmet veriyorsanız, bu çözüm o kadar iyi değildir. Tek bir SVN sorgusu hızlı bir şekilde art arda çok sayıda bağlantı yapabilir. Bu servisi sağlıyorsanız, başka bir portta ikinci bir sshd servisi kullanabilir veya bilinen IP'leri beyaz listeye alabilirsiniz. Meşru kullanıcılarımı cezalandırmadan ilk defa bariz saldırıları yakalamak için fail2ban veya sshdfilter kullanmayı düşünüyorum.
çeltik

Bu seçeneği de bilmek güzel ...
ZEE

6

Yalnızca küçük bir kullanıcı grubunun oturum açabilmesini sağlamak için sshd_config içindeki "AllowUsers" seçeneğini kullanın. Kullanıcı adı ve şifresi doğru olsa bile, diğerleri reddedilecektir.

Hatta girişlerinde kullanıcılar kısıtlamak gelen Belirli bir ana.

Örneğin,

AllowUsers user1 user2@host.example.com

Bu, arama alanını azaltacak ve yanlışlıkla bırakılmış veya etkinleştirilmiş olan eski kullanıcıların önüne geçecektir (elbette yine de devre dışı bırakılsalar da, bu SSH tabanlı bir giriş için kullanılmalarını durdurmanın kolay bir yoludur).

Bu kaba kuvvet saldırılarını tamamen durdurmaz, ancak riski azaltmaya yardımcı olur.


3

PF ile böyle bir şey kullanın:

<ssh-brute> tablosu
, ssh_brute etiketinden hızlı günlüğe kaydetme bloğunu
$ ext_if proto tcp'ye ($ ext_if) bağlantı noktası ssh modüle etme durumuna geçirir \
(max-src-conn-rate 3/10, aşırı yüklenme global)


2

Liman çalmak bu tür şeyleri dışarıda tutmanın oldukça sağlam bir yoludur. Hafifçe sahte, bazen sinir bozucu, ama kesinlikle konuyu ortadan kaldırıyor.


Bunu denedim ve kullanıcılar can sıkıcı buluyor. Sadece bir veya iki kişi olsaydı, bu iyi bir seçenek olabilirdi ve kaba kuvvet saldırılarını neredeyse ortadan kaldıracaktı
Brent

2

Bağlam önemlidir, ancak şöyle bir şey öneririm:

  • FreeBSD kullandığınızdan, PF güvenlik duvarını çalıştırmayı ve sağlam bağlantı hızı sınırlayıcı özelliklerini kullanmayı düşünün. Bu, sık sık bağlanırlarsa kaba kuvvetleri kara listeye göndermenizi sağlar
  • Bu kutuya dış dünyadan erişilmesi gerekiyorsa, trafiğin 22 numaralı bağlantı noktasına girmesine izin vermemek, ancak bazı gizli bağlantı noktalarını buna yönlendirmek için PF rdr kuralını kullanmayı düşünün. Yani, 22 yerine bağlantı noktası 9122'ye bağlanmak zorundasınız. Belirsiz, ancak tokmakları uzak tutuyor
  • yalnızca anahtar tabanlı kimlik doğrulamasına geçmeyi düşünün, sözlük saldırılarını gereksiz kılar

2

Bundan başka için sherbang en oran-sınırlayıcı öneri , gecikme süresi önemlidir. 3 giriş denemesi olan gruplar arasındaki gecikmeyi 2 dakikadan 20 dakikaya çıkartarak, üç den fazla giriş yapma denemesi yapan farklı IP adreslerinin sayısı bir makinemde iki hafta süren bir süreyi karşılaştırarak 44 denemeye 3 Bu üç adresin hiçbiri 11 saatten fazla denemeyi sürdürmedi.

Çok anekdot, ancak auth.log benim için daha okunaklı hale geldi ...


1

Sadece umrumda değil. Limanda kaymalarına izin verin, bir anahtarı zorla kullanmayacaklar.


-1 DoS saldırılarını hiç duydunuz mu?
Chris Ballance

8
Evet, çünkü SSH kaba kuvvet saldırılarına duyarlı tek hizmettir. İnternete açık bir bağlantı noktanız varsa, makinenizi unutulmaz hale getirmek için kullanılabilir. Muhtemelen HTTP sunucunuzu da garip portlara ve port
dolandırıcılığının ardına

1

OSSEC'i kurun. sadece tekrarlanan girişleri izlemiyor, aynı zamanda rahatsız edici ip için iptables ile geçici bir bloğa giriyor. Ve sonunda size detayları belirten bir rapor gönderecek. her şeyi kaydeder, ki bu güzel. Birisi bir keresinde giriş yapmak için 8000'den fazla oturum açma adı denedi. günlükleri ayrıştırdım ve anlaşma dışında güzel bir kullanıcı listesi elde ettim;)

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.