10.5. 安全

10.5.1. 简介

一旦计算机连接到网络,各种滥用行为就成为可能,无论是基于 UNIX 的系统还是任何其他系统。诚然,关于这个主题已经有很多文章,详细讨论安全问题会让我们跑题太远。然而,即使是新手用户也可以做一些相当合乎逻辑的事情来获得非常安全的系统,因为大多数入侵都是由于无知或粗心的用户造成的。

您可能在问自己,这一切是否适用于您,当您在家中使用计算机或在办公室的桌面上在相当受保护的环境中工作时。然而,您应该问自己的问题更像是:

假设您不想这样,我们将快速列出您可以采取的步骤来保护您的机器。更多信息可以在 Linux Security HOWTO 中找到。

10.5.2. 服务

目标是尽可能少地运行服务。如果为外部世界开放的端口数量保持在最低限度,则更有利于保持概览。如果无法关闭本地网络的服务,请尝试至少禁用它们以进行外部连接。

一个经验法则是,如果您不认识某个特定的服务,您可能无论如何都不需要它。还要记住,某些服务实际上并非旨在通过 Internet 使用。不要依赖于应该运行的服务,使用 netstat 命令检查哪些服务正在监听哪些 TCP 端口

[elly@mars ~] netstat -l | grep tcp
tcp     0      0 *:32769                 *:*      LISTEN
tcp     0      0 *:32771                 *:*      LISTEN
tcp     0      0 *:printer               *:*      LISTEN
tcp     0      0 *:kerberos_master       *:*      LISTEN
tcp     0      0 *:sunrpc                *:*      LISTEN
tcp     0      0 *:6001                  *:*      LISTEN
tcp     0      0 *:785                   *:*      LISTEN
tcp     0      0 localhost.localdom:smtp *:*      LISTEN
tcp     0      0 *:ftp                   *:*      LISTEN
tcp     0      0 *:ssh                   *:*      LISTEN
tcp     0      0 ::1:x11-ssh-offset      *:*      LISTEN

应避免的事项

使用 chkconfig 命令、initscripts 或编辑 (x)inetd 配置文件来停止运行服务。

10.5.3. 定期更新

Linux 能够在不断变化的环境中快速适应的能力是其蓬勃发展的原因。但这也创造了一种可能性,即即使在您安装全新版本时,也可能已经发布了安全更新,因此您在安装后应该做的第一件事(这适用于您可以想到的几乎所有操作系统)是尽快获取更新。之后,更新您经常使用的所有软件包。

某些更新可能需要新的配置文件,旧文件可能会被替换。查看文档,并确保更新后一切运行正常。

大多数 Linux 发行版都提供邮件列表服务,用于安全更新公告以及将更新应用于系统的工具。一般的仅限 Linux 的安全问题会在 Linuxsecurity.com 等网站上报告。

更新是一个持续的过程,因此应该成为几乎每天的习惯。

10.5.4. 防火墙和访问策略

10.5.4.1. 什么是防火墙?

在前一节中,我们已经提到了 Linux 中的防火墙功能。虽然防火墙管理是您的网络管理员的任务之一,但您应该了解一些关于防火墙的知识。

防火墙是一个模糊的术语,可以指代任何在我们和外部世界(通常是 Internet)之间充当保护屏障的东西。防火墙可以是提供此功能的专用系统或特定应用程序。或者它可以是组件的组合,包括硬件和软件的各种组合。防火墙由 “规则” 构建,这些规则用于定义允许什么进入和/或退出给定的系统或网络。

禁用不必要的服务后,我们现在希望限制接受的服务,以便仅允许最少的必要连接。一个很好的例子是在家工作:只应允许您的办公室和您的家之间的特定连接,来自 Internet 上其他机器的连接应被阻止。

10.5.4.2. 数据包过滤器

第一道防线是数据包过滤器,它可以查看 IP 数据包内部并根据内容做出决策。最常见的是 Netfilter 软件包,它提供了 iptables 命令,这是适用于 Linux 的下一代数据包过滤器。

较新内核中最值得注意的增强功能之一是状态检测功能,它不仅可以告诉数据包内部的内容,还可以检测数据包是否属于或关联到新的或现有的连接。

Shoreline Firewall 或简称 Shorewall 是 Linux 中标准防火墙功能的前端。

更多信息可以在 Netfilter/iptables 项目页面 上找到。

10.5.4.3. TCP 包装器

TCP 包装提供的结果与数据包过滤器非常相似,但工作方式不同。包装器实际上接受连接尝试,然后检查配置文件并决定是接受还是拒绝连接请求。它在应用程序级别而不是网络级别控制连接。

TCP 包装器通常与 xinetd 一起使用,以提供基于主机名和 IP 地址的访问控制。此外,这些工具还包括易于配置的日志记录和利用率管理功能。

TCP 包装器的优点是连接客户端不知道正在使用包装器,并且它们与它们保护的应用程序分开运行。

基于主机的访问在以下文件中控制:hosts.allowhosts.deny文件。更多信息可以在 TCP 包装器文档文件中找到,路径为/usr/share/doc/tcp_wrappers[-<version>/]/usr/share/doc/tcp以及基于主机的访问控制文件的 man 页面中,其中包含示例。

10.5.4.4. 代理

代理可以执行各种职责,并非所有职责都与安全性有很大关系。但它们作为中介的事实使代理成为执行访问控制策略、限制通过防火墙的直接连接以及控制代理后面的网络在 Internet 上看起来如何的好地方。

通常与数据包过滤器结合使用,但有时也单独使用,代理提供了额外的控制级别。更多信息可以在 Firewall HOWTO 或 Squid 网站上找到。

10.5.4.5. 访问个别应用程序

某些服务器可能具有自己的访问控制功能。常见的例子包括 SambaX WindowBindApache 和 CUPS。对于您要提供的每项服务,请检查适用哪些配置文件。

10.5.4.6. 日志文件

如果说有什么的话,UNIX 将各种活动记录到各种文件中的方式证实了 “它正在做某事。” 当然,应该定期手动或自动检查日志文件。防火墙和其他访问控制手段往往会产生大量的日志文件,因此诀窍是尝试仅记录异常活动。

10.5.5. 入侵检测

入侵检测系统旨在捕获可能已绕过防火墙的内容。它们可以设计为捕获正在进行的活动入侵尝试,也可以检测事后成功的入侵。在后一种情况下,防止任何损害为时已晚,但至少我们对问题有了早期的认识。IDS 有两种基本类型:保护网络的 IDS 和保护单个主机的 IDS。

对于基于主机的 IDS,这是通过监视文件系统更改的实用程序完成的。以某种方式更改但本不应更改的系统文件,是表明出现问题的明显迹象。任何进入并获得 root 访问权限的人都可能会在某处更改系统。这通常是首先要做的,要么是为了让他可以通过后门再次进入,要么是为了对其他人发起攻击,在这种情况下,他必须更改或添加到系统文件。某些系统带有 tripwire 监控系统,该系统在 Tripwire Open Source Project 网站上有文档记录。

网络入侵检测由一个系统处理,该系统查看通过防火墙的所有流量(而不是通过端口扫描器,端口扫描器会通告可用的端口)。Snort 是此类程序的开源示例。Whitehats.com 提供了一个开放的入侵检测数据库 arachNIDS

10.5.6. 更多提示

您应该记住的一些一般事项

10.5.7. 我被黑客入侵了吗?

如何判断?这是一份可疑事件的清单

10.5.8. 从入侵中恢复

简而言之,保持冷静。然后按以下顺序采取以下措施