SSH / SSHD - Maksimum giriş denemelerini nasıl ayarlarım?


Yanıtlar:


11

Kullandığım Fail2ban ; Denyhosts'u geçmişte kullandım ve oldukça iyi çalışıyor. Fail2ban'ı artık daha yapılandırılabilir ve birden fazla farklı hizmeti izlemeyi daha kolay yapabildiğinden (örneğin, sshd'niz ve web uygulamanızın giriş sayfası aynı anda (günlük hataları).

Düşünebileceğiniz başka bir yöntem de LIMIT kuralı uygulamaktır iptables; Maalesef Shorewall'ı yüklemek istemediğiniz sürece size bu konuda yardımcı olamam ve sonra bir LIMIT kuralını yapılandırmak için birisinin kaba yeteneğini nasıl sınırlayacağınız konusunda sizi o sitedeki mükemmel belgelere doğru yönlendireceğim. sunucunuzu zorlayın.


Fail2ban birçok dağıtım depolarında kullanılabilir olduğunu eklemeliyim, bu yüzden yüklemek bir esinti; Denyhosts'ı hiç görmedim, ama bu bazılarında olmadığı veya son kontrol ettiğimden beri eklenmediği anlamına gelmiyor.
Kromey

Ben v0.8.14 fail2ban iptables-multiport komutu ile doğru çalışmadı sorunla karşı karşıya. Ve bu, yeni sürümlerde çözülen fail2ban yardımcı programı ile ilgili bilinen bir sorundur ... İşte açıklama: github.com/fail2ban/fail2ban/issues/798 Bu yüzden sadece sunucu yazılımında geliştirilen güvenlik mekanizmalarına veya 3. taraf yardımcı programlara inanıyorum ...
George Gaál

44

Herhangi bir üçüncü taraf aracı kullanmaktan hoşlanmıyorum. Bu yüzden ssh yapılandırması ve güvenlik duvarı ayarlarının bir kombinasyonunu kullandım. Aşağıdaki çözümle, bir saldırganın 2 dakika içinde tam olarak 3 hata girişi yapmasına izin verilir veya 120 saniye boyunca engellenir.

1) Aşağıdaki satırı ekleyin /etc/ssh/sshd_config

MaxAuthTries 1

Bu, bağlantı başına yalnızca 1 oturum açma girişimine izin verir. Ssh sunucusunu yeniden başlatın.

2) Aşağıdaki güvenlik duvarı kurallarını ekleyin

Yeni bir zincir oluştur

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

Her IP adresini 120 saniye boyunca engelleyin; bu, 120 saniye içinde üçten fazla bağlantı kurar. Dördüncü bağlantı girişimi durumunda, istek SSHATTACK, olası ssh saldırısının günlüğe kaydedilmesinden sorumlu olan ve son olarak isteği bırakan zincire devredilir .

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3) Olası ssh saldırılarının günlük girişlerini /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
Müthiş! ama bir sorunum var, Fransa'daki bazı adamlar / botlar hacker araçlarını doğru yapılandırmamışlar, bu yüzden trafiği düşmüş olsa bile giriş yapmaya devam ediyor. Sonuç olarak, günlüklerim bu adamdan her saniye verilerle dolu. Bunun herhangi bir yolu var mı?
Smarties89

2
Benim gibi daha az deneyimli insanlar için: iptables satırları bash istemine yazılır, bir yere bir dosyaya girilmez.
Andrew Swift

4

Bunu ayarlamak için SSH ile ilişkili belirli bir paket yok. Ancak ConfigServer & Firewall olan CSF'yi yükleyebilirsiniz.

BOS

Dosyada önereceğim iki Yapılandırma değişikliği yapılır: / etc / ssh / sshd_config

Ssh sunucusunun aynı anda işleyeceği doğrulanmamış maksimum bağlantı sayısını sınırlayın. Bu ne kadar küçükse, komut dosyası çocuklarının birden çok bağlantıyla paralel, koordineli çatlama girişimleri yapması o kadar zor olur. düzenleme sshd_config ve MaxStartups varsayılan "10" yerine "3:50:10" değiştirin. İki nokta üst üste ayrılmış değerler ssh sunucusuna "3 kullanıcının aynı anda oturum açmaya çalışmasına izin ver ve 3 ile maksimum 10 arasındaki bağlantı girişimlerini rastgele ve giderek daha fazla düşürmesini" söyler. Not: Bu, oturum açan önemli sayıda geçerli ssh kullanıcısına sahip sunucularda artırılmalıdır.

  • Varsayılan : MaxStartup'lar 10
  • MaxStartup'lar 3:50:10

Bağlantıyı kesmeden önce başarılı bir şekilde oturum açmak için izin verilen maksimum süreyi azaltın. Varsayılan 2 dakika, kimliği doğrulanmamış bir bağlantı girişimini açık tutmak için çok fazla zaman (yukarıya bakın); 30 saniye oturum açmak için yeterli süreden fazla:

  • Varsayılan : LoginGraceTime 2m
  • GirişGraceTime 30

3

Bunun için bu IPTables kurallarını kullanıyorum:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

Bu, 4 TCP / SYN paketinin 5 dakika içinde bir IP adresinden yalnızca 22 numaralı bağlantı noktasına izin verir. Daha fazla deneme yaparsa, kapı 5 dakika geçene kadar kapalıdır.


Düzenlemeye ne gerek vardı?
timkofu

Hemen hemen aynı: -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Alix Axel

Bu iki iptables komutunu Debian Jessie'de yaptım, ancak yine de aynı IP adresinden her 2 saniyede SSH giriş denemelerini görebilirsiniz. Herhangi bir fikir?
Alexey Ozerov

1

sunucu için sshd_config dosyanıza koyabileceğiniz bir seçenek vardır:

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.

Faydalı (özellikle daha önce yapılmış diğer önerilerle birleştiğinde), ancak birisinin yeniden bağlanmaya devam etmesi önemsiz olduğundan sorunu kendi başına çözmez.
Kromey
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.