上周三凌晨两点,网络我登录一台边缘防火墙做例行巡检,系统发现admin账户的弱口密码是“admin123”。这不是令整段子。这台设备挂在公网IP上,改自告SSH端口对全网开放,查报日志里躺着三千多次来自不同国家的网络登录失败记录。换句话说,系统有人一直在试,弱口而我的令整密码跟没设一样。
弱口令这事,改自告说到底是查报人的问题,不是网络技术问题。设备出厂默认密码懒得改,系统改的弱口时候又图省事,用公司名加123,用生日,用“qwer!@#$”——看着复杂,其实在字典里排前一百。我见过最离谱的一个案例,某内网测试服务器的root密码是“root”,而且这台机器能直连生产数据库。问运维为什么,答:当时赶项目,先这样,后来忘了。
“后来忘了”这四个字,是弱口令整改里最大的敌人。
我们这次自查覆盖了全网327台设备,包括交换机、防火墙、服务器、数据库和中间件。扫描工具跑了一轮,结果不意外但依然让人不舒服:41台存在弱口令,占比12.5%。其中18台是默认密码没改,23台是人为设置的简单密码。默认密码里,华为设备的“admin/admin”出现最多,其次是H3C的“admin/admin@123”。人为设置的里面,“P@ssw0rd”出现了四次,这密码看着挺唬人,实际上在黑客字典里跟“123456”是邻居。
有一个细节值得说。我们有一台监控服务器,密码是“Monitor2023”,符合大小写加数字的复杂度要求,但问题是,这台机器的登录页面直接暴露在公网,而且用户名是默认的“admin”。攻击者不需要猜密码,只需要猜“2023”后面跟什么。这种“合规但不安全”的密码,比纯弱口令更危险,因为它给了人一种虚假的安全感。
整改动作分了三步走。第一步,所有默认密码全部强制修改,用脚本批量推,改完立即验证。第二步,人为设置的弱口令,逐个通知责任人,限时两小时改完,改完截图发群里。第三步,也是最关键的一步,把密码策略从“建议”改成“强制”。以前是“建议使用12位以上复杂密码”,现在直接上技术手段:少于12位不让设,常见字典密码直接拒绝,90天强制更换,而且不能跟上次重复。
但技术手段只能兜底。真正要解决的是习惯问题。我观察到一个现象:运维人员往往对边界设备很上心,防火墙密码设得复杂,但内网的交换机、打印机、IPMI管理口,密码经常是“默认”或者“123456”。攻击者一旦突破边界,这些内网设备就是现成的跳板。这次自查里,有7台内网交换机的密码是“admin”,其中3台还能通过SNMP读全量配置。
还有一类容易被忽略的:API接口的密钥。有些系统把密钥硬编码在代码里,或者用“secret”这种词做密钥。我们扫出来两个,一个是某内部系统的JWT密钥,值是“mysecretkey”,另一个是数据库连接串里的密码,明文写在配置文件里。这种严格来说不算弱口令,但危害一样大。
整改完成后,我做了个简单的验证。用之前收集的弱口令字典重新跑了一遍扫描,41台全部通过。但我知道,这只是暂时的。新设备上线、人员流动、项目赶工,任何一个环节都可能让弱口令重新冒出来。所以最后我们加了一条:任何设备上线前,必须通过弱口令扫描才能入网。扫描不通过,IP都不给分配。
这事没有一劳永逸。密码是人和系统之间的第一道门,门锁好不好,取决于最后一个关门的人。