MFA是等保三级等合规框架强制要求的控制点,须满足可控、可审、可验证;账号层需绑定真实身份与最小权限,认证层密码模块须达商密二级,审计层须全链路留痕。

服务器多因素认证(MFA)不是“加个验证码就完事”的功能补丁,而是等保三级、密评二级、GDPR、ISO 27001等主流合规框架中明确要求的强制性控制点。真正落地时,关键不在“有没有”,而在“是否可控、可审、可验证”——即认证行为本身必须纳入企业级审计闭环,且满足密码模块安全等级与身份鉴别强度的双重硬性要求。
账号层:MFA必须绑定真实身份与最小权限
合规审计首先查验账号生命周期管理是否与MFA强耦合。常见问题包括:测试账号未禁用却启用MFA、离职员工账号仍保留TOTP绑定、sudo提权账户未强制MFA等。
- 所有具备登录能力的账号(含服务账户如jenkins、backup)必须配置MFA,禁用纯口令直连;
- 使用pam_google_authenticator或pam_oath时,需在/etc/pam.d/sshd中启用auth [success=done default=ignore] pam_exec.so /usr/local/bin/check-mfa-status.sh类校验钩子,防止绕过;
- 为审计管理员(如shenji)单独配置MFA策略:仅允许硬件令牌(如YubiKey)+生物特征组合,禁止短信或邮箱类弱通道。
认证层:密码模块必须达商密二级,且不可降级
等保三级明确要求“至少一种鉴别技术应使用密码技术实现”,而密评GB/T 39786规定:三级系统所用动态口令产品必须通过GM/T 0028-2020二级认证。这意味着,若采用软件OTP(如Google Authenticator),其底层生成算法、密钥存储、时间同步机制必须由已认证的二级密码模块支撑——自建TOTP服务不满足要求。
- 优先选用已获GM013111420250947等商密二级证书的MFA产品(如宁盾NDKEYTPASS V8.0);
- 禁用/etc/ssh/sshd_config中的KbdInteractiveAuthentication yes配合未认证的PAM模块;
- 对SSH登录,强制启用AuthenticationMethods publickey,keyboard-interactive,确保公钥+MFA双因子缺一不可。
审计层:全链路留痕,覆盖“谁、何时、用何方式、成功与否”
MFA本身必须可审计,否则等于没有。合规检查项会直接读取/var/log/secure和/var/log/audit/audit.log,验证是否记录完整认证事件上下文。
- 在/etc/audit/rules.d/mfa.rules中添加规则:-a always,exit -F arch=b64 -S execve -F path=/usr/bin/google-authenticator -k mfa_exec;
- 配置rsyslog将PAM认证日志转发至SIEM平台,字段至少包含:user, auth_type, token_id, result, timestamp, src_ip;
- 每月导出MFA绑定关系清单(含账号、绑定时间、最后使用时间、设备指纹),与HR离职清单比对,自动标记超90天未使用的绑定。
整改与验证:脚本化闭环,拒绝人工抽查
人工逐台检查MFA配置极易遗漏,建议用标准化脚本统一执行并输出合规证据包。
- 执行加固脚本前,先运行./mfa-audit-check.sh --dry-run生成基线报告;
- 一键部署脚本应包含:PAM策略注入、sshd配置重写、audit规则加载、日志轮转策略更新;
- 验证阶段运行./mfa-compliance-verify.sh,自动检测:/etc/shadow中无空密码账号、所有登录shell均受MFA约束、最近7天审计日志中MFA失败率<0.5%。

















