You'll need to add the following lines to /etc/pam.d/sshd
:
auth required pam_tally2.so deny=6 onerr=fail unlock_time=1800
account required pam_tally2.so
Add them on lines 3 and 6 as indicated below:
#%PAM-1.0
auth required pam_sepermit.so
auth required pam_tally2.so deny=6 onerr=fail unlock_time=1800
auth include password-auth
account required pam_nologin.so
account required pam_tally2.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 required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
Also make sure UsePAM yes
is set in /etc/ssh/sshd_config
This will lock an ssh user out for 30 minutes after six failed authentication attempts.
If we follow the official RHEL 6 Security Guide, we can accomplish this without changing /etc/pam.d/sshd
.
We edit both /etc/pam.d/system-auth
and /etc/pam.d/password-auth
, replacing
auth sufficient pam_unix.so nullok try_first_pass
with
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
And, in both files, we add this line to the top of the "account" section:
account required pam_faillock.so
This will provide account lockout functionality to console users, screensaver users, and so on.
If you examine /etc/pam.d/sshd
you can see it uses password-auth
and therefore ssh users will experience the same lockout functionality.