8. 网络安全

随着人们花费越来越多的时间联网,网络安全变得越来越重要。与物理或本地安全相比,破坏网络安全通常更容易,并且更为常见。

有很多优秀的工具可以协助进行网络安全防护,而且越来越多的工具随 Linux 发行版一起发布。

8.1. 数据包嗅探器

入侵者在您的网络上访问更多系统最常见的方法之一是在已受损的主机上使用数据包嗅探器。这种“嗅探器”只是在以太网端口上监听诸如passwdloginsu之类的流量,然后在之后记录流量。 这样,攻击者就可以获得他们甚至没有尝试入侵的系统的密码。 明文密码非常容易受到这种攻击。

示例:主机 A 已被入侵。攻击者安装了一个嗅探器。嗅探器捕获到管理员从主机 C 登录到主机 B。它获得了管理员登录 B 时的个人密码。然后,管理员执行了su来解决问题。他们现在拥有了主机 B 的 root 密码。稍后,管理员允许某人telnet从他的帐户连接到另一个站点 Host Z。现在攻击者拥有了 Host Z 上的密码/登录凭据。

在当今时代,攻击者甚至不需要入侵系统即可执行此操作:他们还可以将笔记本电脑或 PC 带入建筑物并接入您的网络。

使用ssh或其他加密密码方法可以阻止这种攻击。 诸如 POP 帐户的 APOP 之类的东西也可以防止这种攻击。(普通的 POP 登录很容易受到这种攻击,任何通过网络发送明文密码的东西也是如此。)

8.2. 系统服务和 tcp_wrappers

在将您的 Linux 系统连接到任何网络之前,首先要查看的是您需要提供的服务。 应该禁用您不需要提供的服务,这样您就可以少担心一件事,攻击者也可以少一个寻找漏洞的地方。

有很多方法可以在 Linux 下禁用服务。您可以查看您的/etc/inetd.conf文件,查看您的inetd正在提供的服务。 通过注释掉它们来禁用任何您不需要的服务(在行的开头添加##

),然后向您的 inetd 进程发送 SIGHUP 信号。您也可以删除(或注释掉)您/etc/services文件中的服务。 这将意味着本地客户端也将无法找到该服务(即,如果您删除ftp您也可以删除(或注释掉)您,并尝试从该机器 ftp 到远程站点,它将失败并显示“未知服务”消息)。 通常不值得费力从文件中的服务。 这将意味着本地客户端也将无法找到该服务(即,如果您删除/etc/services

中删除服务,因为它不提供额外的安全性。 如果本地人员想使用

pop-3imap),以及identd

如果您知道您不会使用某些特定的软件包,您也可以完全删除它。rpm -e packagename在 Red Hat 发行版下将删除整个软件包。 在 Debian 下dpkg --remove执行相同的操作。此外,您真的应该禁用 rsh/rlogin/rcp 实用程序,包括 login(由rlogin/etc/inetd.conf使用),shell(由

rcp使用)和 exec(由rsh使用)从/etc/inetd.conf中启动。 这些协议非常不安全,并且过去曾是漏洞利用的原因。rsh您应该检查/etc/rc.d/rc[0-9].d(在 Red Hat 上;/etc/rc[0-9].d在 Debian 上),并查看这些目录中启动的任何服务器是否不需要。 这些目录中的文件实际上是指向/etc/rc.d/init.d/etc/init.d目录中文件的符号链接(在 Debian 上)。 重命名

       root#  cd /etc/rc6.d
       root#  mv S45dhcpd s45dhcpd

init.d目录中的文件将禁用所有指向该文件的符号链接。 如果您只想为特定的运行级别禁用服务,请重命名相应的符号链接,方法是将大写S替换为小写s

,就像这样从 S99service 重命名为 s99service。如果您有 BSD 风格的inetdrc从 S99service 重命名为 s99service。文件,您将需要检查从 S99service 重命名为 s99service。/etc/rc*以查找您不需要的程序。大多数 Linux 发行版都带有 tcp_wrappers “包装”您的所有 TCP 服务。 tcp_wrapper (

tcpd从 S99service 重命名为 s99service。) 从以查找您不需要的程序。:

