Skip to content

imboy v2.x 网络安全等级保护 2.0(MLPS 2.0)合规清单

版本:v2.x | 适用等级:二级(基准)/ 三级(加固项标注) 标准依据:GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》/ GA/T 1390 最后更新:2026-06-30 维护人:运维安全团队 关联文档:docs/guides/operations/security.mddocs/guides/security/security-hardening.mdconfig/sys.config.example


说明

本清单逐条对照 MLPS 2.0 七大控制域,标注 imboy 当前实现状态:

标记含义
✅ 已实现当前代码/配置已满足,注明实现位置
⚠️ 部分实现有基础能力但存在缺口,注明差距
❌ 待实现尚未覆盖,需额外工作
N/A不适用于当前部署场景

三级专项加固项以 [三级] 标注,二级不做强制要求但建议实施。


控制域 1:安全通信网络

1.1 网络架构

控制点要求状态说明
1.1.1 业务网络与管理网络分离生产接口与运维入口走不同端口/网段✅ 已实现业务端口 9800(HTTP_PORT),管理后台 imboyadmin 独立域名;后端管理接口前缀 /adm/adm_auth_middleware.erl 独立鉴权
1.1.2 互联网边界部署边界防护设备反向代理 / 防火墙在公网入口✅ 已实现nginx 作反向代理(deploy/nginx/),ufw 控制入站端口
1.1.3 关键通信链路冗余数据库/存储具备冗余路径⚠️ 部分实现PostgreSQL 主从复制文档见 docs/guides/operations/postgres-read-replica.md;生产是否已部署取决于客户环境,需客户自行确认

1.2 通信传输

