2. 概述

这一章试图解释有助于 GNU/Linux 系统更为安全的一些步骤和常用的软件。首先讨论基本观点,等有了关于安全性的基础之后再继续,这是很重要的。

2.1. 为何需要安全性?

在不断变化的世界中,全球数据交换、廉价的 Internet 连接以及迅速发展的软件使得安全性越来越为人们关注。由于全球计算天生不安全,安全性已经成为基本需要。例如,当您的数据在 Internet 上从 A 点到 B 点的过程中,它可能经过其他的一些结点,从而让其他用户有机会阻拦甚至更改这些数据。甚至您所在系统上的其他用户也可能恶意将您的数据传送到您不希望的地方。入侵者(亦称“骇客(cracker)”)可能获得您系统未被授权的访问,他可利用拥有的高深知识假扮您,窃取您的信息甚至拒绝您访问您自己的资源。如果您对“黑客(hacker)”和“骇客”有何区别不甚了解,请参考 Eric Raymond 的如何成为一名黑客一文。

2.2. 怎样的安全性才是安全的?

首先,请记住没有计算机系统能够达到万无一失。您要做的就是令危害您系统的人感到格外的困难。对于普通的家庭 GNU/Linux 用户来说,不需要做很多就可以阻挡偶然光顾的骇客。然而,对于高度公开的 GNU/Linux 用户(银行、电信公司等),需要采取更多的工作。

另一个需要考虑的因素是您的系统愈安全,其安全性愈具强制性。您需要根据您的需要在安全性和可用性之间寻找到一个平衡点。例如:您要求所有拨号连接到您系统的人使用回拨调制解调器(call-back modem)以便用他们的家庭号码回拨回去,这样比较安全。但是万一某人不在家,那登录起来就困难了。您也可以将您的 GNU/Linux 系统设定为既没有网络,也不连到 Internet,但这样一来就限制了它的用处。

对于大中型站点,您应该建立一份安全策略来说明您的站点需要怎样的安全性以及用什么来监听以便核查。您可以在 faqs.org 找到一份著名的安全性策略。它包含了一个能为贵公司建立安全策略的很好的框架。

2.3. 要保护什么?

在准备保护您的系统之前,您必需确定您面临什么样的威胁,需要或者避免冒怎样的险,以及最终您系统脆弱性如何。您应该通过分析您的系统来了解您究竟需要保护什么,为什么要保护它,它有什么价值,以及谁应该对您的数据及财产负责。

  • 风险是指入侵者成功访问您的计算机的可能性。入侵者能否读写文件,或是执行可能导致危险的程序?他们是否能够删除敏感的数据?他们是否能够阻止您或是您的公司完成重要工作?不要忘记:能够访问您的账户或是系统的人也能够假扮您。

    另外,系统中的某个不安全的账户能够危及整个网络。如果您允许单个用户使用 .rhosts 文件登录,或是使用某个不安全的服务(例如:tftp),那您就是在“引狼入室”。一旦入侵者在您的系统(或是其他人的系统)中获得了一个帐号,它就能被用来获得访问其他系统或者其他帐号的权限。

  • 威胁通常来自某个有动机窃取您的网络或是系统访问权限的人。您必须确定能够信任谁来获得访问您系统的权限,以及他们会提出何种程度的威胁。

    入侵者可分为好几种。在您保护您的系统时请将这些不同点牢记在心。

    • 好奇者 – 这种入侵者基本上只对搞清您拥有的是怎样的数据和系统感兴趣。

    • 居心叵测者 – 这种入侵者或是让您的系统宕机,或是篡改您的网页,或是迫使您花费时间和金钱从他造成的损害中恢复。

    • 高调入侵者 – 这种入侵者妄图通过您的系统流芳百世或者遗臭万年。他可能使用您高度公开的系统来展示他的能力。

    • 竞争者 – 这种入侵者对您系统拥有什么数据感兴趣。这些人认为您的数据能够在金钱上或是其他方面有利用价值。

    • 剽窃者 – 这种入侵者感兴趣的是在您的系统上开一个作坊,利用您的资源达到他个人的目的。一般,他会运行聊天或是 IRC 服务器、保存色情图片的服务器、甚或 DNS 服务器。

    • 转跳者 – 这种入侵者只关心通过您的系统获得访问其他系统的权限。如果您的系统有很多连接,或是一系列内部主机的网关,您就会时常发现此类侵害您系统的企图。

  • 脆弱性描述了您的计算机相对其他网络被保护的程度,以及访问权限被窃取的可能性。

    当您的系统被攻破时会有何危险?当然,使用 PPP 动态连接的家庭用户与连接到 Internet 或是其他大型网络的公司关注点不同。

    改正或是重建丢失的数据需要花费多长时间?当您需要恢复丢失的数据时就会觉得磨刀不误砍柴工了。您是否检查过您的备份策略并在事后验证了您的数据了?