inetd

而不是真正的服务器调用。

tcpd

然后检查请求服务的主机,并执行真正的服务器,或拒绝来自该主机的访问。

tcp_wrappersinetd允许您限制对 TCP 服务的访问。 您应该创建一个/etc/hosts.allow并在其中添加只需要访问您的机器服务的那些主机。

如果您是家庭拨号用户,我们建议您拒绝所有访问。

tcp_wrappers

还会记录访问服务的失败尝试,因此这可以在您受到攻击时提醒您。 如果您添加新服务,则应确保将它们配置为在它们是基于 TCP 的情况下使用 tcp_wrappers。 例如,普通的拨号用户可以阻止外部人员连接到他的机器,但仍然能够检索邮件并建立到 Internet 的网络连接。 为此,您可以将以下内容添加到您的

mail,例如/etc/hosts.allowinetdALL: 127.

当然,/etc/hosts.deny 将包含mail,例如ALL: ALLmail,例如这将阻止外部连接到您的机器,但仍然允许您从内部连接到 Internet 上的服务器。mail,例如请记住,tcp_wrappers 仅保护从mail,例如inetd

执行的服务,以及少数其他服务。 您的机器上很可能还有其他服务在运行。 您可以使用mail,例如netstat -tamail,例如查找您的机器正在提供的所有服务的列表。

8.3. 验证您的 DNS 信息mail,例如维护网络上所有主机的最新 DNS 信息可以帮助提高安全性。 如果未经授权的主机连接到您的网络,您可以通过其缺少 DNS 条目来识别它。 许多服务可以配置为不接受来自没有有效 DNS 条目的主机的连接。8.4. identdidentdmail,例如是一个小程序,通常在您的

inetd

服务器之外运行。 它跟踪哪个用户正在运行哪个 TCP 服务,然后将此信息报告给请求者。

许多人误解了

identd

的用处,因此禁用它或阻止所有异地请求。

identd

不是为了帮助远程站点。 无法知道从远程

identd

获得的数据是否正确。 在

identd

请求中没有身份验证。

那么为什么要运行它呢? 因为它可以帮助,并且是跟踪中的另一个数据点。 如果您的

identd

没有被破坏,那么您知道它正在告诉远程站点使用 TCP 服务的用户的用户名或 uid。 如果远程站点的管理员返回给您并告诉您用户某某试图入侵他们的站点,您可以轻松地对该用户采取行动。 如果您没有运行

identd

,您将不得不查看大量日志,弄清楚当时谁在线,并且通常需要花费更多时间来追踪用户。

大多数发行版附带的identd比许多人想象的更可配置。 您可以为特定用户禁用它(他们可以创建一个identd.noident

文件),您可以记录所有
		# /usr/lib/sendmail -q15m
identd

请求(我们推荐这样做),您甚至可以让 identd 返回 uid 而不是用户名,甚至返回 NO-USER。8.5. 配置和保护 Postfix MTA. 8.5. 配置和保护 Postfix MTAPostfix 邮件服务器由 Postfix 和其他几种主要的 Internet 安全产品的作者 Wietse Venema 编写,旨在“尝试提供广泛使用的 Sendmail 程序的替代方案。 Postfix 试图做到快速、易于管理,并且希望是安全的,同时又与 sendmail 兼容,足以不让您的用户感到不安。”

有关 postfix 的更多信息,请访问 Postfix 首页配置和保护 Postfix

8.6. SATAN、ISS 和其他网络扫描器

有很多不同的软件包可以对机器或网络进行基于端口和服务的扫描。 SATAN、ISS、SAINT 和 Nessus 是其中一些更知名的软件包。 此软件连接到目标机器(或网络上的所有目标机器)上的所有端口,并尝试确定那里正在运行的服务。 根据此信息,您可以判断机器是否容易受到该服务器上特定漏洞的攻击。

