内容:" name="description" />

让 Linux 更安全,第 1 部分

发表于:2007-07-04来源:作者:点击数: 标签:
在第一篇文章中,我们将首先回顾保护数据及保护数据的系统的考虑。我们的目标是对安全的实际含义的更深入理解。 让 Linux 更安全,第 1 部分:介绍 java script:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)"> 内容:

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

让 Linux 更安全,第 1 部分:介绍javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)">

内容:
安全的定义
完整性
机密性
可用性
Linux 系统安全
结束语
参考资料
作者简介
对本文的评价
相关内容:
解决 Linux 中的安全问题
实用 Linux 安全性
Linux 安全编程专栏
订阅:
developerWorks 时事通讯
对安全的含义的思考

级别: 初级

Mario Eberlein, IT 架构师, IBM
Rene Auberger, 软件 IT 架构师, IBM
Wolfram Andreas Richter, IT 架构师, IBM

2004 年 8 月 02 日

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

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

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

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

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

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

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

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

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

综合起来,这些被称作是存储在计算机上的数据的“CIA”。对 /etc/passwd 等配置数据的保护可以归类为数据安全。 系统安全 指的是计算机平台本身。美国 NationalInformation 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)方法 —— 访问控制列表(Aclearcase/" target="_blank" >ccess 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 系统的第一个步骤:计划和执行安装。待续!

参考资料

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文.

  • 参阅 Committee on National Security Systems 的 National Information Assurance Glossary以获得关于系统安全定义的概要。

  • Bruce Schneier 的 Secrets and Lies: Digital Security in a Networked World (John Wiley & Sons,2004)研究了计算机系统威胁、黑客理念体系、预防、安全系统实现等内容。

  • 要获得关于那些提供安全的 Linux 环境的工作的全面概述和资源指南,请阅读 解决 Linux 中的安全问题( developerWorks,2001 年 6 月)。

  • 实用 Linux 安全性( developerWorks,2002 年 10 月)强调指出合理的用户管理是良好安全的开始。

  • developerWorks 的 Linux 安全编程 专栏是一个即将推出的系列,旨在帮助您为 Linux 编写安全的程序。

  • 完整性:更多读物
    • Seth Friedman 的 Building the Ideal Web Hosting Facility: A Physical Security Perspective(SANS Institute,2003 年 2 月)介绍了构建 Web 主机工具时的物理安全。
    • Wikipedia 阐述了 中间攻击中的人,在这种类型的攻击中,第三方可以读取并修改两个未知的受害者之间发送的消息。
    • 阅读 Wikipedia 的关于 数字签名 的阐述。
    • 验证数据完整性的一个常见方法是校验和。 Enhancing File System Integrity Through Checksums 给出了一个全面的概述。

  • 机密性:更多读物
    • Pluggable Authentication Modules允许在 Linux 操作系统中配置并权衡使用多个认证机制。
    • NIS-Howto描述了如何将 Linux 配置为一个 NIS(YP)或 NIS+ 客户机,以及如何安装 NIS 服务器
    • Kerberos Infrastructure HOWTO描述了用于在 Linux 中处理认证的 Kerberos 基础设施的设计与配置。
    • LDAP 白皮书描述了如何设置 Linux 工作站,以使用一个 LDAP 服务器来存储用户信息和进行认证。
    • Access Control Lists 补丁/用户代码组合可以支持用于 Linux 内核的完全访问控制列表(ACL)。
    • GNU Privacy Guard 是一个开放源代码的加密软件栈。

  • 可用性:更多读物
    • Tivoli Intelligent Orchestrator通过自动触发服务器到产品的准备、配置以及部署来帮助提高服务器利用率。
    • 当计划一个高可用配置时,要紧记 IBM 红皮书 Technote Patterns for the Edge of Network 中的指导方针。
    • 红皮书 Continuous Availability -- Systems Design Guide会引导您完成分析、设计和实现持续可用系统的整个过程。
    • American Power Conversion 的 Effect of UPS on System Availability阐述了系统的可用性和运行时间会如何受到交流电断电的影响。
    • IT availability Check List( availability.com,2004)提供了关于可用性需要考虑的问题的一个速查清单。
    • Computerworld阐述了 如何防御 DDoS 攻击。

  • Linux 安全项目
    • Security Enhanced Linux:这个 Linux 版本将强大、灵活的强制访问控制体系结构融入内核之中。
    • Openwall GNU/Linux:以 Linux 和 GNU 软件为核心的增强安全的服务器操作系统。
    • Bastille Linux:Bastille Hardening System 努力去“加强”或“加固”UNIX 操作系统。
    • IPCop Firewall 是主要的 Linux 防火墙发行版本之一。
    • Knoppix 安全工具发行版关注的是一张可引导 CD 上的信息安全和网络管理工具。
    • 要了解更多 Linux 安全项目,请访问 LinuxLinks.com 的 Distributions: Secure。

  • 在 developerWorks Linux 专区 可以找到更多为 Linux 开发者准备的参考资料。

  • 购买 Developer Bookstore Linux 区 打折出售的 Linux 书籍。

  • 通过 developerWorksSubscription 使用最新的 IBM 工具和中间件来开发和测试您的 Linux 应用程序:您可以自 WebSphere、DB2、Lotus、Rational 和Tivoli 得到 IBM 软件,以及一个可以在 12 个月内使用这些软件的许可,所有的花费都比您想像的要低。

  • 自 developerWorks 的 为您的 Linux 应用开发加油提速 专区下载可以运行于 Linux 之上的经过挑选的 developerWorks Subscription产品免费测试版本,包括 WebSphere Studio Site Developer、WebSphere SDK for Web services、WebSphereApplication Server、DB2 Universal Database Personal Developers Edition、TivoliAccess Manager 和 Lotus Domino Server。要更快速地开始上手,请参阅针对各个产品的 how-to 文章和技术支持。
作者简介
Mario EberleinMario 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 AubergerRene Auberger 是 IBM Software Group 的一名软件 IT 架构师。他主要与来自德国公共部门的客户(对 Linux 有浓厚兴趣的客户)的一起工作。1996 年 Rene 开始从事 Linux 方面的工作,从那时起就以各种形式为了不同的目的而使用 Linux。他是德国、奥地利和瑞典的 Software Group 的 Linux 技术领导。您可以通过 rene.auberger@de.ibm.com与他联系。


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

原文转自:http://www.ltesting.net