设置密码复杂度
代码语言:javascript复制vim /etc/pam.d/system-auth
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=5 enforce_for_root
# 负数:代表最少出现次数
# 正数:代表最多出现次数
# minlen=8:密码长度至少 8 位
# lcredit=-1:至少包含一个小写字母
# ucredit=-1:至少包含一个大写字母
# dcredit=-1:至少包含一个数字
# ocredit=-1:至少一个特殊字符
# difok=5:新密码最多与旧密码重复5个字符
# enforce_for_root:对 root 强制执行密码复杂度策略
设置登录会话超时
代码语言:javascript复制vim /etc/profile
TMOUT=1800 # 1800 秒超时
source /etc/profile
设置密码有效期
代码语言:javascript复制vim /etc/login.defs # 只针对新用户生效,老用户不生效
# 新密码最大有效期
PASS_MAX_DAYS 180
# 是否可以修改密码,多少天后可以修改
PASS_MIN_DAYS 0
# 密码最小长度,pam_pwquality 设置优先
PASS_MIN_LEN 8
# 密码失败前多少天在用户登录时通知用户修改密码
PASS_WARN_AGE 15
设置登录失败锁定
代码语言:javascript复制# 此配置只对控制台有效,ssh 无效
vim /etc/pam.d/system-auth
# 输错 5 次密码,账号锁定 10 分钟
auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 root_unlock_time=600
# 此配置只 ssh 远程有效
vim /etc/pam.d/sshd
#%PAM-1.0
auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 root_unlock_time=600
# even_deny_root:也限制 root 用户
# unlock_time:设置普通用户锁定后,多少时间后解锁,单位是秒
# root_unlock_time:设定 root 用户锁定后,多少时间后解锁,单位是秒
# 限制用户从 tty 登录
vim /etc/pam.d/login
#%PAM-1.0
auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10
# 查看用户登录失败次数
pam_tally2 --user root
# 解锁指定用户
pam_tally2 -r -u root
例如:
设置连续输错 5 次口令,账号锁定 5 分钟,先检查 PAM 模块版本,搜索 pam_tally2 是否存在
CentOS 配置
代码语言:javascript复制vim /etc/pam.d/password-auth
# 只需要添加到合适位置即可
auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300
account required pam_tally2.so
Ubuntu 配置
代码语言:javascript复制vim /etc/pam.d/common-auth
auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300
# 只需要添加到合适位置即可
vim /etc/pam.d/common-account
account required pam_tally2.so