要全面地认识一个安全问题,我们有很多种办法,但首先要理解安全问题的组成属性。前人通过无数实践,最后将安全的属性总结为安全三要素,简称CIA。
安全三要素是安全的基本组成元素,分别是机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。
机密性要求保护数据内容不能泄露,加密是实现机密性要求的常见手段。
举一个例子,存放一个文件,加入文件不是放在抽屉里,而是放在一个透明的玻璃盒子里,那么虽然外人无法直接取得文件,但因为玻璃盒子是透明的,文件内容可能还是会被人看到,所以不符合机密性要求。但是如果给文件增加一个封面,掩盖了文件内容,那么也就起到了隐藏的效果,从而满足了机密性要求。可见,我们在选择安全方案时,需要灵活变通,因地制宜,没有一成不变的方案。
完整性则要求保护数据内容是完整、没有被复改的。常见的保证一致性的技术手段是数字签名。
传说清朝康熙皇帝的遗诏,写的是“传位十四子”,被当时还是四阿哥的胤镇寡改了遗诏,变成了“传位于四子”。姑且不论传说的真实性,在故事中,对这份遗诏的保护显然没有达到完整性要求。如果在当时有数字签名等技术,遗诏就很难被算改。从这个故事中也可以看出数据的完整性、一致性的重要意义。
可用性要求保护资源是“随需而得”。
假设一个停车场里有100个车位,在正常情况下,可以停100辆车。但是在某一天,有个坏人搬了100块大石头,把每个车位都占用了,停车场无法再提供正常服务。在安全领域中这种攻击叫做拒绝服务攻击,简称DoS(Denial of Service)。拒绝服务攻击破坏的是安全的可用性。
一个安全评估的过程,可以简单地分为4个阶段:资产等级划分、威胁分析、风险分析、确认解决方案。
资产等级划分是所有工作的基础,这项工作能够帮助我们明确目标是什么,要保护什么。
前面提到安全三要素时,机密性和完整性都是与数据相关的,在可用性的定义里。“资源”这个概念描述的范围比数据要更加广阔,但很多时候,资源的可用性也可以理解为数据的可用性。
在互联网的基础设施已经比较完善的今天,互联网的核心其实是由用户数据驱动的一用户产生业务,业务产生数据。互联网公司除了拥有一些固定资产,如服务器等死物外,最核心的价值就是其拥有的用户数据,所以一互联网安全的核心问题,是数据安全的问题。
所以在对互联网公司拥有的资产进行等级划分,就是对数据做等级划分。有的公司最关心的是客户数据,有的公司最关心的是员工资料信息,根据各自业务的不同,侧重点也不同。做资产等级划分的过程,需要与各个业务部门的负责人一一沟通,了解公司最重要的资产是什么,他们最看重的数据是什么。了解公司的业务,公司所拥有的数据,以及不同数据的重要程度,为后续的安全评估过程指明方向。
在安全领域里,我们把可能造成危害的来源称为威胁(Threat),而把可能会出现的损失称为风险(Risk)。风险一定是和损失联系在一起的。
什么是威胁分析?威胁分析就是把所有的威胁都找出来。一般是采用头脑风暴法。当然,也有一些比较科学的方法,比如使用一个模型,帮助我们去想,在哪些方面有可能会存在威胁,这个过程能够避免遗漏,这就是威胁建模。
介绍一种由微软提出的威胁建模的方法STRIDE模型
威胁 | 定义 | 对应的安全属性 |
---|---|---|
Spoofing(伪装) | 冒充他人身份 | 认证 |
Tampering(慕改) | 修改数据或代码 | 完整性 |
Repudiation(抵赖) | 否认做过的事情 | 不可抵赖性 |
InformationDisclosure(信息泄露) | 机密信息泄露 | 机密性 |
Denial of Service(拒绝服务) | 拒绝服务 | 可用性 |
Elevation of Privilege(提升权限) | 未经授权获得许可 | 授权 |
影响风险高低的因素,除了造成损失的大小外,还需要考虑到发生的可能性。
如何更科学地衡量风险呢?再介绍一个DREAD模型,它也是由微软提出的。DREAD 也是几个单词的首字母缩写,它指导我们应该从哪些方面去判断一个威胁的风险程度。
等级 | 高(3) | 中(2) | 低(1) |
---|---|---|---|
Damage Potential ( 破坏潜力 ) | 获取完全验证权限:执行管理员操作:非法上传文件 | 泄露敏感信息 | 泄露其他信息 |
Reproducibilty(再现性 ) | 攻击者可以随意再次攻击 | 攻击者可以重复攻击,但有时间限制 | 攻击者很难重复攻击 |
Exploitability( 可利用性 ) | 初学者在短期内能掌握攻击方法 | 熟练的攻击者才能完成这次攻击 | 漏洞利用条件非常苛刻 |
Affected users(受影响的用户) | 所有用户,默认配置,关键用户 | 部分用户,非默认配置 | 极少数用户,匿名用户 |
Discoverability(可发现性) | 漏洞很显眼,攻击条件很容易获得 | 发现该漏洞极其困难需要深入挖掘漏洞 | 发现漏洞及其困难 |
高危:12~15分中危:8一11分低危:0一7分
安全评估的产出物,就是安全解决方案。解决方案一定要有针对性,这种针对性是由资产等级划分、威胁分析、风险分析等阶段的结果给出的。
作为安全工程师,要想的就是如何通过简单而有效的方案,解决遇到的安全问题。安全方案必须能够有效抵抗威胁,但同时不能过多干涉正常的业务流程,在性能上也不能拖后腿。
呢么一份好的安全方案对用户应该是透明的,尽可能地不要改变用户的使用习惯。
AppScan是IBM公司出品的一个领先的 Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界。AppScan 可自动化Web应用的安全漏洞评估工作,能扫描和检测所有常见的Web 应用安全漏洞,例如,SQL注入(SQL injection)、跨站点脚本攻击(cross-site scripting)、缓冲区溢出(buffer overflow)及最新的Flash/Flex 应用和Web 2.0应用暴露等方面的安全漏洞扫描。
第一步:打开AppScan中文版,新建扫描,拥有web应用程序、web服务、外部客户机等三种基础扫描方式;
第二步:扫描配置向导,输入项目入口访问链接;
第三步:登录方式记录,可通过自动方式,预先设置正确的用户名密码;
第四步:设置扫描策略,提供缺省值、侵入式、基础结构、应用程序、第三方等选择,默认为缺省值;
配置测试和优化,建议默认快速即可;
第五步:完成扫描引导配置,软件提供全自动、半自动、手动等几种选项,默认全自动就好;
点击完成后,选择自动保存扫描过程后进行自动扫面;
第六步:最后等待AppScan10扫描完成,查看扫描结果即可。
Acunetix 是一个自动化的 Web 应用程序安全测试工具,是通过检查 SQL 注入,跨站点脚本(XSS)和其他可利用漏洞等来审核您的 Web 应用程序。一般来说,Acunetix 能够扫描任何通过网络浏览器访问并使用 HTTP/HTTPS 协议的网站或 web 应用程序。
第一步:添加 需要检测的网站(漏洞扫描.)
然后点击是的,进行漏洞扫描
这里可以选择:扫描类型
第二步:查看扫描的结果(包含:漏洞信息,网站结构,活动.)
第三步:查看漏洞的信息.(漏洞类型,链接的位置,修复方案等.)
第四步:生成报告
第五步:点击报告.
漏洞扫描器可以快速帮助我们发现漏洞,例如,SQL注入漏洞(SQLinjection)、跨站点脚本攻击(cross-site scripting)、缓冲区溢出(buffer overflow)。
一款优秀的漏洞扫描器会使渗透测试变得很轻松,但对于一些漏洞,自动化软件是无法识别的。所以,在进行漏扫(漏洞扫描的简称)时,必须要与人工渗透相结合。
结论是:漏洞扫描也属于信息探测的一种,扫描器可以帮助我们发现非常多的问题,但是整个测试的执行过程不是交由工具去完成。
在解决安全问题的过程中,不可能一劳永逸,也就是说“没有银弹”。安全是一个持续的过程。
自从互联网有了安全问题以来,攻击和防御技术就在不断碰撞和对抗的过程中得到发展。从微观上来说,在某一时期可能某一方占了上风:但是从宏观上来看,某一时期的攻击或防御技术,都不可能永远有效,永远用下去。这是因为防御技术在发展的同时,攻击技术也在不断发展,两者是互相促进的辩证关系。以不变的防御手段对抗不断发展的攻击技术,就犯了刻舟求剑的错误。在安全的领域中,没有银弹。
加强原理学习,对常见的漏洞原理以及复现的学习掌握。虽说网络上有很多的国内外大神们开发的各类小工具,但是不清楚原理的人就好比一个没有武功但是得到了一把绝世神兵。对于这把武器的使用与掌握就处于一种能用但不好用的境界。而且也只能去处理一些简单易发现的问题。
感谢大家