Metode # 1 - menonaktifkan login kata sandi
Jika Anda tidak memerlukan izin masuk dengan kata sandi, maka hanya dengan menolaknya akan memberi Anda efek yang diinginkan. Cukup tambahkan baris ini ke /etc/ssh/sshd_config:
PasswordAuthentication no
Selain itu, Anda dapat membatasi penggunaan kata sandi untuk pengguna tertentu yang menggunakan Matchoperator di sshd_config:
Match User root,foo,bar
PasswordAuthentication no
Match User user1,user2
PasswordAuthentication yes
Metode # 2 - iptables
Anda juga dapat menggunakan iptablesuntuk melacak upaya login yang gagal dan menjatuhkannya setelah batas tertentu. Ini mirip dengan contoh Anda dari hostingfu tetapi lebih mudah dimengerti.
$ 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
CATATAN: Baris pertama pada dasarnya membuat aturan yang hanya berlaku untuk paket yang digunakan untuk upaya koneksi baru pada port ssh. Baris kedua mengatakan bahwa jika ada lebih dari 4 upaya dari IP dalam 60 detik, maka lalu lintas dari IP tersebut harus dihitamkan. Solusi ini tidak peduli apakah upaya pada akun pengguna berbeda atau tidak.
Metode # 3 - gunakan PAM
Saya menyadari Anda mengatakan Anda tidak memiliki PAM yang tersedia, tetapi jika Anda melakukannya, ini adalah bagaimana Anda dapat menunda upaya login yang gagal. Jika maksud Anda hanya menunda kegagalan login ssh maka Anda dapat menggunakan modul PAM pam_faildelay. Modul PAM ini umumnya disertakan dengan campuran default.
Pada sistem Fedora 19 saya, ini merupakan bagian dari instalasi default.
Contoh
Cari file yang terkait dengan 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
Lihat apa RPM yang disediakan oleh:
$ 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
Pemakaian
Untuk membuat penundaan kegagalan, Anda cukup menambahkan baris seperti ini ke sshdfile konfigurasi pam Anda . Lagi pada Fedora / CentOS / sistem RHEL file ini terletak di sini: /etc/pam.d/sshd.
Untuk membuat penundaan 10 detik:
auth optional pam_faildelay.so delay=10000000
Penundaan 60 detik:
auth optional pam_faildelay.so delay=60000000
Contoh
Dengan penundaan 20 detik menggunakan metode di atas, saya mengubah sshdfile konfigurasi PAM saya seperti:
#%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
Sekarang ketika saya masuk:
$ 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
Referensi