主机弱口令的整改不能靠一次突击,必须通过基线检查定期发现、闭环处置,才能把风险压到可接受范围。弱口令是服务器失陷最常见的入口,定期基线检查相当于给主机做“体检”,把每一次暴露出的弱密码、默认账户、过期口令批量捞出来,再按标准修掉,这场拉锯战没有终点,但有了固定节奏,攻击者就很难钻空子。
为什么主机弱口令总在基线检查中反复出现
不少运维团队遇到过类似场景:上季度刚整改完的弱口令,这季度基线扫描又冒出一批,原因不外乎三点。
业务侧的习惯惯性。 开发人员临时调试时习惯用admin/123456,测试环境上线前草草改成Root@2026,等过了几轮迭代,这个测试口令就跟着服务一起进了生产区,基线检查扫到了,改完了,但下个项目又有人复制同样的套路。
资产台账跟不上主机变化。 新开云主机默认密码没改就交付,容器镜像里内置了固定口令,临时扩容的实例在回收前被遗忘在某个网段,基线检查覆盖不到这些“黑户”,它们就成了弱口令的避风港。
整改流程断在半路。 扫描报告发给各负责人,有人改了口令却没更新记录,有人嫌麻烦直接忽略,有人改完之后系统配置被回滚,没有一套确认反馈机制,检查结果就是一张废纸。
行业共识认为,弱口令问题的根源不是技术缺漏,而是管理动作没有形成闭环,基线检查的价值恰恰在于用固定频率把隐性风险显性化。
主机弱口令基线检查多久做一次才算合理
频率设定没有统一答案,但可以参考分层思路,核心业务区和公网可达的主机,每月一次基线检查是底线,这类资产直接暴露在攻击面下,弱口令一旦被爆破,影响范围往往难以估量,内部办公区和测试环境,每季度一次即可,重点盯住新上线系统和临时任务节点。
如果合规要求更严,比如通过等保三级或行业监管要求的企业,基线检查频率通常会被强制为每月甚至更短周期,据公开信息,多数安全运营成熟度较高的企业会把周度为周期、月度为汇总,因为弱口令的生存周期比想象中短。
以下节点必须触发临时检查,不能等固定周期:
- 新主机上线前
- 重大活动或攻防演练前
- 管理员离职或权限变更后
- 发生过入侵事件或疑似暴力破解告警后
固定频率加临时触发,才能让弱口令没有长期存活的土壤。
主机弱口令基线检查的实操流程
以Linux服务器为例,一套完整的基线检查包含资产梳理、口令强度扫描、账户权限核验、风险判定和整改跟踪,每一步都要留下可核对的证据。
资产清单与扫描范围确认
先把所有主机IP、主机名、责任人、业务归属摸清楚,建议直接用CMDB导出最新清单,没有CMDB的团队可以写个脚本从云平台API拉取,注意把虚拟IP、容器宿主机、跳板机纳入范围,这些容易被漏掉。
弱口令扫描工具怎么选
商用安全扫描器自带基线核查模块,比如绿盟、天融信、安恒的设备,直接勾选“弱口令检测”策略就行,开源方案里可以用Nmap的nmap --script brute配合hydra做SSH、RDP、MySQL等服务的口令爆破模拟,但要注意开启前确认授权范围。
对于Windows系统,可以用crackli或fscan做空口令和弱口令探测,部分国产工具还能联动AD域账号密码策略检查,工具选择不唯一,关键是要保证扫描账号有足够的权限读取目标主机配置,否则漏报率会很高。
口令策略核查命令
Linux下检查密码策略和账户锁定策略,常用命令如下:
cat /etc/login.defs查看PASS_MAX_DAYS、PASS_MIN_LEN等全局参数chage -l <用户名>查看单个账户的密码有效期grep -E '^PASS|^UID' /etc/pam.d/system-auth查看PAM模块配置awk -F: '$2=="" {print $1}' /etc/shadow检测空密码账户
Windows上则通过net accounts和secpol.msc查看密码复杂度、最长使用期限和账户锁定阈值,把扫描结果和基线标准对比,低于标准的直接标记为“不合规”。
风险分级与证据留存
扫描出来的弱口令不能一概而论,建议按严重程度分级:
- 高危:root/administrator权限账户,且密码为admin、123456、Password@1等,或空密码
- 中危:普通业务账户使用简单组合,或密码过期但未强制修改
- 低危:非生产环境账户存在弱口令,但网络隔离良好
每一条风险都要记录主机IP、账户名、发现时间、问题描述和扫描工具截图,这些证据既是整改的任务单,也是后续复核的样本。
服务器弱口令整改命令与修复合集
整改动作要快,但不能暴力,改密码的同时要考虑业务连续性,避免因口令变更导致应用连接失败。
Linux服务器弱口令修改步骤
SSH登录目标主机后,按以下顺序操作:
- 强制用户下次登录时改密:
chage -d 0 <用户名> - 设置最小密码长度:修改
/etc/login.defs中的PASS_MIN_LEN为12以上 - 配置密码复杂度:编辑
/etc/pam.d/system-auth,加入password requisite pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 - 启用账户锁定策略:在
/etc/pam.d/system-auth和/etc/pam.d/password-auth中加入account required pam_faillock.so preauth audit silent deny=5 unlock_time=900 - 为root账户单独设置强密码:
passwd root,推荐使用20位以上混合字符
如果主机数量多,可以写个Ansible playbook批量执行,用
hosts定义目标组,tasks里依次调用user模块、pam模块和command模块,避免人工一台台登录。
Windows服务器弱口令整改方法
Windows主机的操作路径略有不同:
- 打开“本地安全策略”,依次进入“账户策略”>“密码策略”,将“密码必须符合复杂性要求”设为“已启用”
- 将“密码最短使用期限”设为1天,将“密码最长使用期限”设为90天
- 在“账户锁定策略”中将“账户锁定阈值”设为5次无效登录
- 定期运行
net user <用户名> <新密码>强制重置管理员密码
对于大量云主机,可以通过云厂商的“命令执行”功能或AD域策略统一推送,改完密码后记得更新堡垒机里的凭据,否则下次运维登录会卡在认证环节。
修改完成后的自检动作
整改不是改完就结束,必须验证效果。
- 用
cat /etc/shadow检查密码占位符,确认或状态已被替换 - 用
hydra -l root -P 字典.txt ssh://<服务器IP>做快速验证,只测一次避免账户被锁定 - 抽查一台主机尝试用旧密码登录,确认已被拒绝
- 检查应用日志,确认没有因密码变更出现认证失败的报错
如何设计弱口令整改的闭环跟踪清单
整改后的复查环节最容易流于形式,一份有效的跟踪清单应该包含三个维度。
验收维度。 每项弱口令风险必须有明确的修复证据,比如密码最后修改时间截图、策略配置文件内容、扫描器复扫结果,责任人要在整改记录里签字确认,不能口头说“改好了”。
时间维度。 高危弱口令要求24小时内完成整改,中危3个工作日内,低危5个工作日内,逾期未处置的风险项自动升级给安全主管,并在周报中通报。
责任维度。 主机负责人是整改第一责任人,安全团队负责复查和监督,如果同一个IP连续两个周期被检出同类弱口令,应该对负责人绩效扣分,同时检查是否存在账号共用或密码明文传输的深层问题。
利用运维流程防止弱口令复发
单靠检查终究是被动防御,更长效的做法是在ITSM流程里加入口令强度校验卡点,
- 域名解析与主机交付审批单中,默认勾选“已启用密码复杂度策略”
- 变更管理流程中,凡是涉及账号创建、密码重置的操作,必须附带基线合规自检结果
- 新应用上线前,安全团队用脚本扫描所有配置文件中的明文密码,发现一个驳回一个
这些流程卡点不会增加太多工作量,但能从根本上减少弱口令的产生。
主机弱口令扫描工具与检查脚本的选型思路
工具选型不追求大而全,关键是贴合自身环境,以下对比可供参考。
| 工具类型 | 代表方案 |
适用场景 | 注意事项 |
|---|---|---|---|
| 商业扫描器 | 绿盟极光、WebInspect | 大企业合规检查 | 需要采购授权,策略库更新快 |
| 开源扫描器 | Nmap+hydra | 技术团队自测 | 不能产生合规报告,需自写解析 |
| 云平台原生 | 简米云安骑士、酷番云主机安全 | 云主机基线检查 | 只覆盖云上资产,混合架构需补充 |
| 自研脚本 | Bash/PowerShell | 特定业务定制 | 维护成本高,但满足自定义基线 |
选好后要做工具有效性验证,就是拿一台已知有弱口令的测试机跑一遍,确认能扫出来,否则到正式检查才发现工具误报漏报,整个流程就白搭了。
自建基线检查脚本的示例逻辑
日常巡检可以不用重型工具,用一个小脚本定期跑也行,基础逻辑是:
- SSH到目标主机
- 读取
/etc/shadow,过滤出密码位不等于和的账户 - 调用
john或hashcat做字典比对,或者直接用常见弱口令hash做匹配 - 检查
/etc/passwd中shell为/bin/bash或/bin/sh的账户数量 - 把结果以JSON格式输出到集中平台
这种脚本效率不如商用扫描器,但胜在轻量,适合几十台主机的场景,注意脚本运行账号的权限要隔离,不要把root密码直接写在脚本里,推荐用SSH key认证。
Q&A:主机弱口令整治常见疑问
如何平衡弱口令强度与运维人员记忆负担?
导入企业级密码管理平台,比如堡垒机的“改密计划”功能,由系统自动生成随机强密码并安全存储,运维人员只需要通过单点登录访问主机,不需要知道明文密码,从源头消除“口令简单好记”的需求。
基线检查发现共享账号存在弱口令,怎么处理?
先停用该共享账号,为每名管理员创建独立账号并配置sudo权限,然后强制重置原共享账号密码,并在审计策略中记录所有新的认证日志,如果业务确实需要无人值守的共享账号,要把该账号的操作权限收敛到最小范围,且密码托管在密码保险箱里,不用时禁止取出。
公网暴露的旧服务器没人维护,但扫出了弱口令,该先改密码还是先下线?
建议立即修改密码并同时发起资产下架审批,先改密码是应急止损,防止被利用做跳板,随后确认该服务器承载的业务是否还有使用方,如果无人认领,就建成待销毁状态,关闭公网入口,等待合规流程走完后清理磁盘并注销资产。
定期基线检查的价值不在于找到多少问题,而在于让每一轮找到的问题都能落到具体的整改动作上,把检查频率固定下来,把整改责任落实到人,把复查机制建起来,主机弱口令这个老毛病就会一天天萎缩。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/629390.html





