一旦计算机连接到网络,各种滥用行为就成为可能,无论是基于 UNIX 的系统还是任何其他系统。诚然,关于这个主题已经有很多文章,详细讨论安全问题会让我们跑题太远。然而,即使是新手用户也可以做一些相当合乎逻辑的事情来获得非常安全的系统,因为大多数入侵都是由于无知或粗心的用户造成的。
您可能在问自己,这一切是否适用于您,当您在家中使用计算机或在办公室的桌面上在相当受保护的环境中工作时。然而,您应该问自己的问题更像是:
您想掌控自己的系统吗?
您想(在不知不觉中)参与犯罪活动吗?
您希望您的设备被其他人使用吗?
您想冒失去 Internet 连接的风险吗?
您想每次系统被黑客入侵后都重建系统吗?
您想冒个人或其他数据丢失的风险吗?
假设您不想这样,我们将快速列出您可以采取的步骤来保护您的机器。更多信息可以在 Linux Security HOWTO 中找到。
目标是尽可能少地运行服务。如果为外部世界开放的端口数量保持在最低限度,则更有利于保持概览。如果无法关闭本地网络的服务,请尝试至少禁用它们以进行外部连接。
一个经验法则是,如果您不认识某个特定的服务,您可能无论如何都不需要它。还要记住,某些服务实际上并非旨在通过 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 |
应避免的事项
为了安全起见,应避免使用 exec、rlogin 和 rsh 以及 telnet。
服务器机器上的 X11。
如果没有物理连接打印机,则不需要 lp。
网络中没有 MS Windows 主机,不需要 Samba。
除非需要 FTP 服务器,否则不允许 FTP。
不允许通过 Internet 使用 NFS 和 NIS,在独立安装中禁用所有相关服务。
如果您实际上不是在邮件服务器上,则不要运行 MTA。
...
使用 chkconfig 命令、initscripts 或编辑 (x)inetd 配置文件来停止运行服务。
Linux 能够在不断变化的环境中快速适应的能力是其蓬勃发展的原因。但这也创造了一种可能性,即即使在您安装全新版本时,也可能已经发布了安全更新,因此您在安装后应该做的第一件事(这适用于您可以想到的几乎所有操作系统)是尽快获取更新。之后,更新您经常使用的所有软件包。
某些更新可能需要新的配置文件,旧文件可能会被替换。查看文档,并确保更新后一切运行正常。
大多数 Linux 发行版都提供邮件列表服务,用于安全更新公告以及将更新应用于系统的工具。一般的仅限 Linux 的安全问题会在 Linuxsecurity.com 等网站上报告。
更新是一个持续的过程,因此应该成为几乎每天的习惯。
在前一节中,我们已经提到了 Linux 中的防火墙功能。虽然防火墙管理是您的网络管理员的任务之一,但您应该了解一些关于防火墙的知识。
防火墙是一个模糊的术语,可以指代任何在我们和外部世界(通常是 Internet)之间充当保护屏障的东西。防火墙可以是提供此功能的专用系统或特定应用程序。或者它可以是组件的组合,包括硬件和软件的各种组合。防火墙由 “规则” 构建,这些规则用于定义允许什么进入和/或退出给定的系统或网络。
禁用不必要的服务后,我们现在希望限制接受的服务,以便仅允许最少的必要连接。一个很好的例子是在家工作:只应允许您的办公室和您的家之间的特定连接,来自 Internet 上其他机器的连接应被阻止。
第一道防线是数据包过滤器,它可以查看 IP 数据包内部并根据内容做出决策。最常见的是 Netfilter 软件包,它提供了 iptables 命令,这是适用于 Linux 的下一代数据包过滤器。
较新内核中最值得注意的增强功能之一是状态检测功能,它不仅可以告诉数据包内部的内容,还可以检测数据包是否属于或关联到新的或现有的连接。
Shoreline Firewall 或简称 Shorewall 是 Linux 中标准防火墙功能的前端。
更多信息可以在 Netfilter/iptables 项目页面 上找到。
TCP 包装提供的结果与数据包过滤器非常相似,但工作方式不同。包装器实际上接受连接尝试,然后检查配置文件并决定是接受还是拒绝连接请求。它在应用程序级别而不是网络级别控制连接。
TCP 包装器通常与 xinetd 一起使用,以提供基于主机名和 IP 地址的访问控制。此外,这些工具还包括易于配置的日志记录和利用率管理功能。
TCP 包装器的优点是连接客户端不知道正在使用包装器,并且它们与它们保护的应用程序分开运行。
基于主机的访问在以下文件中控制:hosts.allow和hosts.deny文件。更多信息可以在 TCP 包装器文档文件中找到,路径为/usr/share/doc/tcp_wrappers[-<version>/]或/usr/share/doc/tcp以及基于主机的访问控制文件的 man 页面中,其中包含示例。
代理可以执行各种职责,并非所有职责都与安全性有很大关系。但它们作为中介的事实使代理成为执行访问控制策略、限制通过防火墙的直接连接以及控制代理后面的网络在 Internet 上看起来如何的好地方。
通常与数据包过滤器结合使用,但有时也单独使用,代理提供了额外的控制级别。更多信息可以在 Firewall HOWTO 或 Squid 网站上找到。
入侵检测系统旨在捕获可能已绕过防火墙的内容。它们可以设计为捕获正在进行的活动入侵尝试,也可以检测事后成功的入侵。在后一种情况下,防止任何损害为时已晚,但至少我们对问题有了早期的认识。IDS 有两种基本类型:保护网络的 IDS 和保护单个主机的 IDS。
对于基于主机的 IDS,这是通过监视文件系统更改的实用程序完成的。以某种方式更改但本不应更改的系统文件,是表明出现问题的明显迹象。任何进入并获得 root 访问权限的人都可能会在某处更改系统。这通常是首先要做的,要么是为了让他可以通过后门再次进入,要么是为了对其他人发起攻击,在这种情况下,他必须更改或添加到系统文件。某些系统带有 tripwire 监控系统,该系统在 Tripwire Open Source Project 网站上有文档记录。
网络入侵检测由一个系统处理,该系统查看通过防火墙的所有流量(而不是通过端口扫描器,端口扫描器会通告可用的端口)。Snort 是此类程序的开源示例。Whitehats.com 提供了一个开放的入侵检测数据库 arachNIDS。
您应该记住的一些一般事项
不允许 root 登录。UNIX 开发人员在二十多年前提出了 su 以提高安全性。
直接 root 访问始终是危险的,并且容易受到人为错误的影响,无论是通过允许 root 登录还是通过使用 su - 命令。与其使用 su,不如使用 sudo 更好,它仅执行您需要额外权限的命令,然后在之后返回您自己的环境。
认真对待密码。使用影子密码。定期更改密码。
尽量始终使用 SSH 或 SSL。避免使用 telnet、FTP 和电子邮件客户端以及其他通过网络发送未加密密码的客户端程序。安全不仅关乎保护您的计算机,还关乎保护您的密码。
使用 quota 和/或 ulimit 限制资源。
root 的邮件应发送给或至少由真人阅读。
SANS 研究所 提供了更多技巧和窍门,按发行版排序,并提供邮件列表服务。
检查新软件的来源,从受信任的地方/站点获取。安装前验证新软件包。
当使用非永久性 Internet 连接时,一旦您不再需要它,就立即关闭它。
在非常规端口上运行私有服务,而不是可能的黑客预期的端口。
了解您的系统。过一段时间后,您几乎可以感觉到正在发生某些事情。