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, Match
operatö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 sshd
pam 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 sshd
yapı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