极限首页 业界焦点 软件工程师之路 系统工程师之路 网络工程师之路 软件下载 技术社区
 Linux操作系统的内核编译内
 Linux下设备完全驱动之四
 Linux下设备完全驱动之二
 Linux下设备完全驱动之三
 Linux下设备完全驱动之一
 Linux内核如何从2.4升级到
 开源世界的虚拟机 QEMU
 Linux下软件RAID的实现
 RHEL4内建LVM工具入门
 linux SSH 的一些安全小技
 Linux操作系统的内核编译内
 Linux下设备完全驱动之四
 Linux下设备完全驱动之二
 Linux下设备完全驱动之三
 Linux下设备完全驱动之一
 Linux内核如何从2.4升级到
 开源世界的虚拟机 QEMU
 Linux下软件RAID的实现
 RHEL4内建LVM工具入门
 linux SSH 的一些安全小技

Shell 中文手册

Python 2.3 中文手册

Python 2.4 中文手册

Mysql 4.x 中文手册

PHP 4.x 中文手册

Apache 2.x 中文手册
更多手册

站内搜索:
当前位置:首页>>系统工程师之路>>管理进阶>>正文
让 Linux 更安全
时间:2005-04-27 作者:IBM 来源:developerWorks 中国

 

Mario Eberleinm_eberlein@de.ibm.com) , IT 架构师, IBM
Rene Aubergerrene.auberger@de.ibm.com) , 软件 IT 架构师, IBM
Wolfram Andreas Richterwrichter@de.ibm.com) , IT 架构师, IBM

2004 年 8 月

惟有谨小慎微者方可幸存,与其他领域一样,在确保 Linux® 系统的安全时,这句话也同样适用。幸运的是,有很多安全部件,或者已经编译到内核中,或者已经加入到很多 Linux 发行版本中,或者可以以开放源代码应用程序的形式单独获得。作为本系列的第 1 部分,本文将使您开始理解安全的概念及潜在的危险,并为您真正需要知道的内容做好准备:如何保护和加固基于 Linux 的安装。

在这三篇系列文章中,您将看到如何以一种安全的方法来计划、设计、安装、配置和维护运行 Linux 的系统。除了安全概念的理论概述、安装问题、潜在的危险及其作用以外,您还将得到关于如何保护和加固基于 Linux 的系统的实用建议。我们将讨论最小化安装、加固 Linux 安装、授权/认证、本地和网络安全、攻击和如何防御攻击,以及数据安全、病毒和恶意程序。

在第一篇文章中,我们将首先回顾保护数据及保护数据的系统的考虑。我们的目标是对安全的实际含义的更深入理解。

安全的定义
安全是当今 IT 相关头条新闻的一个重要话题。经常出现的系统漏洞和安全补丁以及病毒和蠕虫是每个使用计算机的人都耳熟能详的名词。因为几乎每台计算机系统都连接到另外的计算机或者连接到 Internet,因此确保这些计算机的安全,对于减少入侵、数据窃取或丢失、误用甚至对第三方的责任而言是至关重要的。

确保安全即使对于没有连接到网络的独立的计算机也是很重要的。必须自可信赖的来源安装应用程序,比如经过验证的并检查过病毒的光盘。对应用程序数据也必须同样小心。例如,对于可以执行强大的宏语言或者引入非法数据的软件程序包(office 套件等等),其软件缺陷可能会被利用来执行任意的代码。因此,应用程序数据在拷贝到计算机之前必须经过完整性检查。可以通过将数据放置在一个安全的地方来控制对系统的访问(当然,不考虑来自已授权人员的攻击)。

当系统连接到网络并向其他计算机提供服务(有意地或无意地)时,事情会变得更为棘手。在那种情况下,数据可能不只是来自系统管理员,因为客户机程序要使用所提供的服务,而系统漏洞可能会让入侵者控制计算机。

这就是为什么安全是从开始计划直到拆除系统的整个系统生命周期中最基本的问题。但是,安全的确切含义是什么?

通常,数据安全和系统安全可以分开来考虑。 数据安全 通常被认为是确保以下方面的所有努力:

  • 机密性(Confidentiality)。
  • 完整性(Integrity)。
  • 可用性(Availability)。

综合起来,这些被称作是存储在计算机上的数据的“CIA”。对 /etc/passwd 等配置数据的保护可以归类为数据安全。系统安全 指的是计算机平台本身。美国 National Information Systems Security Glossary(参阅 参考资料 以获得链接)对系统安全的定义如下:

系统安全。对信息系统的保护,防止未授权的访问及对信息(不论是存储中的、正在处理的还是正在传输的)的修改,并防止对授权用户服务的拒绝或对未授权用户服务的允许,包括那些检测、记录和反击此类威胁的措施。

