7.1 测试你的防御系统
如在前面的介绍中所言,加固你的防御系统的最佳途径是以找出薄弱环节为目标对安全管控设施进行攻击。在为网络安全防御系统制定测试策略时,你需要考虑如下这些关键理念。
先看一下制定安全验证计划的过程。我们需要先知道自己的安全基线,这样才能知道要针对什么进行验证。
7.1.1 安全基线 1
1 这里调整了作者原来的用词,这里着重介绍的还是安全基线。——译者注
业界专家最喜欢问的一个问题是你对安全的最低可接受等级是什么。许多企业都必须向他们所在行业或是政府制定的标准看齐。例如,任何接受支付的系统都必须遵从支付卡行业数据安全标准(PCI DSS,Payment Card Industry Data Security Standard) ,医疗环境必须符合健康保险便利和责任法案(HIPAA,Health Insurance Portability and Accountability Act) 。常见的标准,如我们在第8章 中介绍的那些,通常也是展现渗透测试服务价值的商业驱动力因素。
在标准之外,建立安全基线的一个好的起点就是审查其他机构是怎么保证他们系统的安全的。作为针对美国客户的安全咨询师,我们会将美国政府对敏感信息的安全处理作为基线安全的样板。多数位于美国的企业都更倾向于采用跟白宫类似的安全标准。同样的概念可用于其他国家的IT标准、特定组织的安全最佳方式或是推荐的军方安全管控。还有一些企业出版的安全标准的最佳方式是由第三方服务提供商和业界领导者,如国际标准化组织(ISO)一起制定的。
让我们看看连接美国政府所管控网络的安全基线。
你的安全基线应该是环境中最低安全等级。最佳方式是对系统进行超出基线的安全加固,因为许多文档化的安全基线由于受较早出版日期、资助方和其他因素的影响,都很有限,
7.1.2 STIG
安全技术实施指南(STIG,Security TEchnical Implementation Guide) 是针对标准化的安全安装和计算机软硬件维护的方法论。这一术语是由美国国防信息系统局(DISA,Defense Information Systems Agency) 创造的。该局负责主持草拟支持美国国防部(DoD,Department of Defense) 的配置文档。安全技术实施指南包括建议的管理流程以及贯穿资产全生命周期的安全管控。
能说明STIG的益处的一个例子是桌面计算机的配置。许多操作系统并非天生就是安全的,因此不法分子很容易攻入。STIG描述了如何最大程度地避免基于网络的攻击以及如何在攻击者已能访问设备时阻止他访问系统。STIG还描述了维护的流程,如软件更新和漏洞补丁。
STIG是加强操作系统、网络设备和应用安全的绝佳指南。你可以从http://www.stigviewer.com/stigs 下载STIG指南。你会发现STIG文档包含有关加固各种系统的一步步教程,包括Web服务器。此外,STIG指南也是对系统进行配置使其满足若干强制标准的第一步。对于美国联邦政府雇员来说,STIG在美国国防部和其他政府组织控制的网络中是强制要求的。
还有许多其他资源可以用来找出安全标准化模板,如互联网安全中心(CIS,Center for Internet Security) 和思科网络基础保护(NFP, Network Foundation Protection) 。
7.1.3 补丁管理
随着目标性攻击和0-Day漏洞减小了从漏洞纰漏到攻击者完成开发漏洞利用的时间窗口,安全经理越来越有责任了解他们IT环境中的各种资产,以及这些系统的补丁等级。补丁管理是一个持续的过程,只有当我们了解了何时补丁才能就绪、何时应用补丁按优先级排列、何时基于业务需要进行验证以及已知漏洞无补丁可用时如何响应,补丁管理才算成功。这个概念同样适用于系统以及软件的内部应用,例如插件。
补丁管理只是更大范围的漏洞生命周期中的一环。第一步是找出漏洞,这一步可以通过第三方服务提供商的更新或服务完成,从定期扫描到坚实的渗透测试都可能都要涉及。我们应该制定一个策略来解释不同等级的扫描应该多久进行一次以及谁负责查看已发现的威胁。建立有关多久进行一次漏洞扫描的基线的一个比较好的出发点是确定你必须遵从什么强制标准,因为许多都会包含有关内部和外部漏洞扫描的字眼。
补丁管理的第二步是对识别为有漏洞的系统进行响应。正如我们在第1章 中介绍的那样,有漏洞并不代表它就有风险了,除非我们通过渗透测试或其他方法验证了该漏洞确实可以被利用。对一个漏洞进行安全保护可能只需要打一次补丁或做一次升级。不过,有些漏洞可能需要耗费更多的时间和人力来修复。在这些场景中我们就需要对风险和修复漏洞的投入做一些计算。
补丁管理的最后一步是根据漏洞对业务运营的影响来规划打补丁的安排。这一点非常关键,因为有许多被攻击的系统如果在被恶意方找出漏洞之前就打了补丁,那就会比较安全。我们发现许多客户给补丁管理预留的维护窗口都是以月为基础的,或是更长时间,这样在很长一段时间内,系统漏洞窗口都会暴露在外面,很容易被攻击。最佳方法是将计算跟标记为有漏洞的系统相关联的风险以及当威胁对业务运营的风险达到一定水平时调整时间窗口的权限等职责交给信息保障证专家。
补丁管理是帮助你免受本书中介绍的各种威胁的最佳防御对策略之一。你需要确保定期回顾你的组织是如何应对补丁管理的,以此来避免因本可以防护的漏洞而成为受害者。这条规则适用于所有受管理的资产,包括服务器和Web应用。
7.1.4 密码策略
总的来说,具备控制可能结果能力的密码策略通常会给密码强度带来负面效果。撇开密码策略不说,基于人的本性,用户也会通过重复字符、可预测的行为(如用12345来扩展密码的长度以满足长度要求)或其他方式来尽可能地简化密码。而且,用户通常不会主动修改密码,直到系统强制要求他改密码。出于这些考虑,密码策略应该遵循如下指导原则:
计算机的处理能力一直在不断演进,也就是说,破解12个字符的密码很快就会变得很容易。2013年春季发表的一篇文章说,一组黑客破解了16 449个经过加密的散列化16位字符密码中的14 800个。在本书即将出版时,这还只是一个特例,不过,对未来的黑客来说这会是很常见的场景。你可以考虑将密码的推荐长度设成一个可变目标。
本书的两位作者都是Steve Gibson 开发的密码生成器的粉丝。该密码生成器是生成随机密码的一个安全途径。Steve Gibson 开发的安全随机密码生成器可以在位于https://www.grc.com/passwords.htm 的Gibson研究中心 找到。
许多网站和Web应用被攻破都是因为Web开发者采取的是不够安全的协议。Web开发者应该采用强加密来存储用户密码和数据。密码应该实施散列和加盐等技术以便降低被盗或数据丢失的风险。
你可以用本书第3章 和第4章 中介绍的密码破解工具来评估系统中所采用的密码强度。推荐的工具有John the Ripper、Johnny、Hashcat、oclHashcat和Ophcrack。Crunch和Hashcat也可以生成用于验证密码策略强度的密码列表。
有一些网站,如Crackstation,会提供预生成的流行密码列表。你可以用这些列表来测试密码和策略的强度。