Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux安全 ->正文

Linux 更安全(二)

来源:IBM DW中国 作者:Mario Eberlein  时间:2007-04-22 点击: [收藏] [投稿]

详细行动计划

既然安装的总体环境和目标都已经完善地记入文档,您现在可以深入细节了 —— 使用什么软件,怎么样安装和配置它,等等。您编写的计划应该详细到能回答出在安装过程中出现的任何问题的程度。

检查源代码

Ken Thompson 是 UNIX 的创始人之一,他在 Relections on trusting trust 中讨论了为了设法使源代码不能揭示安全问题而采取的很多步骤。

首先,他为 login 命令打上补丁,使其包含一个后门,这样使他可以使用一个特定的密码登录进入任何 UNIX 系统。

然后,他给 C 编译器打上补丁,使其当编译 login 命令时进行检测。C 编译器将自动把后门插入到 login 程序中,所以,不需要在 login 命令的源代码中保留后门。

然后,他对 C 编译器进行修改,使其在通过源代码编译 C 编译器本身时进行检测,并自动添加 login-detection-and-patching 代码和 C-compiler-detection-and-patching 代码。

结果得到一个源代码中不包含任何后门痕迹的系统。

选择 Linux 发行版本和服务器软件程序包

这实际上是两个单独的步骤,不过先做什么要取决于您的情况。在很多情况下,由于组织的政策、企业许可证协议或者可用的技术,要使用的发行版本已经确定。有时,您会先关注可以满足安装用途的软件程序包的选择;然后,根据程序包的先决条件、哪个发行版本包含立即可用的程序包、或者发行版本的价格,来选择发行版本。不过,通常两者是结合在一起的,您必须反复缩小选择范围。不过,您永远不应该仅仅因为您手边有某个安装媒体而选择安装那个发行版本。

对于每一种使用情形(邮件服务器、文件服务器、Web 服务器、字处理等等)都有多种软件程序包可以满足其用途。尤其当用户不直接与软件程序包打交道时(比如由专门团队管理的服务器软件),您选择更为安全的软件程序包时所受的限制就会更少。要对各种 Web 服务器、邮件传输代理、数据库管理系统等,或者甚至是整个发行版本的安全方面进行评价,最好首先搜索 BugTraq 或 Full Disclosure 等邮件列表(参见 参考资料 中关于这些的链接)。

基于软件程序包的历史问题来判断其安全性,这实际上相当于看着后窗玻璃驾驶汽车 —— 您不知道将要遇到的是什么,但是您可以得知您是在直路上还是在弯路上。另一个应该谨记的问题是,相对于很少用到的,经常用的软件程序包受到的检查更多。仅仅因为“Tom's HyperWeb Server v0.0.2”在这些邮件列表上没有任何已知的 bug,并不意味着它就没有 bug。

能在源代码层次上对任何软件程序包进行审计,经常被列举为开放源代码软件的优势之一。不过,可用时间、技术和预算等现实的约束使得这种方法在几乎所有情形下都是不切实际的,所以您不得不依赖于程序员 和/或 程序包维护者和发行者的诚实。

您还应该将打算怎么样运行一个服务记入文档。需要考虑的一些事情:

  • 使用 xinetd 让您可以调整哪个服务可以提供给谁,可以强制限制防止拒绝服务(denial-of-service)攻击,可以将服务调用日志记录到一个集中的位置。
  • TCP 包装器 提供了一种方法,以将服务限制在特定范围的请求地址内,并将请求记录到日志。
  • chroot jails 创建一个环境,这个环境是您实际安装的一个子集。即使服务受到攻击,被影响的也只是这个子集环境。由于它基于目录树的隐藏部分,所以它最适用于那些操作在可以方便地包括到那个树中的小的而且独立的文件集上的服务器。

附加的软件程序包

除了计划的使用情形所需要的软件之外,安装过程很可能还会安装其他软件。您需要的软件(实际的操作系统:Linux 内核、共享库、基本的实用程序等等),您想要的软件(增强安全性的软件,比如配额、防火墙和审计),以及您不想要的软件(不必需的程序包)。

为了方便,发行版本通常向默认安装添加保持系统运行和满足其用途所不必要的软件程序包。在运行期没有用户交互的系统中,图形用户界面、多媒体软件和游戏都属于这种不必要的软件。

任何安装到机器上的软件都必然会占用资源并降低机器的安全性,引入可能被利用的潜在的 bug:

  • 外部攻击者可以利用不必要的服务在服务器上执行代码,比如通过缓存溢出(参见 参考资料 中关于此漏洞讨论的链接)。
  • 管理员也是人,所以容易犯错误。没有安装的软件不可能被错误地配置,这样就封住了另外的潜在安全漏洞。
  • 即使软件不是一直在运行,也没有暴露在网络上,也会增加管理员的负担,因为在发现 bug 时管理员要进行安全修订。假定某个服务中的一个瑕疵被发现,而且发生了入侵。攻击者现在可以在用户的安全上下文中在服务器上执行程序。现在,机器上任何可用的程序都可能被攻击者利用,或者是提升他/她的特权,获取安全相关的信息,或者攻击可能深藏在组织的防火墙之后的其他系统。
  • 社交工程技巧(social engineering techniques)经常欺骗合法用户(乃至管理员)去运行最终影响安全的程序,这是为什么要尽可能少地安装程序的另一个原因。

关于增强安全性的程序包,您应该考虑安装下面这些:

  • 配额: 应该使用配额来限制用户(包括 ftpd 或 httpd 等后台进程的用户)可用的资源。这样可以挫败本地拒绝服务(DoS)攻击,那种攻击可能通过“fork bomb”用光所有可用的进程 ID,启动很多极其消耗内存的程序,或者消耗分区的全部空闲空间。大部分当前发行版本都包含配额,在大部分情况下其程序包称为“quota”。通过 PAM 可以实现除了磁盘配额以外的其他限制,它默认也会安装。在本系列的下一篇文章中将描述那些限制的配制。
  • 防火墙:

     如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



    上一篇:让Linux 更安全(一)   下一篇:让 Linux 更安全(三)

    文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号