Null 密码
定义:Null 密码是指允许用户或系统账户使用空密码(即不输入任何字符)进行登录或身份验证的配置。
危害:
完全绕过身份验证:
这是最严重的危害。攻击者无需破解或窃取任何密码,只需输入用户名并留空密码即可直接访问系统。这相当于没有门锁。
暴力破解的“天堂”:
攻击者可以编写极其简单的脚本,自动尝试所有已知的用户名并搭配空密码,成功率极高,且速度非常快。
极易被忽略:
系统管理员可能专注于管理复杂密码,却忘记检查是否存在允许空密码的账户或配置,从而留下一个巨大的安全漏洞。
内外部威胁:
无论是外部攻击者还是心怀不满的内部员工,都可以轻松利用此漏洞,几乎不会留下任何破解痕迹。
修复方案:
强制执行强密码策略:
在操作系统、数据库、应用程序层面,配置安全策略,强制要求所有账户的密码必须满足最小长度、复杂性(包含大小写字母、数字、特殊字符)要求。
明确禁止空密码:
Windows:通过组策略 (
Computer Configuration -> Windows Settings -> Security Settings -> Account Policies -> Password Policy
) 确保“密码必须符合复杂性要求”已启用,“最小密码长度”至少为1(实际上应设置为8以上)。Linux:通过
pam_unix
或pam_pwquality
模块配置,确保在/etc/pam.d/system-auth
或类似文件中没有nullok
参数(该参数允许空密码)。应使用minlen
,lcredit
,ucredit
等参数设置复杂性。数据库/应用:在创建用户时使用
IDENTIFIED BY 'strong_password'
语句,确保密码不为空。
定期审计和用户账户审查:
定期扫描系统,检查是否存在密码为空的账户。可以使用自动化脚本或安全配置管理(SCM)工具来完成。
对所有服务账户和用户账户进行清理,禁用或删除不再需要的账户。
使用多因素认证(MFA):
即使在某些极端情况下配置错误,启用了MFA也可以增加一层额外的保护,防止空密码直接导致完全沦陷。但这绝不能作为允许空密码的借口。
网络隔离与访问控制:
对允许远程登录的服务(如SSH, RDP, MySQL远程登录)实施网络层访问控制(防火墙策略),只允许特定的IP地址或网络段访问,减少暴露面。