密码策略基础:让弱口令无处遁形

各位好,我是老周。今天咱们聊密码策略的基础配置。说实话,我见过太多设备沦陷的案例,十有八九都是密码策略没设好。你想想看,一个设备如果连密码复杂度都不要求,那跟没锁门有什么区别?

密码策略不是让你折腾用户的,而是给安全上第一道锁。我习惯把这套策略拆成三个维度:复杂度、有效期与历史、账户锁定。咱们一个一个说。

密码复杂度要求:长度与字符类型

先讲复杂度。很多人觉得密码越长越好,其实不全对。长度是基础,字符类型是保障。

核心原则:密码的熵值(不确定性)由长度和字符集共同决定。8位纯数字密码的熵值约26.6比特,而8位含大小写+数字+特殊字符的密码熵值可达52.6比特。攻击者破解后者所需时间呈指数级增长。

我在项目中遇到过一家企业,他们要求密码至少12位,但只允许字母和数字。结果呢?员工全用"Password123456"这种模式。长度够了,但字符类型单一,字典攻击照样能破。

我个人建议的复杂度基线是这样的:

参数项 最低要求 推荐配置 说明
最小长度 8位 12-16位 每增加1位,破解时间翻倍
大写字母 至少1个 至少1个 增加字符集大小
小写字母 至少1个 至少1个 基础要求
数字 至少1个 至少1个 防止纯字母组合
特殊字符 可选 至少1个 !@#$%^&*()等

我的小技巧:配置时别把特殊字符限制得太死。有些系统只认特定几个符号,用户记不住就会写纸上。我一般建议开放ASCII可打印字符中的大部分,让用户有选择空间。

这里给个实际配置示例,以Linux系统为例:

# /etc/pam.d/common-password 配置片段
password requisite pam_pwquality.so retry=3 minlen=12
  dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
  maxrepeat=3 reject_username difok=5

这段配置的意思是:密码最少12位,必须包含数字、大写、小写、特殊字符各至少1个,不能有连续3个相同字符,不能包含用户名,新旧密码至少5个字符不同。

注意:复杂度要求越高,用户越容易把密码记在便签纸上。这是个平衡问题。我见过最极端的案例——要求密码32位且每30天更换,结果全公司都把密码贴在显示器边框上。嗯,这比不设密码还危险。

密码有效期与历史记录

接下来是有效期。为什么要设有效期?因为密码在传输和存储过程中可能被窃取,时间越长风险越大。

我习惯把有效期分成三个档:

  • 90天:普通用户账号,风险适中
  • 60天:管理员账号,权限较高
  • 30天:特权账号、远程访问账号

但光改密码还不够,你得防止用户改回旧密码。这就是历史记录的作用。

举个例子,你要求每90天改一次密码,用户从"Pass@2023Q1"改成"Pass@2023Q2",再改成"Pass@2023Q3"……你想想看,攻击者只要拿到第一个密码,后面的基本能猜出来。

所以历史记录要记住至少5个旧密码,我推荐10个。配置示例:

# Windows 组策略配置
密码历史记录:10个记住的密码
密码最长使用期限:90天
密码最短使用期限:1天

避坑指南:我曾经遇到一个系统,密码最短使用期限设成了0天。结果用户当天改完密码,马上又改回原来的。历史记录形同虚设。记住,最短使用期限至少设1天,防止用户立即回滚。

这里有个表格,帮你快速理解有效期和历史记录的配合关系:

场景 有效期 历史记录 最短使用期限
普通员工 90天 5个 1天
IT管理员 60天 10个 1天
第三方运维 30天 10个 1天
服务账号 不限期 不适用 不适用

账户锁定策略:阈值与时间

最后说账户锁定。这个策略说白了就是——有人试你密码试太多次,系统就把他关门外。

我见过最离谱的配置:锁定阈值设成100次,锁定时间设成1分钟。你想想看,攻击者每1分钟能试100次密码,一小时内能试6000次。8位纯数字密码总共才1亿种组合,按这个速度不到70天就能试完。

合理的配置应该是这样的:

  • 锁定阈值:5次失败尝试
  • 锁定时间:30分钟
  • 复位计数器时间:30分钟(从第一次失败开始算)

配置示例(Windows本地安全策略):

账户锁定阈值:5次无效登录
账户锁定时间:30分钟
复位账户锁定计数器:30分钟之后

Linux下用pam_tally2模块:

# /etc/pam.d/login 配置
auth required pam_tally2.so deny=5 unlock_time=1800
account required pam_tally2.so

重要提醒:锁定策略不能太激进。我曾经帮一家公司做审计,发现他们把锁定阈值设成3次,锁定时间24小时。结果呢?员工一天误输3次密码就被锁到第二天,IT部门每天要处理上百个解锁工单。最后业务部门投诉到CEO那里,安全策略被强行回滚。记住,安全要兼顾可用性。

这里我把三个维度的核心参数汇总一下:

密码策略三维度核心参数 密码复杂度 最小长度 ≥ 12位 4类字符各至少1个 禁止连续重复字符 有效期与历史 有效期 60-90天 历史记录 ≥ 10个 最短使用期限 ≥ 1天 账户锁定策略 锁定阈值 5次 锁定时间 30分钟 计数器复位 30分钟 配置要点 1. 三个维度必须同时启用,缺一不可 2. 复杂度与可用性要平衡,避免用户绕开策略 3. 锁定策略要配合日志告警,及时发现暴力破解

最后说一句,密码策略不是设完就完事的。你得定期审计,看看有没有人绕过去。我每季度都会跑一次密码策略合规检查,抓出那些"特殊例外"账号。嗯,安全是持续的过程,不是一次性配置。