SATAN(Security Administrator's Tool for Analyzing Networks,网络安全管理员分析工具)是一个带有 Web 界面的端口扫描器。 它可以配置为对机器或机器网络执行轻度、中度或强度检查。 最好获取 SATAN 并扫描您的机器或网络,并修复它发现的问题。 确保您从 metalab 或信誉良好的 FTP 或网站获取 SATAN 的副本。 有一个木马版本的 SATAN 在网络上分发。 http://www.trouble.org/~zen/satan/satan.html。 请注意,SATAN 已经很长时间没有更新了,下面的其他一些工具可能会做得更好。

8.7. sendmail、qmail 和 MTA

您可以提供的最重要的服务之一是邮件服务器。 不幸的是,它也是最容易受到攻击的服务之一,这仅仅是因为它必须执行的任务数量以及它通常需要的权限。

如果您正在使用sendmail,那么及时更新到最新版本非常重要。sendmail,那么及时更新到最新版本非常重要。有很长的安全漏洞历史。 始终确保您运行的是来自 http://www.sendmail.org 的最新版本。请记住,sendmail 不必运行才能发送邮件。 如果您是家庭用户,您可以完全禁用 sendmail,只需使用您的邮件客户端发送邮件即可。 您也可以选择从 sendmail 启动文件中删除“-bd”标志,从而禁用传入的邮件请求。 换句话说,您可以像下面这样使用启动脚本执行 sendmail/usr/sbin/sendmail -q15m这将使 sendmail 每隔 15 分钟刷新邮件队列,以处理首次尝试未成功传递的任何消息。.

许多管理员选择不使用 sendmail,而是选择其他邮件传输代理之一。 您可以考虑切换到

qmailsendmailqmail在设计之初就考虑了安全性。 它快速、稳定且安全。 Qmail 可以在 http://www.qmail.org 找到与 qmail 直接竞争的是“postfix”,由 tcp_wrappers 和其他安全工具的作者 Wietse Venema 编写。 前身称为 vmailer,由 IBM 赞助,这也是一个从头开始编写的邮件传输代理,考虑了安全性。 您可以在 http://www.postfix.org 找到有关 postfix 的更多信息su8.8. 拒绝服务攻击

“拒绝服务”(DoS)攻击是指攻击者试图使某些资源过于繁忙而无法响应合法请求,或拒绝合法用户访问您的机器。

近年来,拒绝服务攻击大大增加。 下面列出了一些较流行和较新的攻击。 请注意,新的攻击随时都会出现,因此这只是一些示例。 阅读 Linux 安全列表和 bugtraq 列表及存档以获取更多最新信息。

SYN 洪水 - SYN 洪水是一种网络拒绝服务攻击。 它利用了 TCP 连接创建方式中的“漏洞”。 较新的 Linux 内核(2.0.30 及更高版本)有几个可配置选项,可以防止 SYN 洪水攻击拒绝人们访问您的机器或服务。 有关正确的内核保护选项,请参阅 第 7 节

Pentium “F00F” 错误 - 最近发现,发送到真正的 Intel Pentium 处理器的 一系列汇编代码将导致机器重启。 这会影响每台配备 Pentium 处理器的机器(非克隆,非 Pentium Pro 或 PII),无论它运行什么操作系统。 Linux 内核 2.0.32 及更高版本包含此错误的解决方法,可防止其锁定您的机器。 内核 2.0.33 具有内核修复的改进版本,建议使用 2.0.33 而不是 2.0.32。 如果您在 Pentium 上运行,您应该立即升级!Ping 洪水 - Ping 洪水是一种简单的暴力拒绝服务攻击。 攻击者向您的机器发送“洪水”般的 ICMP 数据包。 如果他们从带宽比您更好的主机执行此操作,您的机器将无法在网络上发送任何内容。 这种攻击的一种变体称为“smurfing”,它将 ICMP 数据包发送到具有您的机器返回 IP 的主机,从而使他们能够不太容易被检测到地对您进行洪水攻击。 您可以在 http://www.quadrunner.com/~chuegen/smurf.txt 找到有关“smurf”攻击的更多信息如果您曾经遭受 ping 洪水攻击,请使用诸如

tcpdump

之类的工具来确定数据包的来源(或看起来来自哪里),然后将此信息联系您的提供商。 Ping 洪水最容易在路由器级别或通过使用防火墙来阻止。

Ping of Death - Ping of Death 攻击发送 ICMP ECHO REQUEST 数据包,这些数据包太大而无法放入旨在存储它们的内核数据结构中。 因为向许多系统发送单个大的(65,510 字节)“ping”数据包会导致它们挂起甚至崩溃,所以这个问题很快就被称为“Ping of Death”。 这个问题早已得到修复,不再需要担心。

Teardrop / New Tear - 最新的漏洞利用之一涉及 Linux 和 Windows 平台上的 IP 分片代码中存在的错误。 它已在内核版本 2.0.33 中修复,并且不需要选择任何内核编译时选项即可利用该修复程序。 Linux 显然不易受到“newtear”漏洞利用的影响。

您可以在 http://www.rootshell.com 使用他们的搜索引擎找到大多数漏洞利用的代码,以及对它们工作原理的更深入的描述。8.9. NFS(网络文件系统)安全。NFS 是一种非常广泛使用的文件共享协议。 它允许运行nfsd

mountd的服务器使用内置于其内核的 NFS 文件系统支持(或一些其他客户端支持,如果它们不是 Linux 机器)将整个文件系统“导出”到其他机器。mountd

跟踪

/etc/mtab8.9. NFS(网络文件系统)安全。中挂载的文件系统,并可以使用

showmount

nfsd

将远程 root 用户 (uid=0) 映射到

8.10. NIS(网络信息服务)(以前称为 YP)。8.9. NFS(网络文件系统)安全。网络信息服务(以前称为 YP)是一种将信息分发到一组机器的方法。 NIS 主服务器保存信息表,并将它们转换为 NIS 映射文件。 然后通过网络提供这些映射,允许 NIS 客户端机器获取登录名、密码、主目录和 shell 信息(标准8.9. NFS(网络文件系统)安全。/etc/passwdnfsd文件中的所有信息)。 这允许用户更改一次密码,并在 NIS 域中的所有机器上生效。

NIS 根本不安全。 它从来就不是为了安全而设计的。 它的目的是方便和有用。 任何可以猜出您的 NIS 域名的人(在网络上的任何地方)都可以获得您的 passwd 文件的副本,并对您的用户的密码使用“crack”和“John the Ripper”。 此外,有可能欺骗 NIS 并进行各种恶意技巧。 如果您必须使用 NIS,请确保您意识到这些危险。

有一个更安全的 NIS 替代品,称为 NIS+。 查看 NIS HOWTO 以获取更多信息:http://metalab.unc.edu/mdw/HOWTO/NIS-HOWTO.html

8.11. 防火墙

防火墙是一种控制允许进出本地网络的信息的方法。 通常,防火墙主机连接到 Internet 和您的本地 LAN,并且从您的 LAN 到 Internet 的唯一访问是通过防火墙。 这样,防火墙可以控制从 Internet 和您的 LAN 来回传递的内容。

iptables
有很多类型的防火墙和设置它们的方法。 Linux 机器可以充当非常好的防火墙。 防火墙代码可以直接构建到 2.0 及更高版本的内核中。 用户空间工具

ipfwadm

用于 2.0 内核,以及

ipchains

用于 2.2 内核,允许您动态更改您允许的网络流量类型。 您还可以记录特定类型的网络流量。

有关

ipfwadm

的更多信息(允许您更改防火墙设置的工具),可以在其主页上找到:http://www.xos.nl/linux/ipfwadm/

如果您没有防火墙经验,并且计划设置一个防火墙,而不仅仅是简单的安全策略,《O'Reilly and Associates》的《Firewalls》一书或其他在线防火墙文档是必读的。 查看 http://www.ora.com 以获取更多信息。 国家标准与技术研究院整理了一份关于防火墙的优秀文档。 虽然日期是 1995 年,但它仍然非常好。 您可以在 http://csrc.nist.gov/nistpubs/800-10/main.html 找到它。 同样值得关注的是

更灵活的数据包操作