服务器密码字典过滤机制通过系统级实时校验阻止用户设置常见弱密码,Linux用pam_pwquality+自定义字典,Windows借LAPS或第三方GPO扩展,应用层在API网关前置校验,并需动态更新字典与效果验证。

服务器密码字典过滤机制,本质是阻止用户设置已被广泛收录在常见密码字典中的弱密码,比如“123456”“admin123”“Password2024”这类易被自动化工具批量爆破的口令。它不是单纯靠人工提醒或培训,而是通过系统级策略,在用户修改密码的瞬间就做实时校验和拦截。
Linux系统:用pam_pwquality + 自定义字典文件
Linux主流发行版(如CentOS 8+/RHEL 8+、Ubuntu 20.04+)默认使用pam_pwquality.so模块,它支持加载外部字典进行比对。关键在于启用dictcheck功能:
- 确保已安装libpwquality工具包(如yum install libpwquality或apt install libpwquality-tools)
- 准备一个纯文本字典文件,每行一个弱密码,例如/etc/security/opendict.txt(可从SecLists等公开项目提取高频弱口令)
- 编辑/etc/pam.d/system-auth,在password requisite pam_pwquality.so行末追加:
dictcheck=1 dict=/etc/security/opendict.txt - 该配置会在用户执行passwd时,自动将新密码与字典逐行比对,匹配即拒绝并提示“Password is too weak”
Windows Server:借助第三方GPO扩展或脚本拦截
原生组策略不支持直接导入字典文件做密码校验,但可通过以下方式实现等效过滤:
- 部署Microsoft LAPS(Local Administrator Password Solution)配合自定义PowerShell密码验证脚本,在密码生成环节排除字典词
- 使用第三方商业模块(如Specops Password Policy),它支持上传CSV格式的禁止密码列表,并集成进域控GPO中实时生效
- 若为本地账户,可在Net User或Set-LocalUser调用前,用PowerShell读取字典文件并做-contains判断,失败则中止设置
应用层统一控制:API网关或身份平台前置校验
对于Web后台、云管理平台等自研或SaaS类服务,更推荐在应用入口做密码策略兜底:
- 在用户注册/改密API接口中,接入轻量级字典比对逻辑(如Python用set加载10万条常见密码,O(1)查询)
- 结合zxcvbn等强度评估库,不仅查字典,还识别“Password123”这类模式化变体
- 将字典文件存于配置中心(如Nacos、Consul),支持热更新,无需重启服务即可屏蔽新曝光的泄露密码
配套建议:动态更新与效果验证
静态字典会过期,必须建立维护机制:
- 每月同步一次Have I Been Pwned的Top 100K泄露密码列表,替换旧字典
- 记录所有被拦截的密码尝试,分析高频失败词,反向优化内部培训重点
- 用CUPP工具基于企业域名、产品名生成针对性字典,再将其加入过滤名单,覆盖社工类弱口令











