ubuntu20.04 设置密码复杂度

发布时间 2023-03-27 17:06:27作者: 小吉猫

密码复杂度策略

安装密码质量检查库

# apt -y install libpam-pwquality

设置密码过期的天数

用户必须在几天内更改密码。
此设置仅在创建用户时产生影响,不会影响现有用户。
如果设置为现有用户,请运行命令 [chage -M (days) (user)]。

# vi /etc/login.defs
# 设置密码到期天数(下面的示例表示 60 天)
PASS_MAX_DAYS 90

# 可用的最少天数(以下示例表示 1 天)
PASS_MIN_DAYS 1

# 设置到期警告天数(下面的示例表示 7 天)
PASS_WARN_AGE 7

限制使用过去使用过的密码

# vi /etc/pam.d/common-password
# add [remember=*] (example below means 5 gen)
password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512 remember=5

设置最小密码长度

# vim /etc/security/pwquality.conf
# 设置最小长度(下面的示例表示 8 个字符)
minlen = 8

# 设置新密码所需的最少字符类别数 (大写/小写/数字/其他)
minclass = 2

# 设置新密码中允许的最大连续相同字符数
maxrepeat = 2

# 设置新密码中允许的同类最大连续字符数
maxclassrepeat = 4

# 要求新密码中至少有一个小写字符
lcredit =-1

# 要求新密码中至少有一个大写字符
ucredit = -1

# 新密码至少需要一位数字
dcredit = -1

# 新密码中至少需要一个其他字符
ocredit = -1

# 设置新密码中单调字符序列的最大长度
maxsequence = 2

# 设置新密码中不能出现在旧密码中的字符数
difok = 5

# 检查新密码中是否包含用户密码条目的GECOS字段中超过3个字符的单词
gecoscheck = 1

# 设置密码中不得包含的以空格分隔的单词列表
badwords = denywords1 denywords2 denywords3

设置登录超时时间

系统登录超时

# vim /etc/profile
export TMOUT=3600    # 表示超时时间为1小时

远程连接超时

# vim /etc/ssh/sshd_config
ClientAliveInterval 600
ClientAliveCountMax 0

设置登录失败策略

本地登录失败策略

# vim /etc/pam.d/login
# 在第二行添加
auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=300

 参数说明

even_deny_root    也限制root用户;
deny              设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
unlock_time       设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time  设定root用户锁定后,多少时间后解锁,单位是秒;

远程登录失败策略

sshd

# vim /etc/pam.d/sshd
# 在第二行添加
auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=300

ssh_config

# vim /etc/ssh/sshd_config
MaxAuthTries 3

禁用root远程登录

# vim /etc/ssh/sshd_config
PermitRootLogin prohibit-password

PasswordAuthentication no