控制点要求状态说明
1.2.1 传输数据采用密码技术保护完整性HTTPS/TLS 加密所有公网流量✅ 已实现nginx 强制 HTTPS;IMBOY_API_AUTH_SWITCH=on 时所有 API 请求须带签名(src/api/auth_middleware.erl
1.2.2 TLS 版本不低于 1.2禁用 TLS 1.0/1.1✅ 已实现nginx 配置 ssl_protocols TLSv1.2 TLSv1.3deploy/nginx/nginx.conf
1.2.3 WebSocket 连接加密WSS 协议或由反向代理升级✅ 已实现nginx 将 wss:// 转发至内网 ws://imboy:9800;Cowboy WS handler 在 src/api/websocket_handler.erl;token 验证在握手阶段
1.2.4 传输数据采用密码技术保护保密性关键字段额外加密✅ 已实现客户端 init 响应用 solidified_key AES 包装(src/api/app_handler.erl);登录密码用 RSA-OAEP 传输(src/lib/elib_cipher.erl
1.2.5 [三级] 全流量双向认证 (mTLS)节点间通信使用证书双向验证❌ 待实现当前 Erlang 集群节点间通过 cookie 认证,未启用 TLS 分布连接;需配置 erl -ssl_dist_opt

控制域 2:安全区域边界

2.1 边界防护

控制点要求状态说明
2.1.1 限制不必要的通信端口最小化开放端口✅ 已实现对外仅开放 80/443;9800 仅监听 127.0.0.1(由 nginx 转发);PG 端口 5432 仅内网可达
2.1.2 禁止未授权设备接入WebSocket 连接须 JWT 认证✅ 已实现websocket_handler.erl 握手阶段校验 token,失败返回 401 关闭连接
2.1.3 边界处对网络流量做访问控制防火墙规则管理✅ 已实现deploy/preflight.sh 包含 ufw 规则检查;生产防火墙配置见 docs/guides/operations/deployment/day1-quickstart.md

2.2 入侵防范

控制点要求状态说明
2.2.1 拒绝服务攻击防护接口层速率限制✅ 已实现Refresh Token、WebSocket 握手、验证码等高频入口均有节流(src/lib/elib_throttle.erl);nginx limit_req_zone 做外层限频
2.2.2 [三级] 入侵检测系统部署 IDS/WAF❌ 待实现当前无 WAF;建议在 nginx 前加阿里云 WAF 或 ModSecurity
2.2.3 异常行为检测与告警登录失败、异常 IP 告警⚠️ 部分实现登录失败记录到 ETS login_attemptsrc/logic/passport_logic.erl);未接入实时告警;[三级] 需对接 Prometheus alerting

2.3 恶意代码防范

控制点要求状态说明
2.3.1 上传文件恶意内容检测文件上传须病毒扫描或类型校验⚠️ 部分实现Garage S3 presign 链路校验 MIME 类型和文件大小(src/api/attachment_handler.erl);未集成 ClamAV 等病毒扫描引擎
2.3.2 [三级] 主机层防病毒宿主机部署防病毒软件❌ 待实现取决于客户部署环境,私有化交付时须客户自行配置

控制域 3:安全计算环境

3.1 身份鉴别

控制点要求状态说明
3.1.1 用户身份唯一标识每个账号对应唯一 TSID✅ 已实现用户 ID 采用 TSID(64-bit,全局唯一);user_repo.erl 保证用户名/手机号唯一索引
3.1.2 鉴别信息复杂度密码强度要求⚠️ 部分实现前端有密码强度提示;后端 passport_logic.erl 校验最小长度(6位);[三级] 建议增加复杂度策略(大小写+数字+特殊字符)
3.1.3 登录失败处理(锁定/延迟)连续失败后锁定账号⚠️ 部分实现ETS 记录失败次数,超限返回错误;未实现账号临时锁定(lockout);需在 passport_logic.erl 增加锁定逻辑
3.1.4 双因素认证 [三级]高权限操作需 MFA❌ 待实现当前仅密码+RSA;管理后台无 MFA;三级场景需加 TOTP/短信二次验证
3.1.5 管理后台独立认证后台入口与业务接口鉴权独立✅ 已实现adm_auth_middleware.erl 使用独立 Cookie(IMBOY_ADM_COOKIE_SECRET),与业务 JWT 完全分离
3.1.6 会话超时非活跃会话自动失效✅ 已实现Access Token 短期有效(配置 jwt_expire);Refresh Token 有效期独立配置;WS 连接 token 过期后 8s 内刷新否则强制下线

3.2 访问控制

控制点要求状态说明
3.2.1 最小权限原则用户仅能访问自身资源✅ 已实现auth_middleware.erl 注入 uid 到请求上下文;资源 owner 校验在各 Logic 层(如 user_logic.erlgroup_logic.erl
3.2.2 管理后台角色权限控制RBAC,按角色分配能力✅ 已实现后台权限矩阵通过 settings:viewuser:manage 等权限点控制;adm_auth_middleware.erl 校验权限
3.2.3 群组访问控制非成员不可读群消息✅ 已实现group_member_repo.erl 成员校验;msg_c2g_logic.erl 发消息前验证成员身份
3.2.4 文件资源访问授权附件须授权访问✅ 已实现Garage S3 presign URL 带有效期(src/lib/elib_garage.erl),公开 scope 走独立 bucket;私有资源须 JWT 换 presign URL
3.2.5 [三级] 强制访问控制系统级 MACN/AIM 平台场景以 DAC 为主;三级若需 SELinux 级别 MAC 需操作系统层面配置

3.3 安全审计

控制点要求状态说明
3.3.1 重要用户行为审计登录/注销/敏感操作记录✅ 已实现lager 记录所有 API 请求(src/api/imboy_handler.erl);账号注销申请写入审计表(user_repo.erl apply_logout);管理后台操作记录在 adm_audit_log
3.3.2 审计记录内容完整时间、用户、操作、结果✅ 已实现日志格式含时间戳、uid、IP、action、result_code
3.3.3 审计记录不可被普通用户删除日志保护⚠️ 部分实现lager 日志写本地文件,需 OS 层面配置 append-only 或写入 Loki(docs/guides/operations/deployment/monitoring.md);Loki 日志不可删是架构设计但未强制配置
3.3.4 审计记录保存不少于 6 个月日志保留期⚠️ 部分实现Loki 保留期取决于磁盘配置;生产部署须在 deploy/loki/loki-config.yml 中设置 retention_period: 180d(当前未明确设置)
3.3.5 [三级] 集中审计管理平台日志统一收集、告警⚠️ 部分实现Prometheus + Grafana + Loki 栈已就绪(docs/guides/operations/deployment/monitoring.md);告警规则需客户按场景补充

3.4 入侵防范(计算环境)

控制点要求状态说明
3.4.1 遵循最小安装原则服务器只安装必需组件✅ 已实现Docker 镜像基于精简 Alpine/OTP 基础镜像;deploy/Dockerfile 不含调试工具
3.4.2 关闭不必要的系统服务和端口参照安全加固指南✅ 已实现docs/guides/security/security-hardening.md 端口最小化配置
3.4.3 SQL 注入防护参数化查询✅ 已实现所有 SQL 经 elib_pg 模块参数化执行(src/lib/elib_pg.erl);代码审查强制要求无字符串拼接 SQL
3.4.4 代码安全加固(XSS/CSRF)管理后台防 XSS/CSRF✅ 已实现imboyadmin React 前端做输出转义;后台 Cookie 含 HttpOnlySameSite=Strictadm_auth_middleware.erl

3.5 数据完整性

控制点要求状态说明
3.5.1 传输数据完整性HTTPS 保证传输完整性✅ 已实现TLS 提供完整性校验;消息投递有 ACK 确认机制(msg_c2c_logic.erl
3.5.2 存储数据完整性数据库约束 + 事务✅ 已实现PostgreSQL 约束、外键、事务(elib_pg:with_tx/2);钱包操作强制单事务(wallet_repo.erl reject_and_refund
3.5.3 备份数据完整性校验备份验证⚠️ 部分实现imboy/scripts/backup_pg.sh 实现备份;恢复演练记录见 docs/guides/operations/deployment/restore-drill-2026-06.md;未实现自动完整性校验哈希

3.6 数据保密性

控制点要求状态说明
3.6.1 存储敏感数据加密数据库字段级加密✅ 已实现postgre_aes_key AES-256 加密 payloadconfiginfo 等敏感字段(src/lib/elib_cipher.erl
3.6.2 个人信息保护PII 字段不明文存储✅ 已实现手机号等 PII 字段加密存储;用户密码存储 MD5(历史)+ 后续迁移 bcrypt
3.6.3 端到端加密(可选模块)E2EE 消息服务端不可解密✅ 已实现E2EE 模式下服务端仅路由密文(RSA-OAEP-256 + AES-256-GCM);e2ee_logic.erl 不持有私钥;启用方式见 docs/archive/analysis/e2ee-web-activation.md
3.6.4 [三级] 静态全卷加密磁盘层加密❌ 待实现依赖宿主机 LUKS/dm-crypt 配置;私有化交付客户需自行配置操作系统层面加密

控制域 4:安全管理中心

4.1 系统管理

控制点要求状态说明
4.1.1 集中配置管理配置统一管理,不分散硬编码✅ 已实现三层配置架构:sys.config + 环境变量 IMBOY_* + 运行时 config_ds:local_reload();见 docs/architecture/config-architecture.md
4.1.2 运维账号独立运维与业务账号分离✅ 已实现后台角色矩阵区分 admin / operator / viewer;Erlang 节点 remote_console 凭 IMBOY_CTL_COOKIE 访问,不使用业务账号
4.1.3 集中监控管理Prometheus + Grafana✅ 已实现监控栈见 docs/guides/operations/deployment/monitoring.md;metrics 端点 /metrics 仅内网可达(nginx 配置拦截外部访问)

4.2 审计管理

控制点要求状态说明
4.2.1 审计数据集中收集日志集中存储✅ 已实现lager → Loki 集中收集;Grafana Explore 查询历史日志
4.2.2 审计管理员与系统管理员分离职责隔离⚠️ 部分实现后台有角色区分但审计角色未完全独立;建议增加 audit:view 专属权限点

控制域 5:安全管理制度

控制点要求状态说明
5.1 信息安全方针政策明文安全策略文档⚠️ 部分实现docs/guides/operations/security.md 覆盖技术安全基线;企业级安全方针文件(PDF/OA 系统)需客户自行建立
5.2 安全管理制度体系覆盖开发、运维、应急⚠️ 部分实现技术层面有 security-hardening.mdbackup-restore.mdupgrade-runbook.md;制度层面文件需结合买家组织实际编写
5.3 制度定期评审每年至少评审一次❌ 待实现建议在 OA 系统或 Wiki 建立年度评审机制,本文档版本号随评审更新

控制域 6:安全管理机构

控制点要求状态说明
6.1 设置安全管理岗位明确安全责任人❌ 待实现依赖客户组织架构;建议私有化交付合同中明确客户侧安全负责人
6.2 安全审批与检查机制变更需安全审批⚠️ 部分实现代码变更通过 Git PR + 代码审查;生产变更审批流程需客户结合 ITSM 工具建立
6.3 供应链安全管理第三方组件安全评估⚠️ 部分实现docs/guides/operations/dependencies.md 列出核心依赖;未实现 SCA(软件成分分析)自动扫描;建议集成 Snyk 或 OWASP Dependency Check

控制域 7:安全管理人员

控制点要求状态说明
7.1 人员安全培训上岗前安全培训❌ 待实现依赖客户 HR/培训体系;建议提供 imboy 平台安全操作手册作为培训材料
7.2 外部人员安全管理第三方人员访问控制⚠️ 部分实现技术上可通过后台角色限制第三方权限;流程层面需客户建立外部人员准入协议
7.3 离职人员权限撤销离职立即停用账号✅ 已实现后台支持即时停用账号(adm/admin/user_handler.erl);建议配合客户 HR 系统建立自动化撤权流程

等级差异汇总

二级要求(当前覆盖情况)

已实现部分实现待实现合计
安全通信网络4105
安全区域边界3115
安全计算环境145120
安全管理中心4105
安全管理制度0213
安全管理机构0213
安全管理人员1113
合计2613544

三级额外要求(待评估项)

  • [三级] mTLS 集群节点间加密
  • [三级] WAF / IDS 部署
  • [三级] 管理后台 MFA
  • [三级] 磁盘全卷加密(宿主机层)
  • [三级] 集中审计平台告警规则完善

证据归档清单

等保测评时需提供以下证据材料:

证据类型文件/位置
网络拓扑图docs/guides/operations/deployment/production-architecture.md
TLS 配置deploy/nginx/nginx.confssl_protocols
身份鉴别配置src/api/auth_middleware.erlsrc/adm/adm_auth_middleware.erl
访问控制矩阵docs/business/edition-boundary.md
审计日志样本Loki / Grafana 截图(测评前 30 天)
密钥管理配置config/sys.config.example(脱敏版)
备份恢复记录docs/guides/operations/deployment/restore-drill-2026-06.md
漏洞扫描报告测评前由第三方出具
安全培训记录客户提供
安全策略文件客户提供

IMBoy — 企业私有化即时通讯平台