安全的定义 安全是当今 IT 相关头条新闻的一个重要话题。经常出现的系统漏洞和安全补丁以及病毒和蠕虫是每个使用计算机的人都耳熟能详的名词。因为几乎每台计算机系统都连接到另外的计算机或者连接到 Internet,因此确保这些计算机的安全,对于减少入侵、数据窃取或丢失、误用甚至对第三方的责任而言是至关重要的。
综合起来,这些被称作是存储在计算机上的数据的“CIA”。对 /etc/passwd 等配置数据的保护可以归类为数据安全。系统安全 指的是计算机平台本身。美国 National Information Systems Security Glossary(参阅 参考资料 以获得链接)对系统安全的定义如下:
对网络连接而言,要尤其注意确保完整性,不管网络是否安全(例如,通过加密传输)。在传输过程中,可以访问传输媒介的第三方可能会重新路由或者修改数据。涉及网络的物理环境和互联的计算机的完整性的方面并不特定于 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)、取走硬盘驱动器并在其他机器中读取、嗅探网络传输等等,对硬件物理上的访问可以让用户绕过软件检查。这样,必须采取更进一步的努力来保护机密的数据,比如文件系统、单个文件、网络传输的加密,和/或应用程序级别的加密。此外,物理上的措施也需要考虑,比如安全区域、数据的安全删除,以及机密信息的会计程序,不过本文并不涉及这些。
解决上面列表中的前两个问题的特定 Linux 措施包括,网络数据包的防御(firewalling)/过滤(filtering ),对文件系统完整性的保护,以及计划可根据需要进行添加的额外的资源(例如,使用 Tivoli® Intelligent Orchestrator;参阅 参考资料 以获得链接)。
Linux 系统安全 Linux 是一个现代的、开放源代码的操作系统,可以自由地发行和拷贝。每个用户都有权限修改它的源代码,易于为您自己的环境定制 Linux、向操作系统添加新部件、发现缺陷和提供补丁,以及检查源代码中的安全漏洞。
尽管数据安全和系统安全是分开来考虑的,但是系统安全会对数据安全产生主要的影响。这就是为什么 Linux 具有很多解决机密性、完整性、可用性以及系统安全本身的问题的集成部件的原因。其中有 IP 防御、认证机制、系统日志和审计、加密协议和 API、内核级 VPN 支持,等等。另外,系统安全可以由(开放源代码)软件应用程序来支持,这些应用程序提供安全服务、加固和/或控制 Linux 系统、防止并检测入侵、检查系统和数据的完整性,并提供防止不同攻击的屏障。
结束语 考虑其可靠性、稳定性、可扩展性、可管理性、性能,以及最后但不是最不重要的一点,它的安全部件, Linux 已经证明适合专业的企业应用程序。由于它的开放源代码哲学让用户可以为满足具体的需要而定制和扩展系统,Linux 变得越来越流行。因此,Linux 系统管理员需要理解加固 Linux 并保护它不受可能攻击的安全机制。本系列的下一篇文章将讨论获得安全的 Linux 系统的第一个步骤:计划和执行安装。