密码策略基础:让弱口令无处遁形
各位好,我是老周。今天咱们聊密码策略的基础配置。说实话,我见过太多设备沦陷的案例,十有八九都是密码策略没设好。你想想看,一个设备如果连密码复杂度都不要求,那跟没锁门有什么区别?
密码策略不是让你折腾用户的,而是给安全上第一道锁。我习惯把这套策略拆成三个维度:复杂度、有效期与历史、账户锁定。咱们一个一个说。
密码复杂度要求:长度与字符类型
先讲复杂度。很多人觉得密码越长越好,其实不全对。长度是基础,字符类型是保障。
核心原则:密码的熵值(不确定性)由长度和字符集共同决定。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那里,安全策略被强行回滚。记住,安全要兼顾可用性。
这里我把三个维度的核心参数汇总一下:
最后说一句,密码策略不是设完就完事的。你得定期审计,看看有没有人绕过去。我每季度都会跑一次密码策略合规检查,抓出那些"特殊例外"账号。嗯,安全是持续的过程,不是一次性配置。