安全设计
# 应用安全设计
# 身份鉴别设计
身份鉴别可分为主机身份鉴别和应用身份鉴别两个方面:
- 主机身份鉴别防护
为提高主机系统安全性,保障各种应用的正常运行,对主机系统进行一系列的加固措施,包括:
- 对登录操作系统和数据库系统的用户进行身份标识和鉴别,且保证用户名的唯一性。
- 根据基本要求配置用户名/口令;口令必须具备采用 3 种以上字符、长度不少于 8 位并定期更换;
- 启用登陆失败处理功能,登陆失败后采取结束会话、限制非法登录次数和自动退出等措施。
- 远程管理时应启用 SSH 等管理方式,加密管理数据,防止被网络窃听。
- 应用身份鉴别
为提高应用系统系统安全性应用系统进行一系列的加固措施,包括:
- 对登录用户进行身份标识和鉴别,且保证用户名的唯一性。
- 根据基本要求配置用户名/口令,必须具备一定的复杂度;口令必须具备采用 3 种以上字符、长度不少于 8 位并定期更换;
- 要求对用户进行两种或两种以上组合的鉴别技术,可采用 CA 证书的方式进行身份鉴别。
- 启用登陆失败处理功能,登陆失败后采取限制非法登录次数和自动退出等措施。
# 访问控制防护
三级系统一个重要要求是实现自主访问控制和强制访问控制。自主访问控制实现:在安全策略控制范围内,使用户对自己创建的客体具有各种访问操作权限,并能将这些权限的部分或全部授予其他用户;自主访问控制主体的粒度应为用户级,客体的粒度应为文件或数据库表级;自主访问操作应包括对客体的创建、读、写、修改和删除等。强制访问控制实现:在对安全管理员进行严格的身份鉴别和权限控制基础上,由安全管理员通过特定操作界面对主、客体进行安全标记;应按安全标记和强制访问控制规则,对确定主体访问客体的操作进行控制;强制访问控制主体的粒度应为用户级,客体的粒度应为文件或数据库表级。
由此主要控制的是对应用系统的文件、数据库等资源的访问,避免越权非法使用。采用的措施主要包括:
- 启用访问控制功能:制定严格的访问控制安全策略,根据策略控制用户对应用系统的访问,特别是文件操作、数据库访问等,控制粒度主体为用户级、客体为文件、数据库表级。
- 权限控制:对于不同的用户授权原则是能够完成工作的最小化授权,避免授权范围过大,并在它们之间形成相互制约的关系,同时权限设置可以设置有效期。
- 账号管理:严格限制默认帐户的访问权限,重命名默认帐户,修改默认口令;及时删除多余的、过期的帐户,避免共享帐户的存在。
- 系统在软件层面添加服务网关,并依据调用情况,自动制定黑白名单,禁止、限制黑名单中 ip 访问服务。
# 注入攻击防护
注入攻击防护技术和产品主要分为 SQL 注入攻击防护、XSS 注入攻击防护以及 CSRF 跨站请求伪造防护。
- SQL 注入攻击防护
针对 SQL 注入攻击,系统主要采用主流开源持久层框架,并开启 SQL 注入防火墙、针对用户输入的数据从长度、合法性层面进行校验、开启独立的数据库用户用于系统连接、对于隐秘敏感的数据进行加密处理。
具体防范 SQL 注入的措施包括:
参数化 SQL:在设计与数据库连接并访问数据时,在需要填入数值或者数据的地方,使用参数(Parameter)来给值。在使用参数化查询的情况下,数据库服务器不会将参数的内容视为 SQL 指令的一部分来处理,而是在数据库完成 SQL 指令的编译后,才套用参数运行,因此就算参数中含有恶意的指令,由于已经编译完成,就不会被数据库所运行,因此,可从一定程度上避免 SQL 注入。
字符串过滤。
使用正则表达式过滤传入的参数。
前端 js 防范 SQL 注入。
在数据库中限制用户权限,drop/create/truncate 等权限谨慎 grant
多使用数据库自带的安全参数。
使用专业的漏洞扫描工具来寻找可能被攻击的点。
XSS 注入攻击防护
针对 XSS 跨站脚本攻击,系统在前端以及服务端都对用户输入的数据进行合法性校验、对数据进行 Html Encode 处理、对数据中出现的特殊的字符(例:<script>
)进行过滤处理。
- CSRF 跨站请求伪造防护
针对 CSRF 跨站请求伪造攻击,系统主要从协议、请求连接层面进行防护,协议层面通过验证 HTTP 协议的 Referer 字段、自定义数据验证等方式。连接层面通过在连接中添加 token 并进行验证等方式。
# 应用审计设计
系统审计主要从应用级进行设计,主要通过与安全运维章节的日志分析相结合:
应用层安全审计是对业务应用系统行为的审计,需要与应用系统紧密结合,此审计功能与应用系统统一开发。
应用系统审计功能记录系统重要安全事件的日期、时间、发起者信息、类型、描述和结果等,并保护好审计结果,阻止非法删除、修改或覆盖审计记录。同时能够对记录数据进行统计、查询、分析及生成审计报表。
部署数据库审计系统对用户行为、用户事件及系统状态加以审计,范围覆盖到每个用户,从而把握数据库系统的整体安全。
# 通信完整性与保密性设计
- 完整性设计
信息的完整性设计包括信息传输的完整性校验以及信息存储的完整性校验。对于信息传输和存储的完整性校验可以采用的技术包括校验码技术、消息鉴别码、密码校验函数、散列函数、数字签名等。
- 保密性设计
实现通信保密性主要由应用系统完成。在通信双方建立连接之前,应用系统应利用 SSL 技术进行会话初始化验证,并对通信过程中的敏感信息字段进行加密。
# 防抵赖设计
解决系统抗抵赖特性最有效的方法就是采用数字签名技术,通过数字签名及签名验证技术,可以判断数据的发送方是真实存在的用户。数字签名是不对称加密算法的典型应用。数字签名的应用过程是,数据源发送方使用自己的私钥对数据校验和或其他与数据内容有关的变量进行加密处理,完成对数据的合法“签名”,数据接收方则利用对方的公钥来解读收到的“数字签名”,并将解读结果用于对数据完整性的检验,以确认签名的合法性同时,通过对签名的验证,可以判断数据在传输过程中是否被更改。从而,可以实现数据的发送方不能对发送的数据进行抵赖,发送的数据是完整的,实现系统的抗抵赖性和完整性需求。
# 数据安全设计
# 备份与恢复
备份与恢复主要包含两方面内容,首先是指数据备份与恢复,另外一方面是关键网络设备、线路以及服务器等硬件设备的冗余。
数据是最重要的系统资源。数据丢失将会使系统无法连续正常工作。数据错误则将意味着不准确的事务处理。可靠的系统要求能立即访问准确信息。将综合存储战略作为计算机信息系统基础设施的一部分实施不再是一种选择,而已成为必然的趋势。
数据备份系统遵循稳定性、全面性、自动化、高性能、操作简单、实时性等原则。备份系统先进的特性可提供增强的性能,易于管理,广泛的设备兼容性和较高的可靠性,以保证数据完整性。广泛的选件和代理能将数据保护扩展到整个系统,并提供增强的功能,其中包括联机备份应用系统和数据文件,先进的设备和介质管理,快速、顺利的灾难恢复以及对光纤通道存储区域网(SAN)的支持等。
提供能异地数据备份功能,利用通信网络将关键数据定时批量传送至异地备用场地。
故针对每个业务服务系统、业务管理系统的数据库添加主备机制,当主数据库服务宕机时可以随时切换至备用数据库,且可以使用备用数据库实现读写分离,提高系统的响应速度。
# 数据保密性和完整性设计
系统涉及到的所有系统均采用 SSL/HTTPS 协议作为安全传输机制,常用的网站系统一般采用 HTTP 协议进行通信,HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此 HTTP 协议不适合传输一些敏感信息,比如信用卡号、密码等。
# 数据动态加解密
采用动态加解密工具,实现了以智能化策略对数据进行自动实时灵活的加密解密,达到了不用人为干涉而是根据各种安全管理策略,完全实现对信息数据的安全保管、安全使用,防止信息涉密。整个加解密操作完全是驱动级的,只要用户有改写磁盘的操作,那么预先选定的数据就会被自动加密或是解密,用户感觉不到加解密过程的存在,并且不影响文件打开时间,以及文件的大小。
通过应用动态加解密技术,所有已定义(管理员设定)的加密类型文件或者数据被自动加密存放在硬盘上,由于工作组内部应用相同的策略、密钥,所以内部员工可以共享这些密文数据,不需要手动加解密。在实际工作中,有些数据需要被用户单位或者专家用户使用,工作组提供专门作为数据输出端口的用户权限设置服务。设置规则分为:传递给合法用户的数据和非法获取到的数据。对于合法用户,管理员在控制台将其设置数据使用权限,数据即以明文的形式传递给用户。对于非法获取到的数据,用户未经过授权,见到的是经过加密之后的密文数据,非法用户根本无法掌握真实数据。
# 数据脱敏设计
- 脱敏流程
数据脱敏的流程一般分为:敏感数据发现、敏感数据梳理、脱敏方案制定、脱敏任务执行四大步骤,结合数据脱敏算法、数据脱敏规则以及脱敏的环境来达到最佳的数据脱敏效果。
- 敏感数据发现
敏感数据的发现分为人工发现和自动发现两种。对于相对固定的业务数据,可以采用人工甄别,明确指定那些列、那些库的数据是需要脱敏,这些数据一般数据结构和数据长度不会有变化,大部分为数值型和固定长度的字符。比如:身份证号、健康档案编号等标识列,针对这些数据可以通过人工指定脱敏规则和不同的数据访问策略,保证敏感信息不被泄漏。自动识别根据人工指定或预定义的敏感数据特征,借助敏感数据信息库和分词系统,自动识别数据库中包含的敏感信息,相对于人工识别可以减少工作量和防止遗漏。一般采用自动发现为主,结合人工发现和审核,来完成敏感数据的发现和定义,最终形成完善的敏感数据字典。
- 敏感数据梳理
在敏感数据发现的基础上,完成敏感数据列、敏感数据关系的调整,以保证数据的关联关系。通过屏蔽、变形、替换、随机、格式保留加密、强加密等数据脱敏算法,针对不同的数据类型进行数据掩码扰乱。
- 脱敏方案制定
对于不同的数据脱敏需求,在基础脱敏算法的基础上,可配置专门的脱敏策略。脱敏方案的制定主要依靠脱敏策略和脱敏算法的复用来实现,通过配置和扩展脱密算法以制定最优方案。
- 脱敏任务执行
脱敏任务的停止、启动、暂停等操作,支持任务并行处理,支持脱敏任务的中断续延等。
- 脱敏规则
脱敏规则,一般的脱敏规则分类为可恢复与不可恢复两类。
可恢复类,指脱敏后的数据可以通过一定的方式,可以恢复成原来的敏感数据,此类脱敏规则主要指各类加解密算法规则。
不可恢复类,指脱敏后的数据被脱敏的部分使用任何方式都不能恢复。一般可分为替换算法和生成算法两大类。替换算法即将需要脱敏的部分使用定义好的字符或字符串替换,生成类算法则更复杂一些,要求脱敏后的数据符合逻辑规则,即是“看起来很真实的假数据”。
# 运维安全设计
# 安全扫描
安全扫描目的是提高内部网络安全防护性能和抗破坏能力,检测评估已运行网络的安全性能,为网络系统管理员提供实时安全建议。安全扫描作为一种积极主动的安全防护技术,提供了对内部攻击、外部攻击和误操作的实时保护,在网络系统受到危害之前可以提供安全防护解决方案。
安全扫描是一种快速有效的安全评估手段,可以发觉系统可能存在的部分安全问题,安全扫描内容包括渗透测试和代码漏洞扫描,通过第三方测评公司来进行扫描,在子系统验收前完成。
在安全扫描过程中严格遵守以下原则:
- 不能影响目标系统所承载的业务运行;
- 不能严重影响目标系统的自身性能;
- 操作时间选择在系统业务量最小,业务临时中断对外影响最小的时候。
# 人工检查
人工检查是指安全专家登录主机,网络设备,根据检查列表对可能存在的安全漏洞进行逐项检查,根据检查结果提供详细的漏洞描述和修补方案。人工检查作为人工实施的安全评估手段可以弥补由于在放火墙策略等安全措施下,安全扫描无法发现系统内部存在的安全隐患。通过安全专家在主机、网络等设备上的实际操作,可以更深程度地发现系统存在的问题及需要安全增强的脆弱点。
人工检查是信息系统脆弱性发掘的一种有效措施,可以发现系统内部帐号策略、权限管理、日志审核、网络服务等诸多问题。对服务器及网络系统来说人工检查是安全加固的必要步骤。
人工检查如下内容:
- 安全配置检查
- 系统管理和维护的正常配置,合理配置,及优化配置。
- 例如系统目录权限,帐号管理策略,文件系统配置,进程通信管理等。
- 安全机制检查
- 安全机制的使用和正常配置,合理配置,及优化配置。
- 例如日志及审计、备份与恢复,签名与校验,加密与通信,特殊授权及访问控制等。
- 入侵追查及事后取证
- 检查与发现系统入侵,攻击或其它危害,尽可能追查及取证。
- 例如日志被毁坏篡改或删除,计费数据被删除,遭受 DOS 攻击,系统被监听,控制或安装后门等
# 安全加固
现有的各类网络设备、主机系统、数据库系统、应用系统等的安全状况是动态变化的,对于安全问题的发现及安全加固优化配置等操作都需要非常专业的安全技能,需要进行周期性的安全评估、审计、加固等工作,才能够保障整体安全水平的持续提高。网络设备加固、主机加固由全民健康保障信息化工程统一管理。
安全加固服务主要是解决以下安全问题:
- 安装、配置不符合安全需求;
- 使用、维护不符合安全需求;
- 系统完整性被破坏;
- 被植入木马程序;
- 帐户、口令策略问题;
- 安全漏洞没有及时修补;
- 应用服务和应用程序滥用;
# 日志分析
日志分析是相当必要的,平台的统一日志收集分析系统从应用系统各结点获得日志文件,采取人工+工具的分析分析方法,形成日志分析报告。该报告与定期评估结果、定期策略分析结果进行综合分析,找到当前的系统中存在的问题和隐患,并提出系统升级方案。
分析工具采用目前最流行的集中式日志分析工具 ELK,它主要是由 Beats、Logstash、Elasticsearch、Kibana 等组件组成,来共同完成实时日志的收集,存储,展示等工作。
# 应急响应
在运行维护系统过程中,应急事件响应,是当安全威胁事件发生后迅速采取的措施和行动,其目的是最快速恢复系统的保密性、完整性和可用性,阻止和降低安全威胁事件带来的严重性影响。
平台将提供网络入侵、拒绝服务攻击、大规模病毒爆发、主机或网络异常事件等紧急安全问题应急相应解决方案,控制事态发展;保护或恢复客户主机、网络服务的正常工作;并且提供事后分析,找出系统的安全漏洞,根据出现的问题及时调整安全策略,根据现场保留情况尽可能对入侵者进行追查。应急响应方案及流程可详见试运行方案。