20、应用系统安全加固
Categories:
3 分钟阅读
定位:B/S 业务应用系统等保三级安全加固手册:按身份鉴别、会话管理、访问控制、安全审计、通信加密、输入校验与文件上传下载分节,每项给出加固要求、验证方法与整改优先级,并附测评项对照表。
适用:B/S 业务应用系统(C/S 可参考);与 05、Windows、11、Linux、12、MySQL 等主机与数据库加固配合使用。 高风险提示:应用存在默认口令/弱口令、核心功能未授权访问、可获取敏感数据的 SQL 注入,均可构成高风险(见 22、高风险对照表)。
使用说明:
- 本文为加固操作手册:所有命令都会修改配置,可能中断服务、断开当前会话或需要重启。实施前必须完成变更审批、确认业务窗口、备份原配置(设备
save与copy running-config/backup startup-configuration,主机备份/etc、注册表与关键业务数据),并准备可执行的回滚预案。- 先在测试环境或单台设备灰度验证,确认无业务影响后再批量推广;每完成一项立即用文中「验证」命令核验生效——配置已下发不等于策略已生效(如 H3C 未
password-control enable、Linux 未对存量账户chage、Windows 未gpupdate /force)。- 示例中的地址、账户名、口令、路径均为演示值(如
PleaseChange@123、192.168.10.20、admin123),现场须替换为符合本单位口令策略与网络规划的真实值,严禁直接沿用文中示例口令;对外发布或归档时须对个人信息与内网管理地址脱敏。- 命令不存在、视图名或参数与本文不一致时,先用
display version/show version/winver确认版本与部署形态,再查阅对应版本官方文档换用等效命令;版本差异不得直接作为「无法整改」的结论,须给出替代措施并评估其实际效果。- 涉及账户、锁定、超时、防火墙与端口收敛的变更存在锁死自身风险:务必保留一条已验证的恢复通道(Console 口、带外管理口、堡垒机会话或另一管理员账户)后再实施。
- 加固完成后按「16、安全评估加固记录表3.0」逐项留痕(整改前后回显、操作人、时间、验证结论、回退情况),并纳入复测;测评判定口径以 GB/T 28448-2019 与《高风险判定指引》为准,本文的「加固要点」不构成最终测评结论。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点,并写明判定依据与承载该能力的上位组件。- 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则:控制能力由统一认证平台、堡垒机、日志审计系统、终端管理系统、虚拟化平台或云托管平台承载时,应注明测评单元边界后判定不适用或转由上位组件核查,不得机械按缺失判不符合。
- 产品版本确实不提供该能力(如老旧设备无 SNMPv3、无可信根、社区版无审计模块、已停止官方支持的操作系统)时,须核查替代措施并按替代措施的实际效果定档,不得直接判不适用;已停止支持的版本应同时提出升级或补偿控制建议。
一、身份鉴别
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)(应用系统自身用户身份标识与鉴别)
加固要点:应用用户身份标识唯一且实名,禁止共用账户与匿名访问业务功能:清理开发测试遗留账户、演示账户与默认管理员账户,首次登录强制改密;鉴别信息复杂度与有效期由服务端强制校验(不得仅依赖前端 JS);三级系统应采用两种或两种以上鉴别技术组合(口令 + 短信/OTP/数字证书/生物特征),仅口令单因素时须写明并评估补偿控制(登录来源限制、异常登录告警);能力由统一身份认证平台承载时,应注明测评单元边界后转由上位平台核查。
验证方法:用户与角色清单(含账户状态、创建时间、最后登录时间)、默认与测试账户清理记录、口令策略在服务端配置或代码中的实现位置与生效截图、双因素认证配置与一次登录实测录屏、统一身份认证对接说明与边界界定材料。
应用系统存在默认管理员账户且未改口令、存在空口令或弱口令账户,或管理后台对互联网开放且仅单因素口令鉴别,按《高风险判定指引》可直接判高风险;账户共用导致操作无法追溯到自然人时,按高风险线索记录。
判定口径详见 22、高风险判定指引与加固对照表。
1.1 登录失败处理
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 b)(提供登录失败处理功能,限制非法登录次数)
加固要点:配置并启用登录失败处理:连续失败 3
5 次后锁定账户 1030 分钟或强制图形/滑块验证码,锁定与解锁事件记入审计日志;策略须覆盖管理员账户,且不得因锁定导致唯一管理员失联(保留恢复通道或多管理员);同时防范用户枚举(错误提示统一为「用户名或口令错误」,不区分账户不存在与口令错误);对外系统另需限制单 IP 与单账户的尝试频率,防止分布式撞库。验证方法:失败处理配置项、一次连续失败至阈值的实测(账户被锁定或出现验证码,含时间与被锁账户)、错误提示一致性截图(不存在的账户与错误口令返回相同提示)、审计日志中的锁定与解锁记录、IP 频率限制配置与实测。
对外提供服务的业务系统登录接口无任何失败处理与频率限制,可被无限次口令猜测或撞库,且存在弱口令账户时,按高风险线索记录;失败锁定未覆盖管理员账户同样记录。
判定口径详见 22、高风险判定指引与加固对照表。
- 连续失败 5 次锁定账户/拒绝该来源 10~30 分钟,或启用图形验证码/短信校验防爆破;
- 核查方法:现场对一个测试账户连续输错 5 次口令,观察锁定/验证码行为;检查后台账户是否有爆破防护日志。
1.2 口令策略
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)(身份鉴别信息具有复杂度要求并定期更换)
加固要点:应用侧强制口令复杂度与老化:最小长度不低于 8 位(管理账户与三级系统建议 12 位以上)、至少包含大写字母/小写字母/数字/特殊字符中三类、有效期不超过 90 天并到期强制修改、历史口令防重复不少于 5 次、禁止使用弱口令字典中的常见口令与含用户名或系统名的口令;校验逻辑必须在服务端实现(仅前端 JS 校验可被绕过);首次登录与口令重置后强制修改初始口令,初始口令不得统一发放且不得为固定值。
验证方法:口令策略配置项或校验代码片段(服务端)、一次不合规口令提交被拒的请求与响应、口令老化到期强制修改的实测、历史口令重复被拒的实测、初始口令发放与首次登录改密流程说明。
- 最小长度 ≥8、至少两类字符组合;有效期 ≤90 天;首次登录/重置后强制改口令;禁止与用户名相同;
- 核查方法:新建用户试设弱口令(123456、与用户名相同)应被拒绝;核查口令加密存储(见 1.3)。
1.3 口令加密存储
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)、8.1.4.8 数据保密性 a)(配置与口令文件中不得出现明文鉴别信息)
加固要点:用户鉴别信息必须以加盐的单向慢散列存储(bcrypt、scrypt、Argon2、PBKDF2 之一,并配置合理的工作因子),禁止 MD5/SHA1 无盐散列、禁止可逆加密与明文存储;口令重置采用一次性令牌而非人工查看原口令;应用配置文件、代码仓库、日志与备份中不得出现明文口令或数据库连接串口令(应使用配置中心或凭据管理系统并限制读取权限)。历史遗留的弱散列账户须强制重置并以新算法重新存储。
验证方法:数据库中口令字段样例(散列前缀应可识别算法,如
$2a$/$2b$为 bcrypt、$argon2、scrypt、PBKDF2 迭代次数)、散列实现代码位置与工作因子配置、在代码仓库与配置文件中检索明文口令的结果、口令重置流程的一次性令牌实现说明、历史弱散列账户的清理与重置记录。
用户口令以明文、可逆加密或无盐 MD5/SHA1 存储,或数据库连接串明文口令提交至代码仓库、写入日志与备份文件,一旦数据泄露即导致全量口令可还原或撞库,按《高风险判定指引》可直接判高风险。
判定口径详见 22、高风险判定指引与加固对照表。
- 口令必须加盐哈希存储(bcrypt / PBKDF2 / SM3),禁止明文、Base64、MD5(无盐)等可逆或弱方式;
- 核查方法:查看用户表口令字段格式(
select password from user limit 1类),bcrypt 有$2b$前缀、PBKDF2 有迭代参数标识;无盐 MD5 应整改并强制全员重置。
1.4 默认与共享账户治理
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~g)(应用账户、角色与功能级/数据级授权)
加固要点:按角色最小授权并服务端强制校验:逐项核查越权——水平越权(改 URL 或请求体中的对象 ID 即可访问他人数据)、垂直越权(普通用户直接请求管理接口,或前端隐藏菜单但后端未校验)、未授权访问(未登录直接访问业务接口或静态资源);管理功能与业务功能分离,敏感操作(改权限、改配置、导出数据、删除)须二次确认并留痕;数据级权限(本部门/本人)须在服务端按用户上下文过滤,禁止依赖前端传参决定数据范围。此类问题须实测而非仅看配置。
验证方法:角色权限矩阵与菜单/接口对照表、至少三条越权实测记录(普通用户令牌直接请求管理接口的响应、替换对象 ID 后的响应、未登录访问的响应,均应为 403/401 或重定向登录)、服务端鉴权实现位置说明(拦截器/过滤器/注解)、敏感操作二次确认与审计留痕截图。
应用核心功能(管理接口、数据导出、订单与用户信息查询)存在未授权访问,或可通过替换对象 ID、直接请求接口实现水平或垂直越权获取他人敏感数据,按《高风险判定指引》可直接判高风险;权限校验仅在前端实现、服务端未校验的同样按高风险处理。
判定口径详见 22、高风险判定指引与加固对照表。
- 修改/禁用默认账户(admin/test/demo),删除离职与过期账户,一人一号禁止共享;
- 三级核心业务系统建议双因素(口令 + 短信/OTP/UKey,其中一种为密码技术)。
二、会话管理
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 b)(配置并启用结束会话、登录连接超时自动退出)
加固要点:配置并启用登录连接超时自动退出:无操作 10~30 分钟(管理端建议更短)自动注销并跳转到登录页,超时后原会话令牌立即失效(服务端销毁而非仅前端跳转);同一账户并发会话数受限,异地或新设备登录时旧会话按策略失效;令牌具备足够随机性且不可预测,注销后令牌不可重用;移动端与开放 API 场景以令牌有效期 + 刷新机制实现并说明。
验证方法:会话超时配置项(框架配置或代码位置)、实测:登录后静置至阈值再访问受保护资源应被拒绝并要求重新鉴别、注销后用旧令牌重放请求应失败、并发会话限制的配置与实测、令牌生成算法说明。
业务或管理会话无任何空闲超时、注销后令牌仍可用,或会话 Cookie 缺少 HttpOnly/Secure 导致可被 XSS 窃取与重放时,按高风险线索记录。
判定口径详见 22、高风险判定指引与加固对照表。
- 空闲会话超时自动退出(建议 ≤10 分钟,业务允许时);
- 登出后服务端会话/令牌立即失效(JWT 需有吊销机制或短有效期);
- Cookie 属性:
HttpOnly、Secure、SameSite;登录成功后重置 Session ID(防会话固定); - 核查方法:登录后抓包查看 Set-Cookie 属性;静置超时时间后点击功能应跳回登录页;登出后回放原 token 应失效。
三、访问控制(测评实测重点)
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~g)(应用账户、角色与功能级/数据级授权)
| 核查项 | 方法 | 判定 |
|---|---|---|
| 未授权访问 | 不登录直接访问功能 URL 与接口(含 API) | 应统一跳转登录/返回 401,不返回业务数据 |
| 水平越权 | 登录普通用户 A,将请求中用户 ID/订单号改为 B 的 | 应拒绝并记录,不返回他人数据 |
| 垂直越权 | 登录普通用户,直接请求管理功能 URL/接口 | 应拒绝(隐藏按钮≠无接口) |
| 默认账户 | admin/123456、admin/admin 等常见组合试登 | 应失败;默认口令存在属高风险 |
整改方向:服务端按"会话身份 + 权限矩阵"逐请求鉴权;接口层统一鉴权中间件;管理功能与业务功能网络/路径分离。
四、安全审计
对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)(应用操作日志与登录日志)
加固要点:应用须记录并保护审计日志:覆盖用户登录注销(含失败原因)、重要业务操作(增删改、导出、审批、权限变更)、系统管理操作与安全事件;记录内容包含事件日期时间、用户标识、来源 IP、操作类型与对象、结果;日志留存不少于 6 个月并外送日志审计系统统一留存(应用本地日志可被管理员清除);审计记录本身不可被业务管理员删除或篡改,审计查看权限归安全审计员;日志中不得记录明文口令、完整卡号等敏感信息。
验证方法:审计日志配置项与实现说明、真实日志样例数条(含全部要素、敏感字段已脱敏)、留存起始时间与容量策略、外送日志审计系统的接入配置与接收记录、用业务管理员账户尝试删除日志被拒的实测、在日志中检索明文口令的结果。
- 记录登录成功/失败、账户管理、授权变更、关键业务操作(增删改、导出、审批);
- 每条含日期时间、用户、来源 IP、操作、对象、结果;
- 日志留存 ≥6 个月并转发日志审计平台;日志中不得记录口令明文;
- 核查方法:执行一次典型业务操作后查询审计/操作日志字段完整性。
五、通信加密
对应控制点:GB/T 22239-2019 8.1.4.7 数据完整性 a)、8.1.4.8 数据保密性 a)、8.1.2.2 通信传输 a)b)(应用通信 HTTPS/TLS)
加固要点:应用对外与内部服务间通信全程加密:全站 HTTPS 并由 HTTP 301 强制跳转,TLS 版本不低于 1.2、禁用弱套件,证书在有效期内且域名匹配;启用 HSTS;会话 Cookie 加
Secure与HttpOnly;登录等敏感接口不得在 URL 查询串中传递口令与令牌(避免落入访问日志与 Referer);微服务与前后端分离场景须核查内部调用链路(网关到后端、服务间 RPC、消息队列)是否同样加密,或处于受信隔离网段并说明。验证方法:
curl -sI http://<host>/的 301 与Location、openssl s_client -connect <host>:443 -tls1_2协商结果与证书链有效期、响应头Strict-Transport-Security与Set-Cookie属性、内部链路加密说明或网段隔离证明、登录请求报文(口令在 POST body 且已加密传输)。
承载登录鉴别、个人身份信息或交易数据的业务系统全程 HTTP 明文,或仍支持 TLS1.0/1.1、证书已过期或域名不匹配,鉴别信息与会话令牌可被嗅探或劫持时,按《高风险判定指引》可直接判高风险。
判定口径详见 22、高风险判定指引与加固对照表。
- 登录与管理全流程 HTTPS(TLS 1.2+,禁 SSLv3/TLS1.0/1.1),证书有效且与域名匹配;
- 内部服务间调用涉及鉴别信息或敏感数据的同样加密;
- 核查方法:
curl -I http://应重定向 https 或拒绝;浏览器查看证书链与协议版本。
六、输入校验与文件上传下载
对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)(输入校验、文件上传下载、组件漏洞与最小功能)
加固要点:按高频缺陷逐项核查并整改:SQL 注入(一律参数化/预编译,禁止字符串拼接,含 ORM 的原生 SQL 与动态排序字段)、XSS(输出编码 + CSP,富文本白名单过滤)、命令注入与不安全反序列化(禁用不可信数据反序列化、限制可执行命令白名单)、SSRF(限制内网地址与协议、禁跟随重定向)、文件上传(扩展名 + MIME + 魔数三重校验、随机化存储名、上传目录禁执行、独立域或对象存储)、文件下载(路径穿越校验、白名单目录)、依赖组件漏洞(建立 SBOM 并跟踪公告升级)。整改须以实测复验而非仅代码审查。
验证方法:代码审计或渗透测试报告中相关条目的整改前后对比、参数化查询实现片段、上传校验与存储路径规则、下载接口的路径校验实现、依赖清单与漏洞扫描结果(含版本号)、一次注入/XSS/穿越的实测被拦截记录(请求与响应)。
应用存在可获取敏感数据或可执行系统命令的 SQL 注入、命令注入、任意文件上传(可上传并访问脚本文件)或任意文件下载与路径穿越漏洞,按《高风险判定指引》可直接判高风险;使用存在已公开高危漏洞且无补丁或补偿控制的框架与组件(如老版本 Log4j2、Struts2、Fastjson、Shiro)同样按高风险处理。
判定口径详见 22、高风险判定指引与加固对照表。
- SQL 注入:参数化查询/预编译,禁止字符串拼接;结合漏扫报告确认;
- XSS:输出按上下文编码,富文本走白名单过滤;
- 文件上传:类型白名单 + 内容校验、随机重命名、存储目录不可执行、限制大小;
- 文件下载:路径白名单校验,禁止
../目录穿越; - 错误处理:生产环境关闭调试模式与堆栈输出,自定义错误页,不泄露路径/SQL/中间件版本。
七、整改优先级
- 高风险:弱口令/默认口令、未授权访问、可利用的注入与上传漏洞;
- 鉴别与会话类(锁定策略、口令策略、超时、加密存储);
- 审计与日志对接;
- 加固留痕用 16、加固记录表。
测评项对照表
| 控制点(GB/T 22239-2019 安全计算环境-应用系统) | 对应章节 |
|---|---|
| 身份鉴别 a)~d) | 一 |
| 访问控制(含授权主体配置策略、粒度) | 三 |
| 安全审计 a)~c) | 四 |
| 通信完整性/保密性 | 五 |
| 数据完整性(输入校验/返回校验) | 六 |
| 剩余信息保护(鉴别信息清除) | 一、二 |
| 个人信息保护 | 一、四 |
参考依据
- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》(8.1.4 安全计算环境各控制点(业务应用系统自身安全);涉应用通信时另含 8.1.2 安全通信网络):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》(测评对象边界认定、单元测评实施与结果判定:符合/部分符合/不符合/不适用):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C
- GB/T 22240-2020《信息安全技术 网络安全等级保护定级指南》、GB/T 25070-2019《安全设计技术要求》、GB/T 28449-2018《测评过程指南》,可在全国标准信息公共服务平台检索:http://openstd.samr.gov.cn/bzgk/gb/
- OWASP 官方站点(ASVS 应用安全验证标准 / Top 10 / Cheat Sheet Series):https://owasp.org/
- MITRE CWE 官方站点(缺陷类型编号与缓解措施检索):https://cwe.mitre.org/
- 《网络安全等级保护测评高风险判定指引》(中关村信息安全测评联盟团体标准)——高风险情形判定口径,站内对照表:22、高风险判定指引与加固对照表
- 命令核验说明:应用侧加固要求以 OWASP 官方 ASVS(应用安全验证标准)、Top 10 与 Cheat Sheet Series,以及 MITRE CWE 的缓解措施口径核验(核验日期 2026-09-02)。五处须留意:① 应用系统多为开发商交付的成品,加固手段以配置项、部署方式与制度约束为主,涉及代码整改(参数化查询、输出编码、口令散列算法)时须由开发商出补丁并纳入版本发布流程,测评报告中应写明整改责任方、计划版本与临时补偿控制(WAF 规则、堡垒机、限制访问来源),不得只写「建议整改」而无落地路径;② 口令散列算法无法通过配置查看,须以数据库中的口令字段样例(长度与前缀特征,如 bcrypt 的
$2a$/$2b$、Argon2 的$argon2id$)或开发商说明确认,仅看「登录页面有复杂度提示」不构成符合;③ 越权与注入类问题必须实测:用低权限账户令牌直接请求高权限接口与越权访问他人数据 ID,仅查看代码或配置无法取证;④ 全站 HTTPS 由 Nginx/负载均衡终结时,须核查后端链路与X-Forwarded-Proto传递,否则应用侧的SecureCookie 与强制跳转会失效,此时应结合「21、Web中间件安全加固」一并整改;⑤ 会话超时的判定以实测为准(登录后静置至阈值再访问受保护路径应被重定向到登录页),配置文件中的超时值与实际容器行为可能不一致。