随着人们花费越来越多的时间联网,网络安全变得越来越重要。与物理或本地安全相比,破坏网络安全通常更容易,并且更为常见。
有很多优秀的工具可以协助进行网络安全防护,而且越来越多的工具随 Linux 发行版一起发布。
入侵者在您的网络上访问更多系统最常见的方法之一是在已受损的主机上使用数据包嗅探器。这种“嗅探器”只是在以太网端口上监听诸如passwd和login和su之类的流量,然后在之后记录流量。 这样,攻击者就可以获得他们甚至没有尝试入侵的系统的密码。 明文密码非常容易受到这种攻击。
示例:主机 A 已被入侵。攻击者安装了一个嗅探器。嗅探器捕获到管理员从主机 C 登录到主机 B。它获得了管理员登录 B 时的个人密码。然后,管理员执行了su来解决问题。他们现在拥有了主机 B 的 root 密码。稍后,管理员允许某人telnet从他的帐户连接到另一个站点 Host Z。现在攻击者拥有了 Host Z 上的密码/登录凭据。
在当今时代,攻击者甚至不需要入侵系统即可执行此操作:他们还可以将笔记本电脑或 PC 带入建筑物并接入您的网络。
使用ssh或其他加密密码方法可以阻止这种攻击。 诸如 POP 帐户的 APOP 之类的东西也可以防止这种攻击。(普通的 POP 登录很容易受到这种攻击,任何通过网络发送明文密码的东西也是如此。)
在将您的 Linux 系统连接到任何网络之前,首先要查看的是您需要提供的服务。 应该禁用您不需要提供的服务,这样您就可以少担心一件事,攻击者也可以少一个寻找漏洞的地方。
有很多方法可以在 Linux 下禁用服务。您可以查看您的/etc/inetd.conf文件,查看您的inetd正在提供的服务。 通过注释掉它们来禁用任何您不需要的服务(在行的开头添加##
),然后向您的 inetd 进程发送 SIGHUP 信号。您也可以删除(或注释掉)您/etc/services文件中的服务。 这将意味着本地客户端也将无法找到该服务(即,如果您删除ftp您也可以删除(或注释掉)您,并尝试从该机器 ftp 到远程站点,它将失败并显示“未知服务”消息)。 通常不值得费力从文件中的服务。 这将意味着本地客户端也将无法找到该服务(即,如果您删除/etc/services
中删除服务,因为它不提供额外的安全性。 如果本地人员想使用
文件中的服务。 这将意味着本地客户端也将无法找到该服务(即,如果您删除
telnetftpssh)
,即使您已将其注释掉,他们也会制作自己的客户端,该客户端使用通用的 FTP 端口,并且仍然可以正常工作。您可能想要保持启用的某些服务是email(或
mail,例如
pop-3或imap),以及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
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,例如是一个小程序,通常在您的
服务器之外运行。 它跟踪哪个用户正在运行哪个 TCP 服务,然后将此信息报告给请求者。
许多人误解了
的用处,因此禁用它或阻止所有异地请求。
identd
不是为了帮助远程站点。 无法知道从远程
identd
获得的数据是否正确。 在
identd
那么为什么要运行它呢? 因为它可以帮助您,并且是跟踪中的另一个数据点。 如果您的
identd
没有被破坏,那么您知道它正在告诉远程站点使用 TCP 服务的用户的用户名或 uid。 如果远程站点的管理员返回给您并告诉您用户某某试图入侵他们的站点,您可以轻松地对该用户采取行动。 如果您没有运行
,您将不得不查看大量日志,弄清楚当时谁在线,并且通常需要花费更多时间来追踪用户。
大多数发行版附带的identd比许多人想象的更可配置。 您可以为特定用户禁用它(他们可以创建一个identd.noident
文件),您可以记录所有
# /usr/lib/sendmail -q15m |
请求(我们推荐这样做),您甚至可以让 identd 返回 uid 而不是用户名,甚至返回 NO-USER。8.5. 配置和保护 Postfix MTA. 8.5. 配置和保护 Postfix MTAPostfix 邮件服务器由 Postfix 和其他几种主要的 Internet 安全产品的作者 Wietse Venema 编写,旨在“尝试提供广泛使用的 Sendmail 程序的替代方案。 Postfix 试图做到快速、易于管理,并且希望是安全的,同时又与 sendmail 兼容,足以不让您的用户感到不安。”
有关 postfix 的更多信息,请访问 Postfix 首页 和 配置和保护 Postfix。
有很多不同的软件包可以对机器或网络进行基于端口和服务的扫描。 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 已经很长时间没有更新了,下面的其他一些工具可能会做得更好。
ISS(Internet Security Scanner,互联网安全扫描器)是另一个基于端口的扫描器。 它比 Satan 快,因此可能更适合大型网络。 但是,SATAN 倾向于提供更多信息。
Abacus 是一套工具,旨在提供基于主机的安全性和入侵检测。 在 Web 上查看其主页以获取更多信息。 http://www.psionic.com/abacus/
SAINT 是 SATAN 的更新版本。 它是基于 Web 的,并且比 SATAN 具有更多最新的测试。 您可以在以下位置找到有关它的更多信息:http://www.wwdsi.com/~saint
Nessus 是一个免费的安全扫描器。 它具有 GTK 图形界面,易于使用。 它还设计了一个非常好的插件设置,用于新的端口扫描测试。 有关更多信息,请查看:http://www.nessus.org8.6.1. 检测端口扫描有一些工具旨在提醒您 SATAN 和 ISS 以及其他扫描软件的探测。 但是,如果您大量使用 tcp_wrappers,并定期查看您的日志文件,您应该能够注意到此类探测。 即使在最低设置下,SATAN 仍然会在标准的 Red Hat 系统上的日志中留下痕迹。
还有一些“隐形”端口扫描器。 带有 TCP ACK 位集的数据包(就像已建立的连接一样)很可能通过数据包过滤防火墙。 来自_没有已建立会话_的端口的返回 RST 数据包可以被视为该端口上存在活动的证明。 我认为 TCP wrappers 不会检测到这一点。
您还可以查看 SNORT,它是一个免费的 IDS(入侵检测系统),可以检测其他网络入侵。 http://www.snort.org
如果您正在使用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 列表及存档以获取更多最新信息。
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 洪水最容易在路由器级别或通过使用防火墙来阻止。
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
显示它们
许多站点使用 NFS 为用户提供主目录,这样无论他们登录到集群中的哪台机器,他们都将拥有所有主目录文件。
导出文件系统时允许少量安全性。 您可以使您的
将远程 root 用户 (uid=0) 映射到
nobody
用户,拒绝他们对导出的文件的完全访问权限。 但是,由于个别用户可以访问他们自己的文件(或至少是相同的 uid)文件,因此远程 root 用户可以登录或
su
到他们的帐户,并完全访问他们的文件。 这对于有权挂载您的远程文件系统的攻击者来说,只是一个小小的障碍。
如果您必须使用 NFS,请确保仅导出到您真正需要的那些机器。 永远不要导出您的整个根目录; 仅导出您需要导出的目录。
有关 NFS 的更多信息,请参阅 NFS HOWTO,可在 http://metalab.unc.edu/mdw/HOWTO/NFS-HOWTO.html 获得
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,请确保您意识到这些危险。
防火墙是一种控制允许进出本地网络的信息的方法。 通常,防火墙主机连接到 Internet 和您的本地 LAN,并且从您的 LAN 到 Internet 的唯一访问是通过防火墙。 这样,防火墙可以控制从 Internet 和您的 LAN 来回传递的内容。
iptables |
ipfwadm
用于 2.0 内核,以及
ipchains
用于 2.2 内核,允许您动态更改您允许的网络流量类型。 您还可以记录特定类型的网络流量。
防火墙是保护您的网络的一种非常有用且重要的技术。 但是,永远不要认为因为您有防火墙,您就不需要保护它后面的机器。 这是一个致命的错误。 查看非常好的
Firewall-HOWTO
在您最新的 metalab 存档中,以获取有关防火墙和 Linux 的更多信息。 http://metalab.unc.edu/mdw/HOWTO/Firewall-HOWTO.html
更多信息也可以在 IP-Masquerade mini-howto 中找到:http://metalab.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html
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 找到它。 同样值得关注的是
The Freefire Project -- 免费提供的防火墙工具列表,可在 http://sites.inka.de/sites/lina/freefire-l/index_en.html 获得
SunWorld Firewall Design -- 由 O'Reilly 书籍的作者撰写,这提供了对不同防火墙类型的粗略介绍。 它可在 http://www.sunworld.com/swol-01-1996/swol-01-firewall.html 获得
Mason - Linux 的自动化防火墙构建器。 这是一个防火墙脚本,它会在您执行网络上需要执行的操作时学习! 更多信息请访问:http://www.pobox.com/~wstearns/mason/
Linux IP 防火墙链是 2.2 内核的 2.0 Linux 防火墙代码的更新。 它比以前的实现具有更多功能,包括
更灵活的数据包操作