Ssh giriş gecikmesi nasıl sağlanır


11

Ben ssh üzerinden giriş yaparken giriş gecikme sağlamak istedim. Ben aynı yapmanın birkaç yolu denedim ama istenen sonucu bulamadı.

Verilen bağlantı ile sağlanan adımları denedim.

http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

Makinemde pam modülü yüklü değil, bu yüzden pam dosyalarıyla ilgili herhangi bir değişiklik yapamıyorum

Yani herhangi bir beden aynı şeyi yapmam için başka bir yol önermeme izin verir mi?

Yerleşik platformda çalışan çıplak linux çekirdeğim var.


Neden gecikme yapmak istiyorsunuz? En büyük hedefin nedir?
CVn

Kaba kuvvet saldırısı olasılığını önlemek istedim.
Ram

3
Sadece yeni bağlantılarda gecikme olması kaba kuvvet saldırısını engellemez. Gerçek probleminizi çözmek için tasarlanmış araçlara bakmanız gerekir. Belirli komutları uygulayarak tekrarlanan günlük girişlerine tepki vermek için özel olarak tasarlanmış fail2ban'a bakmayı öneririm ve genellikle özellikle yetkisiz erişim elde etmek için kaba kuvvet girişimlerini önlemek için kullanılır.
CVn

Bu iyi Michael ama e Benimle var olan mevcut altyapı ile yapmak zorunda, ssh üzerinden her bağlandığımda nasıl gecikme getirebilirim.
Ram

2
Dostum, fail2banzaten sahip olduğunuz altyapıyı kullanır - ssh günlükleri ve iptables kuralları.
Shadur

Yanıtlar:


11

Yöntem # 1 - Şifre girişlerini devre dışı bırak

Şifre girişlerine izin vermeniz gerekmiyorsa, bunlara izin verilmemesi size istenen efekti verecektir. Bu satırı şuraya eklemeniz yeterlidir /etc/ssh/sshd_config:

PasswordAuthentication     no

Ayrıca, Matchoperatörleri kullanarak parola kullanımını belirli kullanıcılarla sınırlayabilirsiniz sshd_config:

Match User root,foo,bar
    PasswordAuthentication no
Match User user1,user2
    PasswordAuthentication yes

Yöntem # 2 - Iptables

Ayrıca iptables, başarısız giriş denemelerini izlemek ve belirli bir eşikten sonra düşürmek için de kullanabilirsiniz . Bu, hostingfu örneğinize benzer, ancak anlaşılması daha kolaydır.

$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

NOT: İlk satır temel olarak yalnızca ssh bağlantı noktasında yeni bağlantı girişimleri için kullanılan paketler için geçerli olan bir kural oluşturur. İkinci satır, 60 saniye içinde bir IP'den 4 den fazla deneme olursa, o IP'den gelen trafiğin karaya alınması gerektiğini söyler. Bu çözüm, farklı kullanıcı hesaplarındaki denemelerin olup olmadığını umursamaz.

Yöntem # 3 - PAM kullanın

PAM'in mevcut olmadığını söylediğini fark ettin, ama eğer yaptıysan, başarısız giriş denemelerini bu şekilde geciktirebilirsin. Amacınız ssh oturum açma hatalarını geciktirmekse PAM modülünü kullanabilirsiniz pam_faildelay. Bu PAM modülü genellikle varsayılan karışıma dahildir.

Fedora 19 sistemimde varsayılan kurulumun bir parçası.

Misal

İle ilgili dosyaları arayın pam_faildelay.

$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz

Hangi RPM tarafından sağlandıklarını görün:

$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686

kullanım

Hatada gecikme oluşturmak için sshdpam yapılandırma dosyanıza böyle bir satır eklemeniz yeterlidir . Yine Fedora / CentOS / RHEL sistemlerinde bu dosya burada yer alır: /etc/pam.d/sshd.

10 saniyelik bir gecikme oluşturmak için:

       auth  optional  pam_faildelay.so  delay=10000000

60 saniyelik bir gecikme:

       auth  optional  pam_faildelay.so  delay=60000000

Misal

Yukarıdaki yöntemi kullanarak 20 saniyelik bir gecikmeyle, PAM sshdyapılandırma dosyamı şöyle değiştirdim :

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       optional     pam_faildelay.so  delay=20000000
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin

Şimdi giriş yaptığımda:

$ date
Tue Dec 17 09:16:30 EST 2013

$ ssh blah@localhost
blah@localhost's password: 
Permission denied, please try again.
blah@localhost's password: 

...Control + C....

$ date
Tue Dec 17 09:16:50 EST 2013

Referanslar


Teşekkürler @slm ama yine pam modülünü yükleyemiyorum ve sshd kimlik doğrulamam pam değil. Başka bir yol önermek ister misiniz
Ram

@AmitSinghTomar - Üzgünüm cevabımı genişlettim. Sorunuza yalnızca sizin değil, tüm yöntemleri kapsayan kanonik bir cevap oluşturmaya çalışıyordum.
slm

Senin ayrıntılar cevap için tekrar teşekkür ederim @slm, ben önerilen ikinci yöntemi takip ilgileniyorum. Bir deneyecek ve sonucu bildirmek, ayrıca ssh üzerinden ilk girişimi ile bana bir gecikme vermek?
Ram

@AmitSinghTomar - hayır sadece 4 denemeden sonra gecikmelidir. Bu --hitcount 4değer aşıldığında, kural hatalı IP adresini 60 saniye boyunca kararacaktır.
slm

Sizden bilmek istediğim bir nokta, 3. yönteminizin çalışması için (PAM), psh yoluyla ssh kimlik doğrulaması yapılmasını gerektiriyor mu?
Ram

3

Parolaları devre dışı bırakın. Parola yok, kaba kuvvet saldırısı yok.

Giriş yapmak için ssh tuşlarını kullanabilirsiniz - ki bu daha güvenli ve saldırıya uğraması çok daha zor olmalıdır.


0

Temiz bir günü Ubuntu 16.04 kurulumu ile openssh-serverzaten sıfır karakterden daha büyük bir yanlış şifre denemesi için bir gecikme var. Gecikme 1 saniyeden fazla görünüyor .

Sıfır karakterden oluşan yanlış bir şifre girişimi için gecikme olmaz, bu nedenle saldırgan, gerçekten boş bir dize değilse, şifrenizin boş dize olmadığını hemen belirleyecektir. Boş dizeye büyük olasılıkla şifre olarak izin verilmediğinden, zaten boş dizeyi denemeyeceklerini biliyorlar.

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.