重要的是要认识到系统安全强调的是一个反复的过程,这个过程包括应用安全补丁、经常审计、控制,同时最起码要有一个安全的系统配置。就此而言,不可能保证绝对的安全,也不可能提供百分之百安全的服务。目标更应该是在安全性、系统可用性和维护这个安全层级所需要的努力这三者之间找到一个折衷点。这个折衷取决于安全对于存储在计算机中的数据来说的重要性以及这些数据预期的使用情形(阅读 Bruce Schneier 的 Secrets and Lies,John Wiley & Sons,2000;参阅 参考资料 以获得链接)。

完整性
具备 完整性 的数据是指合法的而且没有经过偶然的或恶意的修改。当进行数据存储或交换时应该考虑其完整性。目标接收到的数据必须是源数据的原样拷贝。这就是说,一方面,物理传输和存储媒介必须是可靠的,以使得数据可以正确地传输而不发生位错误。另一方面,数据必须不能被未经授权的实体不加检测地访问而修改。完整性的范围是从用户 —— 最终的权威 —— 将数据委托给系统后开始的。因此用户错误不在完整性范围之内。

对网络连接而言,要尤其注意确保完整性,不管网络是否安全(例如,通过加密传输)。在传输过程中,可以访问传输媒介的第三方可能会重新路由或者修改数据。涉及网络的物理环境和互联的计算机的完整性的方面并不特定于 Linux,而是对所有计算机安装来说都是如此;因而这也超出了本文的范围。无论如何,除了其他方法之外,在物理层上采取的保护数据的措施包括,限制对计算机的访问、保持对传输媒介(比如电缆和连接器)的保护,以及避免停电和静电释放(阅读“Building the Ideal Web Hosting Facility: A Physical Security Perspective”,参阅 参考资料 以获得链接)。

本系列文章将集中关注加密和签名等在操作系统和应用程序环境中采取的措施,以积极地确保完整性。本文还将关注审计机制,以识别完整性的缺失并确定应对此负责的当事人。

机密性
当受保护的数据只能被授权的人或系统读取或者修改时,要保持其 机密性。这是一个与完整性截然不同的概念:当数据在网络上传输时,它可能是被毫无修改地正确传输,因此确保了其完整性,但是如果被第三方中途截取的话就再也不是机密的了。当未被授权的人可以访问数据传输并从中获取有价值的信息时,只有完整性是不够的。数据的机密性引出了三个更深入的问题:

  • 谁希望访问数据?(认证)
  • 哪些数据可以被访问?(授权)
  • 如何保护数据不受未授权的访问?

Linux 有若干方法可以确保试图访问数据的实体是其所宣称的那一个。通过 Pluggable Authentication Modules(PAM),您可以实现一些认证策略,从存储在本地机器上一个集中目录(NIS、Kerberos、LDAP 等等)中简单的用户名/口令组合,到硬件标识或生物特征扫描不等。文件访问的授权可以使用传统的(粗糙的)UNIX 文件权限来解决:用户、组或全体级别的读、写和执行权限。较新的细粒度的(fine-grained)方法 —— 访问控制列表(Access Control Lists)—— 让您可以为具体的用户授予或拒绝具体的权限。

标准 Linux 安全概念是在软件中实现的,依赖于内核不接受没有被授权的用户对资源的使用。不过,内核缺陷(特权提升/自动调整、未经检查的参数,等等)可能会使用户可以访问先前不能访问的内存区域、磁盘空间、网络或者其他资源。通过安装击键记录器(keyloggers)、取走硬盘驱动器并在其他机器中读取、嗅探网络传输等等,对硬件物理上的访问可以让用户绕过软件检查。这样,必须采取更进一步的努力来保护机密的数据,比如文件系统、单个文件、网络传输的加密,和/或应用程序级别的加密。此外,物理上的措施也需要考虑,比如安全区域、数据的安全删除,以及机密信息的会计程序,不过本文并不涉及这些。