2.4. 建立安全策略

请为您的网络建立一个简单、基本的策略以便您的用户能够容易地理解和执行。它应该保护您看管的数据,同时也应保护用户的私有数据。其他需要考虑的是:谁有访问系统的权限(我的朋友能否使用我的账户?),允许谁在系统上安装软件,谁拥有什么数据,怎样灾难恢复,如何正确使用系统。

被广泛接受的安全策略首先明确:

没有被允许的就是禁止的

这意味着除非您授权某个用户访问某项服务,那个用户就不能使用该项服务。请确认该策略能在标准用户账户上使用。如果只是说:“啊,我不能解决这个权限问题了。算了,用 root 做吧。”,那就会陷入已知的甚至未知的安全漏洞。

rfc1244 一文阐述了如何建立您自己的网络安全策略。

rfc1281 一文展示了一个每一步有详细解释的安全策略实例。

要查看现实生活中的安全策略是怎样的,您可以看看 COAST 策略存档

2.5. 保护您网站的方法

本节讨论了各种不同的安全措施。通过这些安全措施您能够保护您辛勤工作所得:计算机、数据、客户、网络、甚至是您的声望。您是否考虑过,如果入侵者删除了您客户的资料,或是篡改了您的网站,或是公布了贵公司下个季度的项目计划,这些都将对您的声望产生什么样的后果?如果您在规划一个网络,在添加另一台计算机进入您的网络之前,有许多因素需要考虑。

甚至,当您仅有一个拨号 PPP 账号,或仅有一个小站点,这也不意味着入侵者不会对您的系统产生兴趣。大型、高度公开的站点并非唯一的目标 –许多入侵者只是想占领尽可能多的网站而不论它们的大小。不仅如此,他们还可能利用您系统上的安全漏洞来入侵您所连接的其他系统。

入侵者通常是百无聊赖的,而且他们常用穷举法来猜测您是用什么来保护您的系统。有一大堆理由让入侵者盯上您的系统,我们将在下文就此展开讨论。

2.5.1. 主机安全性

系统管理员最为关注的安全性领域可能是主机安全性。这基本上包括确定您自己的系统是安全的,并且希望网络上其余所有的也一样。选取良好的密码,保护主机本地网络服务,保存良好的簿记记录,并且更新已知具有安全漏洞的程序,这些都是本地安全管理员的职责所在。虽然这些都是绝对必要的,然而随着您所在网络规模的增长,这一工作就会愈加艰巨。

2.5.2. 本地网络安全性

网络安全性同主机安全性同样重要。随着您的某个网络上拥有成百上千甚至更多的计算机,您不能想当然地认为那些系统中的每个都是安全的。通过建立防火墙,采用高强度加密,并且保证您的网络上没有“无赖”(即不安全的)计算机,能够确保只有被授权的用户才能使用您的网络。这些是网络安全管理员的职责所在。

本文讨论了可以用来保护您的网站的一些技术,还特地展示了一些能够阻止入侵者获得权限访问您想保护的东西。

2.5.3. 通过遮掩来获得安全

必须讨论的安全性之一是“通过遮掩来获得安全”。举例来说,就是将某个具有已知安全性漏洞的服务转移到某个非标准的端口,并且希望攻击者不会注意到这一点,从而不来攻击。不过其他人可能会找出它换了地方,并且不会放过它。通过遮掩来获得安全一点也不安全。仅仅因为您只有一个小站点,或是比较低调,不能指望入侵者不会对其感兴趣。下一节将介绍您在保护什么。

2.6. 本章组织结构

本章分为几节。它们涵盖了几种普通的安全性问题。首先,第 3 节 “物理安全性”涵盖了如何保护您的物理机器不被篡改。其次,第 4 节 “本地安全性”展示了如何设置您的文件系统及其权限。再次,第 6 节 “密码安全性及加密”讨论了如何使用加密来更好地保护您的主机和网络。第 7 节 “内核安全性”讨论了您应该设置或是了解的内核选项,以得到一个更安全的系统。第 8 节 “网络安全性”描述了如何更好的保护您的 GNU/Linux 系统抵御网络攻击。第 9 节 “安全准备(上线之前)”讨论了在将您的主机联入网络之前应作的准备。然后,第 10 节 “在受到攻击及其后应该怎么办”讨论了当您检测到某个系统威胁正在发生或者已经发生时应该作什么。第 11 节 “安全资源”中列举了一些基本的安全资源。问与答(Q & A) -- 第 12 节 “常见问题”回答了一些经常被问到的问题。最后,第 13 节 “总结”作出总结。

阅读本章时需要注意的两个重点:

  • 了解您的系统。请查看系统记录,例如:/var/log/messages。并请随时关注您的系统。

  • 请保持更新您的系统,确定已经安装了当前版本的软件,并根据每个安全警报作了更新。这一简单的措施能使您系统的安全性有显著的提高。