毋庸置疑,一家公司的Unix架构极有可能是其全部IT问题的最重要的部分。因为它支撑着你的邮件系统、,甚至你的最重要的应用。虽然Unix系统本身是极其安全的,但在这个和行为十分猖獗的时代,我们绝不可以对Unix架构的安全问题掉以轻心。本文将讨论任何Unix用户都应该清楚的保障Unix安全的关键方法,籍以引起您对此问题的高度重视。
那么,到底有哪些要素组成了Unix架构呢?这个问题难以规定其标准答案,但总体而言,大多数公司都有面向客户或公众的服务。这些是“公用”的服务器。任何一个提供服务给外部世界的事物都有其特殊性。它们是用户可以登录的机器,这些用户可以是一个合法的账户,也有可能是一家公司的开发团队。我们将这些可被登录的服务器称为“登录服务器”,因而须对它们特别对待。还要注意,我们网络架构中有相当多的计算机是为其它服务器提供服务的,这些服务器只有超级用户可以访问。
公共服务
首要的问题是,您必须看一看所有的可为外部世界提供服务的服务器,并思索自己是否真的需要。通常情况下,它们可以置于之后,或者放在一个组合式防火墙及代理服务器之后。举例来说,如果你在四个WEB服务器上运行一个面向客户端的WEB站点,那么,减少这些服务器的暴露程度至最少化是可能的。放置在这些WEB服务器之前的一个代理服务器或一对冗余代理服务器可以接受所有的客户端连接,然后检查并清理这些服务。这就是代理服务器其中所起的作用。代理服务器够减轻后端WEB服务器的风险,而且不受Internet的影响和访问。
引起安全问题的最经常的原因是没有及时打补丁或者未知的服务。很长时间以来,已被人们遗忘的WEB服务器是那种Apache的老版本或者易受攻击的PHP脚本服务,因其内核已过时。对于灾难性故障的解决处方也许太普通,不过,如果您的WEB 服务器隐藏在一个代理服务器之后,那么几乎就没有什么遗忘打补丁或服务的风险。
对于其它服务也是同样的情况。许多站点有一些极端的限制,如防火墙管理员必须验证任何新的网络应用,并且工作良好。通常情况下,公司网络完全开放,其WEB应用是不安全的,应用程序能与之交互的服务器常常是无任何理由地可被访问。
登录服务器
远程用户被限制为只能使用给定的界面,如E-MAIL服务,WEB应用或服务。那些可以访问系统外壳的本地用户可谓完全无拘无束。如果你的系统中恰好有一个恶意用户,除非采取极端的措施,他可对根目录进行访问。至于更新问题,特别是那些要求升级后重启的内核的更新,必须在新内核的发布之日应用。总之,操作系统需要强化其稳健性。在设计架构的过程中,必须特别注意确保用户只能对所指定的区域访问。
如果你的网络还有一些可对某些机器的根目录访问的开发人员,那么受到伤害的可能性就会大增加。开发人员自身成为恶意用户的可能性也许微乎其微,但绝不能排除其可能性。其实,开发人员不知不觉安装的一些怪异的新程序有可能会损害系统。例如,Slammer 的传播速度极快,原因在于它在Windows系统中通过网络进行传播,该蠕虫利用Microsoft SQL Server2000的缓冲区溢出漏洞获得系统控制权,并产生大量随机IP地址进行攻击,导致蠕虫的迅速传播并且形成拒绝服务攻击,网络带宽大量地被占用。
其它问题
理论上讲,企业计算机的大多数并非面向互联网的。假如真是这样,那么限制用户的暴露程度是所有公司的最优先考虑的事情,我们可以在某种程度上忽略这些服务器。这些服务器上的唯一弱点就是其所提供的界面。“假定我的WEB应用定期打补丁,就没有必要担心操作系统自身。”确实有一些人有这样的观点。
如果企业能够限制对系统管理的登录访问,这种观点有可能是正确的。保持应用程序的定期补丁也许可以算是安全的措施。但如果一个安全漏洞仅仅因为管理员没有考虑到而被遗忘的话,你的整个架构就处于风险之中,而不仅仅是你的一台服务器。一旦攻击者进入了系统内部,他一般会发现接触其它服务器是相当简单的。
因此,看起来有两种可以保障一个架构安全的方法:一是限制暴露程度并期望(只能是期望)想象不到的威胁不会发生。二是采取措施保障自身的安全,因而一旦攻击者试图渗透你的防御系统,却不能造成任何的危害。实际情况是,大多数企业甚至都不能承认其安全策略只能属于两种方法的一种。
防火墙是极容易被攻克的,特别是暴露的应用程序自身处于危险之中的时候。实际上,一个表面上看似很安全的防火墙通常会吸引更多的攻击者,这不是因为他们希望接受什么挑战,而是因为他们知道系统是外强中干的。我们要记住,大多数企业的外部防御还是很脆弱的。