可用性
即使完整性和机密性都得到了保证,如果数据不能被访问,那么它是没有用处的,即不可用的。 可用性 措施确保数据永远不会丢失,而且当被请求时,可以以预定义的性能级别被访问。可用性可能会受到不同方式的威胁:

  • 破坏性攻击 —— 称为拒绝服务(Denial-of-Service,DoS)攻击 —— 这类攻击的目标是可用性。它们通过消耗所有可用的网络、CPU、存储或操作系统资源(比如文件句柄),使得一台计算机或一个服务不可用或不能用。
  • 目标是数据本身的攻击,试图删除或覆盖数据。
  • 数据的意外破坏。在大部分情况下,不可能避免对数据的意外破坏,因为拥有适当权限的用户被认为是最终的权威。您只能通过在适当的位置使用一个备份/转储基础设施来预先做好准备。
  • 最后,但不是最不重要的,缺陷、配置错误、物理环境、硬件失败、停电、不必要的系统重新引导等等,也都可能影响可用性。这个列表中的软件相关话题更应该归入 系统安全,稍后将更深入讨论。如上所述,硬件相关的话题在本文中不做讨论,但是,如果您对这些话题感兴趣,请参阅 参考资料 部分以获得更多读物的链接。

解决上面列表中的前两个问题的特定 Linux 措施包括,网络数据包的防御(firewalling)/过滤(filtering ),对文件系统完整性的保护,以及计划可根据需要进行添加的额外的资源(例如,使用 Tivoli® Intelligent Orchestrator;参阅 参考资料 以获得链接)。

Linux 系统安全
Linux 是一个现代的、开放源代码的操作系统,可以自由地发行和拷贝。每个用户都有权限修改它的源代码,易于为您自己的环境定制 Linux、向操作系统添加新部件、发现缺陷和提供补丁,以及检查源代码中的安全漏洞。

尽管数据安全和系统安全是分开来考虑的,但是系统安全会对数据安全产生主要的影响。这就是为什么 Linux 具有很多解决机密性、完整性、可用性以及系统安全本身的问题的集成部件的原因。其中有 IP 防御、认证机制、系统日志和审计、加密协议和 API、内核级 VPN 支持,等等。另外,系统安全可以由(开放源代码)软件应用程序来支持,这些应用程序提供安全服务、加固和/或控制 Linux 系统、防止并检测入侵、检查系统和数据的完整性,并提供防止不同攻击的屏障。

安全的一个值得关注的主要因素是,Linux 与不开放源代码的操作系统之间的区别在于开放源代码开发过程本身。由于软件的每个用户和开发都可以访问其源代码,因而有很多人都在控制和审视源代码中可能的安全漏洞。软件缺陷很快会被发现。一方面,这会导致这些缺陷更早被利用;另一方面,很快就会有可用的安全补丁。

结束语
考虑其可靠性、稳定性、可扩展性、可管理性、性能,以及最后但不是最不重要的一点,它的安全部件, Linux 已经证明适合专业的企业应用程序。由于它的开放源代码哲学让用户可以为满足具体的需要而定制和扩展系统,Linux 变得越来越流行。因此,Linux 系统管理员需要理解加固 Linux 并保护它不受可能攻击的安全机制。本系列的下一篇文章将讨论获得安全的 Linux 系统的第一个步骤:计划和执行安装。待续!

参考资料

作者简介
Mario Eberlein Mario Eberlein 是一名致力于随需应变商务应用程序的 IT 架构师。他于 1998 年 10 月加入 IBM,当前在 IBM Global Services 从事客户项目的工作。Mario 拥有科学学士学位,当前正在攻读 Business Administration 硕士学位的,并且具有 7 年的 Linux 经验。他是 EMEA Central Region 的 IBM Linux Security Workgroup 的领导。您可以通过 m_eberlein@de.ibm.com 与 Mario 联系。


Rene Auberger Rene Auberger 是 IBM Software Group 的一名软件 IT 架构师。他主要与来自德国公共部门的客户(对 Linux 有浓厚兴趣的客户)的一起工作。1996 年 Rene 开始从事 Linux 方面的工作,从那时起就以各种形式为了不同的目的而使用 Linux。他是德国、奥地利和瑞典的 Software Group 的 Linux 技术领导。您可以通过 rene.auberger@de.ibm.com 与他联系。


Wolfram Andreas Richter Wolfram Andreas Richter 是 IBM Software Group 的一名商务集成顾问和 IT 专家。自 1995 年加入 IBM 起,Wolfram 已经涉足了很多学科领域,范围从应用程序开发到管理教育。他有 8 年的 Linux 经验,拥有德国斯图加特 University of Cooperative Education 的科学学士学位,以及英国 Henley Management College 的 Business Administration 硕士学位。在业余时间,Wolfram 喜欢进行运动、骑摩托车和外出。您可以通过 wrichter@de.ibm.com 与他联系。

推荐】【 】【关闭


关于极限 | 站内地图 | 意见反馈 | 广告服务 | 数据服务 | 联系我们
本站所刊登的文章,技术资料,软件均整理于网络资源或本站原创,转载请务必联系原作者或本站。
Copyright ? 2001-2004 UPLinux.com All Rights Reserved.
本站唯一联系信箱:
京ICP备05010519