在网络环境中,系统管理的另一个非常重要的方面是保护您的系统和用户免受入侵者的侵害。管理不善的系统会给恶意人员提供许多目标:攻击范围从密码猜测到以太网监听,造成的损害可能从伪造邮件消息到数据丢失或侵犯用户隐私。我们将在讨论这些问题可能发生的背景时提及一些具体的问题,以及针对这些问题的一些常见防御措施。
本节将讨论一些处理系统安全的示例和基本技术。当然,所涵盖的主题无法详尽地处理您可能面临的所有安全问题;它们仅用于说明可能出现的问题。因此,阅读一本关于安全的好书是绝对必要的,尤其是在联网系统中。强烈推荐 Simon Garfinkel 的 ``Practical UNIX Security'' (参见 [])。
系统安全始于良好的系统管理。这包括检查所有重要文件和目录的所有权和权限,监控特权帐户的使用等等。例如,COPS 程序将检查您的文件系统和常用配置文件中是否存在异常权限或其他异常情况。使用密码套件来对用户密码强制执行某些规则,使其难以猜测,也是明智之举。例如,影子密码套件要求密码至少包含五个字母,并且包含大小写字母和数字。
当使一项服务可供网络访问时,请确保赋予其“最小权限”,这意味着您不允许它执行与其设计用途无关的操作。例如,您应该仅在程序真正需要时才将其设置为 setuid root 或其他特权帐户。此外,如果您只想将服务用于非常有限的应用程序,请毫不犹豫地根据您的特殊应用程序允许的范围对其进行尽可能严格的配置。例如,如果您想允许无盘主机从您的机器启动,您必须提供 TFTP(简单文件传输服务),以便它们可以从 /boot 目录下载基本配置文件。然而,当不受限制地使用时,TFTP 允许世界上任何地方的任何用户从您的系统下载任何世界可读的文件。如果这不是您想要的,为什么不将 TFTP 服务限制在 /boot 目录呢?
沿着同样的思路,您可能希望将某些服务限制为来自特定主机的用户,例如来自您的本地网络的用户。在 chapter- 中,我们介绍了 tcpd,它为各种网络应用程序执行此操作。
另一个重点是避免使用“危险”软件。当然,您使用的任何软件都可能是危险的,因为软件可能存在漏洞,聪明的人可能会利用这些漏洞来访问您的系统。这种情况会发生,而且没有完全的保护措施可以防止这种情况发生。这个问题同样影响自由软件和商业产品。 然而,需要特殊权限的程序本质上比其他程序更危险,因为任何漏洞都可能产生严重的后果。
如果您出于网络目的安装 setuid 程序,请务必加倍小心,不要遗漏文档中的任何内容,以免意外造成安全漏洞。
无论您多么小心,您永远无法排除您的预防措施可能失败的可能性。因此,您应该确保尽早检测到入侵者。检查系统日志文件是一个好的开始,但入侵者可能同样聪明,并且会删除他或她留下的任何明显的痕迹。然而,有一些工具(如 tripwire)允许您检查重要的系统文件,以查看其内容或权限是否已更改。tripwire 计算这些文件的各种强校验和,并将它们存储在数据库中。在随后的运行中,校验和将被重新计算并与存储的校验和进行比较,以检测任何修改。