Phương pháp # 1 - vô hiệu hóa đăng nhập mật khẩu
Nếu bạn không yêu cầu cho phép đăng nhập mật khẩu, thì chỉ cần không cho phép họ sẽ mang lại cho bạn hiệu quả mong muốn. Chỉ cần thêm dòng này vào /etc/ssh/sshd_config
:
PasswordAuthentication no
Ngoài ra, bạn có thể giới hạn sử dụng mật khẩu cho một số người dùng bằng cách sử dụng Match
toán tử trong sshd_config
:
Match User root,foo,bar
PasswordAuthentication no
Match User user1,user2
PasswordAuthentication yes
Phương pháp # 2 - iptables
Bạn cũng có thể sử dụng iptables
để theo dõi các lần đăng nhập thất bại và thả chúng sau một ngưỡng nhất định. Điều này tương tự với ví dụ của bạn từ hostingfu nhưng dễ hiểu hơn.
$ 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
GHI CHÚ: Về cơ bản, dòng đầu tiên tạo ra một quy tắc chỉ áp dụng cho các gói được sử dụng cho các lần thử kết nối mới trên cổng ssh. Dòng thứ hai nói rằng nếu có hơn 4 lần thử từ một IP trong vòng 60 giây, thì bất kỳ lưu lượng truy cập nào từ IP đó sẽ được phủ đen. Giải pháp này không quan tâm đến việc có hay không các nỗ lực trên các tài khoản người dùng khác nhau.
Phương pháp # 3 - sử dụng PAM
Tôi nhận ra rằng bạn nói rằng bạn không có sẵn PAM, nhưng nếu bạn đã làm vậy, đây là cách bạn có thể trì hoãn các lần đăng nhập thất bại. Nếu ý định của bạn chỉ đơn giản là trì hoãn thất bại đăng nhập ssh thì bạn có thể sử dụng mô-đun PAM pam_faildelay
. Mô-đun PAM này thường được bao gồm với hỗn hợp mặc định.
Trên hệ thống Fedora 19 của tôi, nó là một phần của cài đặt mặc định.
Thí dụ
Tìm kiếm các tập tin liên quan đế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
Xem những gì RPM họ được cung cấp bởi:
$ 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
Sử dụng
Để tạo độ trễ khi thất bại, bạn chỉ cần thêm một dòng như thế này vào sshd
tệp cấu hình pam của mình . Một lần nữa trên các hệ thống Fedora / CentOS / RHEL, tập tin này được đặt ở đây:/etc/pam.d/sshd
.
Để tạo độ trễ 10 giây:
auth optional pam_faildelay.so delay=10000000
Độ trễ 60 giây:
auth optional pam_faildelay.so delay=60000000
Thí dụ
Với độ trễ 20 giây bằng phương pháp trên, tôi đã thay đổi sshd
tệp cấu hình PAM của mình như sau:
#%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
Bây giờ khi tôi đăng nhập:
$ 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
Người giới thiệu