随着我国国民经济和社会信息化进程的全面加快,网络与信息系统的基础性、全局性作用日益增强,信息安全已经成为国家安全的重要组成部分。同时我们面临的网络安全威胁也在不断发生变化,过去所积累的经验教训将远远不足以应对未来的情况。
信息安全威胁的三个发展阶段如下:
第一阶段:早期的无意识攻击,以炫耀技术为主;
第二阶段:趋利性安全攻击,目的明确就是获取利益;
第三阶段:APT(Advanced Persistent
Threat)攻击,主要表现为政府的攻击、反政府的恐怖袭击等。
在新的形势下,我们的对手(即威胁的主体)在发生变化,APT攻击越来越突出。攻击者拥有大量的资源,设定精准的目标,持续的高端攻击是新型安全事件明显的特点。以前的威胁主体主要是个体、小组织团体,未来的对手会是政府的攻击、反政府的恐怖袭击等。威胁类型见图1
图1
第二章 安全现状分析
信息安全问题的出现,既有管理原因,也有技术原因,既有本身缺陷,也有外来因素所致,大量的安全问题因为当初设计应用软件时对于安全的考虑不足导致引入的安全风险,导致在后期的应用软件升级中无法全面的规避掉在运营维护过程中发现的安全隐患。这样的应用系统的安全系数直线下降,如果网络中有恶意用户对业务系统进行黑客攻击,将导致业务系统无法正常为用户提供服务甚至宕机的可能,对业务系统的损失是无法进行估量的。
对于各种安全隐患的深入分析,我们发现深层次的原因有如下两点:
深层原因分析一:安全管理存在空白期
传统安全工作的起始点一般在安全运维阶段,这样就存在“设备带病入网”、“安全漏洞仅能依靠事后发现、事后修补”的现状,无法解决规划、设计和建设阶段埋下的安全隐患,面对已经客观存在的安全风险难以彻底整改或者整改的难度、复杂度和需要的成本大幅上升,如图2。
图2
深层原因分析二:业务安全风险缺乏识别和控制措施
业务系统既有通用IT基础设施承载相关应用,又有其特有的应用、特有的业务流程。一般的安全防护是基于基础IT设备的体系,从内容上看开展的安全工作大部分仅停留在系统和设备安全配置上,缺乏对应用层、业务流程层的全面评估和防护手段,不能全面发现漏洞,无法应对日新月异的安全威胁。传统安全管理和技术措施存在明显空白薄弱点,如图3。
图3
第三章 全生命周期安全工作
要彻底解决安全问题,需要在业务全生命周期都进行风险识别和处置,使安全风险控制措施100%覆盖所有业务活动,安全提前介入改变传统安全工作疲于被动处置的低效率而高成本的状态。我们将构建安全应用平台的过程分为需求分析、设计与开发、交付与验收、运行维护、系统退服阶段。各个阶段的主要安全工作如下图。在后续的章节中将详细介绍各个环节的重点安全工作,如图4。
图4
3.1 需求分析阶段
需求分析阶段,要求规划人员和项目开发建设人员在各自负责的规划方案、立项建议书、技术建议书、项目合同、建设方案等文档中,加入信息安全方案。撰写信息安全方案时,认真考虑采用技术手段和管理手段,满足安全要求。存有客户资料、详单等敏感信息的系统时,必须使系统具备数据安全保护手段.
关于系统的安全功能需求,可依据如下的安全技术框架进行选择。主体访问客体的安全措施都可以归结到下面5个安全行为,如图5:
1、鉴别和认证 Identification
& Authentication
是通过对网络系统中的主客体进行鉴别,并且给这些主客体赋予恰当的标志、标签、证书等。主要的处理都是针对实体进行的。具体技术包括:Password 口令、Token, SmartCard等强鉴别机制。
2、访问控制 Access Control
访问控制都是以Reference Monitor的形式工作,或者说都是类似网关、接口和边界的形式。主业务必须通过Access Control这个关口才能进行正常访问。具体技术包括:Access
Control List访问控制列表、应用系统访问权限控制等。
3、审计和跟踪 Audit Trail
审计主要实现机制是通过Standby/ Sniffer类型的工作方式实现。这种机制一般情况下并不干涉和直接影响主业务流程,而是对主业务进行记录、检查、监控等。响应主要是对安全事件作出告警,阻断等反应。
4、冗余和恢复 Response &
Recovery
通过系统的冗余保障业务的连续性,通过备份恢复业务。
5、内容安全 Content Security
内容安全主要是直接保护在系统中传输和存储的数据(信息),要直接保护这些内容。具体技术包括:加密(保密性、完整性、抗抵赖等)、内容过滤。
图5
3.2设计与开发
在需求分析阶段结束后,进入到系统设计阶段,在应用系统自身的架构设计的同时,应充分考虑该架构的安全性问题。应用系统自身的架构有多种形式,如:b/s,c/s,分布式、集中式的,根据开发语言的不同也会有不同,如:基于.net、基于J2EE等,无论何种形式,就应用本身的架构而言,应考虑架构自身的安全性要素,而概括起来看,应用层的安全要素最终是集中在对应用数据的安全和用户会话的安全问题上,最基本的架构安全设计应当考虑应用系统自身体系架构内部的安全,以及与外系统接口的安全。
3.2.1 业务场景安全分析
3.2.1.1 业务场景图
识别数据流
对于每个子系统,考虑是否信任上一级数据流或用户输入,如果不信任,则考虑如何对数据流和输入进行身份验证和授权。了解信任边界之间存在哪些入口点可以将威胁识别集中在这些关键入口点上。从安全角度需要在信任边界处对通过入口点的数据执行更多的验证。
识别入口点
应用程序的入口点也是攻击的入口点。入口点可以包括侦听HTTP请求的前端Web应用程序。这种入口点原本就是向客户端公开的。存在的其他入口点(例如,由跨应用程序层的子组件公开的内部入口点)可能只是为了支持与其他组件的内部通信。我们必须知道它们位于何处,以及在攻击者设法绕过应用程序前门并直接攻击内部入口点情况下它们接收什么类型的输入。其他级别的检查可以提供深度防御,但在资金和性能方面可能代价高昂。
识别出口点
确定应用程序向客户端或者外部系统发送数据的点。设置出口点的优先级,应用程序可以在这些出口点上写数据。
下图为某系统的业务场景图,如图6:
图6
3.2.1.2 威胁分析
由于具体的攻击和攻击技术有许多变体,因此根据攻击者试图实现的目标来考虑威胁是十分有用的。这就将注意的焦点从识别每一种具体的攻击—这确实是达到目标的一种手段,改变为注意可能攻击的目标结果,如图6。
可以根据攻击的目标和目的对应用程序面临的威胁进行分类。有关威胁分类的应用知识有助于组织安全策略,这样就可以有计划地对威胁进行回应。STRIDE是使用的对不同威胁类型进行分类的首字母缩写词。STRIDE代表:
• |
欺骗。欺骗就是试图通过使用假身份访问系统。这可以通过使用盗窃来的用户凭据或者假IP地址而实现。当攻击者以合法用户或者主机的身份成功访问系统后,就可以开始提高特权或者滥用授权了。 |
• |
篡改。篡改就是未经授权就对数据进行更改,例如当数据流过两个计算机间的网络时。 |
• |
否认。否认就是用户(合法的或者非法的)否认他们曾执行过特定操作或者事务的能力。审核不足,则很难检验否认攻击。 |
• |
信息泄漏。信息泄漏不必要地暴露私有数据。例如,用户查看他或者她没有被授权打开的表或者文件的内容,或监视通过网络传输的、明文形式的数据。一些信息泄漏缺陷的示例包括,使用隐藏的窗体字段、嵌入在Web页中的注释包含有数据库连接字符串和连接细节,以及可能导致暴露给客户端的内部系统级别细节的差劲的异常处理。这些信息对攻击者来说都是非常有用的。 |
• |
拒绝服务。拒绝服务就是使系统或者应用程序不可使用的过程。例如,拒绝服务攻击可以这样实现:通过请求来冲击服务器,以消耗掉所有的系统可用资源,或者通过给服务器传递格式错误的输入数据以使一个应用程序进程崩溃。 |
• |
提高特权。提高特权在这样的情况下就会出现:具有有限特权的用户假冒特权用户的身份来对应用程序进行特权访问。例如,具有有限特权的攻击者可能会提高他的或者她的特权级别来损害并控制更高特权与受信任的进程或帐户。 |
3.2.1.3 建议对应措施
STRIDE所描述的每一类威胁都具有一套对应的对抗技术,应当使用这些技术来降低危险。表1对这些技术进行了小结。对策适当与否取决于特定的攻击。
表2 STRIDE威胁与对策
威胁 |
对策 |
盗用用户身份 |
使用强身份验证。 不要以明文的形式存储机密信息(例如,密码)。 不要在线路上以明文的形式传递凭据。 用安全套接字层(SSL)保护身份验证cookie。 |
篡改数据 |
使用数据散列法与签名。 使用数字签名。 使用强授权。 在通信链路之间使用防篡改协议。 使用可提供消息完整性的协议保护通信链路。 |
否认 |
创建安全的审计追踪。 使用数字签名。 |
信息泄漏 |
使用强授权。 使用强加密技术。 使用可提供消息保密性的协议保护通信链路。 不要以明文的形式存储机密信息(例如,密码)。 |
拒绝服务 |
使用资源与带宽调节技术。 验证与筛选输入。 |
提高特权 |
遵循最低特权原则,并使用最低特权服务帐户运行进程以及访问资源。 |
针对不同的威胁类型,可以确定适当的安全技术。
3.3 测试与验收
应用系统在正式上线前应对安全性进行测试,验证应用系统的安全性是否符合安全设计及安全需求,测试主要包括以下项,如图7:
图7
压力测试:对应用系统的安全功能进行压力测试,确保安全功能可以满足设计的需要
渗透性测试:模拟攻击手段,对应用系统抵抗攻击的能力进行测试。主要测试应用程序及应用系统配置上的安全漏洞。
代码审核:这不是必需的测试手段,如果条件允许,可以针对容易出现代码漏洞的程序,特别是关于身份认证等方面的部分代码进行审核。
业务流程模拟测试:模拟普通用户进行业务操作,找出业务流程执行过程中的安全隐患,发现可能出现的越权或滥用的风险。
3.4 维护
维护主要包括日常的安全运行维护和定期的风险评估等。维护工作主要对系统的风险进行适时识别并进行有效处置,如图8。
图8
3.5 退服阶段
退服阶段风险控制工作主要内容是数据备份和剩余信息清除。数据备份对后续故障排查和事件分析具有重要意义,系统退出服务过程中,对可能会在另外系统中使用的数据采取适当的方法将其安全地转移或暂存到可以恢复的介质中,确保将来可以继续使用,同时采用安全的方法彻底清除系统中的数据。
退服的设备中原有配置信息一旦被恶意攻击者获得通过社会工程学手段可能对现网系统造成严重危害,所以设备退服一定要将相关敏感信息进行彻底清除处理,不但要删除而且要确保不被恢复并读取。临时数据,特别是含有客户信息的数据,使用结束后直接在存储介质上清除。
支持硬盘加密的操作系统的设备报废时,在通过常规的方式对数据处理后应开启硬盘加密功能。
对数据进行物理销毁时,应加强对信息销毁场所、介质和人员的安全管理,确保数据的安全销毁。