大家好,我是V浪。今天和大家聊聊Linux系统中的密码策略配置。作为一个安全从业者,我经常看到因为密码策略配置不当导致的安全问题。让我们一起深入了解如何设置一个安全且合理的密码策略。
一、配置文件位置
首先,我们需要知道密码策略主要涉及两个配置文件:
/etc/security/pwquality.conf # 密码质量要求
/etc/login.defs # 密码过期策略
这就像是给系统设置了两个"保安",一个负责检查密码的"质量",另一个负责管理密码的"寿命"。
二、密码复杂度配置
让我们看看pwquality.conf
中的关键配置项:
1. 基础要求
minlen = 12 # 最小长度12位
dcredit = -1 # 至少1个数字
ucredit = -1 # 至少1个大写字母
lcredit = -1 # 至少1个小写字母
ocredit = -1 # 至少1个特殊字符
2. 高级规则
maxrepeat = 2 # 最多连续重复2次相同字符
difok = 3 # 新密码必须有3个字符与旧密码不同
minclass = 3 # 至少使用3种不同类型的字符
三、密码生命周期管理
在/etc/login.defs
中配置:
PASS_MAX_DAYS 90 # 密码最长使用90天
PASS_MIN_DAYS 7 # 密码修改后最少7天才能再改
PASS_WARN_AGE 7 # 密码过期前7天开始提醒
这就像给密码设置了:
-
"保质期"(90天) -
"冷却期"(7天) -
"提醒期"(7天)
四、实战配置示例
1. 配置密码复杂度
# 编辑配置文件
sudo nano /etc/security/pwquality.conf
# 添加以下内容
minlen = 12
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1
maxrepeat = 2
difok = 3
minclass = 3
enforce_for_root # 对root也执行这些规则
2. 配置密码过期
# 使用chage命令设置具体用户
sudo chage -M 90 -m 7 -W 7 username
# 或者修改全局配置
sudo nano /etc/login.defs
五、安全建议
-
密码复杂度
# 建议配置:
minlen = 14 # 14位密码长度
maxrepeat = 2 # 防止重复字符
usercheck = 1 # 检查是否包含用户名
dictcheck = 1 # 检查是否是字典词
-
密码使用周期
- 90天强制更换
- 不允许使用前5次使用过的密码
- 密码修改后至少使用7天
六、监控和审计
1. 密码策略检查
# 检查当前用户密码状态
chage -l $USER
# 检查密码复杂度配置
grep -v '^#' /etc/security/pwquality.conf | grep .
2. 日志监控
# 查看密码修改记录
sudo grep "password" /var/log/auth.log
# 查看PAM认证日志
sudo grep "pam_pwquality" /var/log/auth.log
七、常见问题解决
-
密码无法满足要求
# 检查具体原因
pwscore
# 临时放宽要求(不推荐)
sudo sed -i 's/enforce_for_root/# enforce_for_root/' /etc/security/pwquality.conf
-
密码过期处理
# 强制用户下次登录修改密码
sudo chage -d 0 username
# 查看密码过期状态
sudo chage -l username
记住,设置密码策略要平衡安全性和可用性:
-
太简单容易被破解 -
太复杂用户容易忘记 -
更换太频繁会导致用户写在纸上
我最常用的配置是:
minlen = 14
minclass = 3
maxrepeat = 2
difok = 3
PASS_MAX_DAYS = 90
PASS_MIN_DAYS = 7
PASS_WARN_AGE = 7
这个配置在安全性和可用性之间取得了很好的平衡。
最后提醒大家,密码策略只是安全的第一道防线,还需要:
-
定期安全审计 -
多因素认证 -
用户安全培训
我是V浪,我们下期见!
原文始发于微信公众号(HW安全之路):密码安全不容忽视!掌握Linux系统密码策略的必备技巧
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论