14.1. 定义安全策略

注意 本章所涉及范围

安全是一个很广泛并且敏感的题目,很难在一个章节的课程中来明确全面地表述。此处只划定几个重点,介绍一些可以用于安全领域的工具和方法。更深层次的读物,作品,书籍比比皆是。一本很好的入门书籍是Linux 服务器安全(由 O’Reilly 出版)。

“安全”是一个涵盖很宽泛的概念,工具和方法,没有哪个是万用的。在其中做出选择,需要确切的知道你的目标是什么。保护系统从回答几个问题开始。急匆匆的实施随机的工具会把安全风险转移到错误的方向。

因此,首要的事情是确定目标。从下面的问题开始,是逐渐确定目标的好方法:

  • 什么 是要保护的?要保护计算机还是要保护数据,其策略是不同的。如果是后者,还要知道保护哪些数据。

  • 我们试图防止什么?机密数据泄露?意外数据丢失?服务中断而导致的收入损失?

  • 同样,试图防止?防范正常用户的输入和防止有预谋的攻击者,其安全措施是大不相同的。

术语“风险”通常用来涉及这三个因素的综合:保护什么,防止发生什么,谁会让它发生。三个问题的答案就塑造了风险。针对这种风险模型,就可以构建安全策略,并通过具体行动实施策略。

注意 永久质疑

Bruce Schneier,是一个安全事务(不仅仅是计算机安全)方面的世界级专家,曾将安全最重要神秘的面纱概括为一句箴言:“安全是一个过程,而非产品”。需要保护的东西会随着时间而改变。威胁和对付潜在攻击者的方法也是如此。即使安全策略被完美的设计和实施,也不应该躺在功劳簿上。引入了新的风险组件,则必须引入相应的对策。

额外的限制也值得考虑,它们可以限制可用策略的范围。我们想要在多大程度上保护一个系统?这个问题会对实施策略产生重大影响。答案常常仅仅以金钱成本来定义,但是也应该考虑其他因素,例如强加给系统用户的不便或者性能降低程度。

一旦风险成型,就可以考虑开始设计实际的风险策略了。

注意 极端策略

某些情况下,保护系统所要做的行动是极其简单的。

譬如,如果要保护的系统只是一个每天结束时加几个数据的二手电脑,那么不采取特殊措施来保护它也是合理的。系统本身的价值很低。而数据不储存在电脑上,数据的价值几乎没有。渗透到该系统的潜在攻击者只会得到一个笨拙的计算器。保护这样一个系统的成本很可能比破坏导致的成本还要大。

另一方面,我们想最充分的保护机密数据,超过其他任何考虑。这种情况,一种恰当的做法可能是完全焚毁这些数据(安全删除文件,将硬盘粉碎成位元,然后将这些位元溶解到酸中,等等)。如果有额外的需求,数据必须存储以便将来使用(虽然不是马上可用),同时要考虑成本因素,那么可以将这些数据存储在白金合金板上,再存到世界山脉下面的防弹沙坑里,每一个都保密并且有重兵把守…

Extreme though these examples may seem, they would, nevertheless, be an adequate response to defined risks, insofar as they are the outcome of a thought process that takes into account the goals to reach and the constraints to fulfill. When coming from a reasoned decision, no security policy is less respectable than any other.

多数情况下,信息系统可以分割成一致独立的子系统。每个子系统有自身的需求和限制,这样可以单独评估每个风险和设计安全策略。一个需要谨记的原则是简短明晰的周界要比漫长而曲折的前沿容易定义。网络结构也应相应设计:敏感服务应集中在少数几个机器上,而且这些机器只能通过极少数检查点访问;保护这些检查点要比隔离所有敏感机器与外部世界简单。在这些点上,网络过滤器(包括防火墙)的作用就显而易见了。过滤器可以用专门的硬件,但是更为简单和复杂的解决方案是使用软件防火墙,例如在 Linux 内核中集成的。