从根本上来讲,你为你的公司所选择的操作系统是个今后伴随使用多年的平台。从一种操作系统迁移到另外一种操作系统将是一个非常昂贵的选择。所以,你 好以一种审慎的态度来做出决定。安全性,也许并不是你 优先考虑的事情,但毫无疑问地是,它将会对操作系统的长期使用产生影响。我希望我在这篇文章里所提出的一个关于操作系统安全性的观点能够为你决定选择什么样的操作系统提供帮助。在你应该选择什么样的操作系统方面我有自己的观点——我只想很直截了当地告诉你我是一个freebsd狂热者——我将尽量不让个人主观因素影响客观事实。
操作安全性
为了理解什么样的操作系统能够迎合你的需求,你必须首先理解在你的操作环境或者操作体系中的“安全”到底是什么意思。操作安全性是指能够长期保持稳定和可靠操作平台的能力。彼时彼刻被攻击之后而恢复正常工作的单一主机系统是不够的,在企业内的所有系统必须有能力在技术方面、攻击方面和应用程序方面保持安全。
任何人都可以学会锁闭主机。类似微软或是nist方面都有相关的主机锁闭指导丛书可以很容易读懂并且照做无误。任何悟性够高的it专业人员都能够在这些指导下让一个系统的安全很难被危及到。但是 终来说,这些步骤都只是一个系统整体安全的一方面。如果你不得不经常改变你的系统配置或是根本不清楚操作系统版本的不同而导致安全性的差异,那么你还是没有达到操作安全性的要求。
操作系统的开发方式对企业应用具有深刻影响。操作系统的开发涵盖了软件开发过程的整个生命周期。怎么样来做计划、设计、编码实现、测试和维护是在根本上影响着你的环境,但是这些影响就像一场辩论。一些人会说一个结构严谨的步骤过程是建立一个安全并可升级的软件的唯一方式。这是一个大家公认的软件开发观点,并且在复杂的系统开发中是很广泛流传的。但是,有其他人会说,仅仅是使用一个合理的开发过程并不意味着软件就真的安全了——只是紧紧按部就班的开发过程就可以了吗?
相反地,开源世界更倾向于对这个问题持有另一个不同观点。很多软件开发者都以相关的、相互协作的态度来进行系统开发,把所有精力都放在了编写代码上,强迫自己说这是唯一“重要”的功能来进行集成。这种开发模式也许能够做出正确功能设置的软件,但这种开发方式内在问题是没有将安全性提升到系统和系统结构级别水平。
在信息处理中心 常用的三大操作系统(microsoft windows,linux和 freebsd)有三种非常不一样的开发模式。让我们逐一来看看并考虑开发过程是怎么来影响安全性的。
windows开发模式
微软的windows是一个由像一个国家那样大的公司开发出来的商业化操作系统。对这个操作系统视觉效果的制作,在公司内部是由高层一直到所有部门都参与进来的。除此之外,这个视觉因素已经超越了操作系统本身,管理工具软件、普通的 用户登录应用软件、甚至开发软件都被集成在操作系统里面,整个的保持连贯性。这个操作系统的核心是把架构设计和软件集成于整个微软产品体系中。举例来说,加密算法提供商提供的加密算法可以被需要进行加密操作的微软软件产品调用。同样地,认证信息可以在操作系统所有层级访问到,并能够在一个独特的时尚环境中被应用程序访问(并能够在一个统一的接口中被应用程序访问)
从一个安全的角度来说,微软不仅在开发操作系统过程中来控制安全性能和体系架构,同样在给操作系统打补丁时控制系统安全性。这是在操作安全性里是很有争议的一方面。微软控制着所有他们操作系统、服务器软件和生产力开发软件的补丁。此外,他们现在有一个规则的时间表(每一个月的星期二)来发布所有的补丁。这允许了管理员以养成习惯性的来准备测试和开发安全补丁。在没有特别补丁的情况下,微软允许企业提前来计划安全升级并 终可能减少相应的系统停机故障时间。
后要说的是,微软控制着初级操作系统和所有支持的应用软件的长期安全计划。他们有一个长期的产品路线图,其中包括了提高安全性和增加功能性。当一个产品的路线图已经不一定意味着更安全的系统时,微软可靠的开发者网络就该起作用了。因为软件开发者知晓微软的产品路线图,并获取正式发布前的测试版本后,所以有预先获取有关系统功能安全性和合理使用的信息的可能性。除此以外,微软的开发软件从根本上就支持了windows的安全功能性。
freebsd开发模式
和windows不同的是,freebsd并不是一个商业投资产品。freebsd是由一群想把操作系统建得真正像一个系统的开发者开发出来的。freebsd的内核是和一整套的系统工具、驱动程序和配置文件一起发布的,这是很有代表性的正式发行。比如说freebsd5.2的发行就包括了核心程序、一个拥有完整功能性的防火墙、网络驱动程序、系统管理通用程序以及核心程序的软件工具包。其他的软件工具包由第三方开发者来提供(比如说mozilla开源组织的mozilla或是brian wotring公司的osiris),但是这些程序都由freebsd打包集成在了整个操作系统里面。在打包集成的过程中,这些软件由freebsd团队来进行测试,以确保他们能够与操作系统一起工作正常——但是对于安全问题却没有必需的要求。
因为freebsd并不仅仅是一个内核,所以安全功能性能够贯穿整个核心程序和核心系统通用程序,在操作系统开发体系构建的时候建立起来。比如说,在freebsd的核心程序里有一个“安全等级”概念。不同的安全等级有不同的限制。例如在安全等级2中,文件系统不能够被安装,一次时间调节不能被调节到多于一秒钟。不仅核心程序了解这个安全等级,核心系统通用程序的修改和帮助都强制性使用安全等级。这可能是因为freebsd是作为一个端到端的系统开发出来的。
整个系统的发布步骤有一个具有工程背景的发布团队来控制,这个团队决定操作系统的版本与其所包括的特性,以及下个版本的freebsd准备什么时候发布。这个发布团队制作了一个发放时间表,这个表概述了几个将要发放的版本的情况,同时决定了什么时候旧的版本将会到达“寿命终止”(eol)。对于操作系统来说“寿命终止”日期是非常重要的,因为这也是freebsd需要为那几个版本的操作系统发放补丁的日期。如果你想要保持当前的版本(并确保安全),你必须为你的操作系统在“寿命终止”到来的时候进行更新。
linux开发模式
与freebsd相比,linux是一个非常不一样的东西。尽管它们都是开源操作系统,linux开发模式却根本不能和前者相等同。在linux的核心,只是一个很简单的内核。而核心系统通用程序,包括了管理者们每天所使用的很多驱动程序和工具,是由另外一个完全不同于制作内核的团体所制作的。linux的内核是一个外部开发的不连续的实体,然后直接由“linux社区”进行直接维护。从一个安全的角度来讲,这就意味着安全能力被建在了应用软件包的通用程序里,而并没有完全反射到内核里面(反之亦然)。
内核和应用软件包由一个发布者(例如red hat或者是debian公司)整合在一起后成为一个完整的操作系统。当代码被整合到一起的时候,这个发布者可能会改变一些内核和一些应用软件包的代码。一些此类的改变是轻度的耦合改变,还有一些是新功能的部件。每个发布者以自己的方式来进行整合,这就使每个发布者有了有效的自己的操作系统。所以,当你来为你的企业决定操作系统的时候,与其考虑“linux”,不如说是“red hat”、“debian”、“mandrake”等等。
在与发放计划和安全功能性方面,每个发布者都有自己的时间表和技术路线。曾经有一段时间,red hat维护着一个安全路线(基本上来说它由selinux整合到核心操作系统中组成),但是这个似乎已经被废弃了。同样的,每个发布者(操作系统发布者)控制着自己的系统终止步骤,所以并没有单一日期的“linux系统终止”。
基于linux的操作系统的修补由两个步骤组成。当一个系统安全漏洞被发现的时候,这个系统安全漏洞信息被透露给这个代码 原先的维护者。然后这个维护者会为这个有攻击点的软件发布一个补丁。然后每一个操作系统发布者必须赶紧拿到补丁并做出一个专为基于他们具体代码的自定义的补丁。基于这个补丁,管理者们才能应用到他们的系统中去。这个两个阶段的补丁过程会导致整个补丁过程的推迟,更重要的事,它会导致混乱和结构管理问题。
结语
我为linux操作系统的安全性描绘了一幅非常凄凉的图画。因为它的开发模式,很难为这个操作系统决定一个未来趋势,或者维护它会成为一个繁琐之事。尽管如此,linux还是有非常多的,对许多操作很有用的特性和出色的程序。所以,当在安全性和效用性之间要有一个妥协的时候,linux还是在一个可维持的状态上的。
当为你的企业选择一个适用的操作系统,你需要具有超前眼光而不是仅仅关心某些安全性能,并考虑操作系统长时间的影响是怎么样的。你需要为每个操作系统都会有的打补丁、升级和维护问题做好准备,并且一定要理解这些活动是怎样来影响你的安全性和可利用性的。 后,在这篇文章里所讨论的企业操作系统都是很高级的软件组件,有能力让全世界的企业执行it功能。对你适用的功能未必就对你的邻居适用,但是你必须知道安全性对于这些每一个操作系统来说都是一个复杂的问题,要求像你为企业选择其他的软件那样非常仔细地来挑选。