本文探讨了通用的信息系统安全和相关技术方案,应当包括以下板块和内容
概念、构想和基础安全
-
安全过程、纵深防御、平衡和妥协,模块化安全等基本安全概念和理念
-
信息安全教育,培训,学习,意识和习惯
针对使用者,开发者,管理和运维人员。
- 系统和数据的安全规划和分级
系统、网络、应用和业务拓扑规划,安全边界划分,信息资产,关键敏感信息定义和识别
- 威胁和风险建模,包括:
STRIDE威胁建模分析(伪装、篡改、抵赖、信息泄露、拒绝服务、权限提升);DREAD风险分析(泄露危害、可重复性、技术要求、影响范围、可发现性); 威胁抵御、弱化和消除实现或技术方案。
- 安全管理规范
组织机构,人员和角色定义,职责和权限划分、标准操作程序...
- 法律和政策合规
涉及的安全要求、安全标准、技术规范等等...
- 安全监控和审计
系统、网络、应用和数据的变更操作记录和运行日志记录,日志归集,归档和分析
- 应急响应和恢复
安装和部署文档,数据和配置备份,应急响应预案,恢复操作和检查流程
- 常用安全原则
纵深防御;默认安全;最小系统;数据和代码分离;不信任机制;降低可预测性;攻击者思维...
- 信息和数据安全需要综合考虑其可用性、机密性、完整性、可验证和不可否认性
系统和网络
- 设备和物理安全
- 系统加固和最佳实践
- 默认安全,最小系统和最小权限
- 账号分配、授权和访问控制
- 定期扫描、评估和维护(系统监控、漏洞扫描/修复和安全升级)
- 支撑软件本身的安全最佳实践(数据库系统、中间件、开发平台和框架)
- 网络配置和访问安全(设置端口访问,防火墙策略,上网设置等)
用户和客户端安全
- 用户身份认证技术过程安全
- 访问控制安全(Token安全、访问控制)
- 验证码,有必要的二次认证和硬件认证
- 用户账号使用策略(登录次数限制、账号复杂度、过期和更新...)
- 客户端代码和内容安全(XSS、CSRF、钓鱼/视觉欺骗...)
- 浏览器版本和更新,安全策略和设置
应用和数据
- 安全设计和实现
- 代码安全规范和最佳实践
- 源代码审核和测试
- 合理的设置跨域和同源策略
- 合理的控制响应到前端的错误和操作信息
- 接口访问控制(REST接口和模块、Token管理和验证..)
- 应用部署安全(区分环境,部署环境、部署和运行的账号)
- 应用配置和启动安全(配置信息、环境变量、密钥管理..)
- 数据存储安全(关键敏感信息的加密和解密,文件和数据完整性检查)
- 数据传输安全(HTTPS,数据传输加密和验证,响应内容限制)
- 攻击防护(XSS、CSRF等Web攻击、DOS、中间人、重放、暴力破解、收集分析、SQL注入、文件上传、木马、蠕虫....)
常见攻击和应对方式
下面列举了网络和系统安全中,常见攻击方式和应对的技术方案:
攻击方式 | 应对和解决方案 |
---|---|
社会工程 | 安全意识,安全教育,一人一号,一站一密,定期改密 |
信息收集 | 网络访问控制,最小系统,最小权限,响应/错误信息控制 |
XSS | 浏览器安全策略和配置,前后端分离,输入检查,代码和配置安全 |
CSRF | 验证码,Referer,请求Token,安全配置,输入检查 |
视觉欺骗 | 安全意识,客户端策略,安全配置,客户端升级 |
SQL注入 | 预编译语句和绑定参数,数据类型和内容检查 |
密码泄露和破解 | 一站一密,密码强度,密码策略,数据摘要,加密,加盐... |
认证破解 | 认证过程随机信息,认证过程时间控制,多因子,硬件认证,Token有效期,Token验证 |
信息泄露 | 数据加密和验证,访问控制 |
权限提升 | 最小权限,独立账号,服务账号,安全配置,网络和端口限制 |
文件上传 | 权限控制,类型检查,文件改名,独立域名,Web服务配置 |
DOS | 流量限制,请求限制 |