偏执的企鹅 - SUSE 10.0 中的安全特性
多年来,我们已经看到更多更好的安全特性被纳入我们最喜爱的 Linux 发行版中。特定于发行版的安全意识以多种方式体现出来,包括
安全增强型应用程序的可用性。
安装/设置脚本中的“加固”功能。
补丁的处理方式。
网络应用程序的默认设置。
本月,我将开始撰写一系列三篇关于 SUSE Linux、Debian GNU/Linux 和 Red Hat Enterprise Linux 中特定于发行版的安全性的文章。这些是我最有经验的三个发行版,它们也可以说是最流行的三个发行版。(但与任何事情一样,如果您想贡献一篇关于您自己最喜欢的发行版的文章,请尽管去做!请参阅我们的作者指南,网址为 www.linuxjournal.com/xstatic/author/authguide。)
我将从 SUSE 10.0 开始。SUSE 是一款通用、商业化生产的 Linux 发行版,专为 Intel 32 位和 64 位平台开发。SUSE 最初总部位于德国,并且仍然主要在那里开发,现在归 Novell 所有。SUSE 有许多不同的产品,包括 SUSE Linux,这是一款可从众多零售店购买的“个人”版本;SUSE Linux Enterprise Server,这是一款直接从 Novell 获得的“企业级”版本;以及 OpenSUSE,它本质上与 SUSE Linux 相同,但没有安装介质(只能通过互联网安装)、印刷手册或安装支持。
本文的基础是 SUSE Linux 10.0,即商业“个人使用”版本。我在这里所说的一切都应同样适用于 OpenLinux 10.0,并且主要与 SUSE 的企业版本相关。据推测,企业版本包含额外的安全相关软件包和功能。
系统安全始于安装。这是您第一次有机会就系统将扮演的角色、系统将运行哪些软件以及系统将如何配置做出关键决策。因此,从安装过程开始讨论 SUSE 安全性是有用的。
所有版本的 SUSE 都使用 YaST(Yet Another Setup Tool,又一个设置工具)进行初始系统安装和持续系统管理。多年来,YaST 已经从一个简单的 RPM 前端发展成为一个模块化、全面的管理工具,不仅可以用于配置低级系统软件,还可以用于配置复杂的服务器应用程序,如 Apache 和 Postfix。
我们稍后会详细讨论 YaST。然而,您在初始操作系统安装期间面临的直接问题是决定要安装哪些软件包。如果您注重安全性,这是一个幸福的问题。SUSE Linux 10.0 提供了各种各样的安全应用程序供您选择。
在我看来,这些应用程序分为两类:系统安全应用程序和安全扫描应用程序。前者包括具有强大安全特性的通用应用程序——Postfix 立即浮现在脑海——以及唯一目的是为其他应用程序或底层操作系统提供安全控制的应用程序,其中 tcpwrappers 是一个经典的例子。表 1 列出了 SUSE Linux 10.0 中增强系统安全性的软件包。
表 1. SUSE Linux 10.0 中一些安全增强型软件包
软件包名称 | 描述 |
---|---|
aide, fam | 文件完整性检查器,都类似于 Tripwire。 |
bind-chrootenv | 自动创建一个 chroot 环境,以便更安全地运行 BIND(DNS 守护程序)。 |
clamav, antivir | 防病毒软件包——clamav 是完全免费的,但 antivir 是商业的(个人使用免费)。 |
cracklib | 库和实用程序,用于防止用户选择容易猜测的密码。 |
gpg, gpg2, gpa | GNU Privacy Guard (gpg),一种通用且无处不在的电子邮件和文件加密实用程序。 |
ipsectools, openswan | 用于构建基于 IPsec 的虚拟专用网络的工具。 |
openldap, freeradius | 开源身份验证守护程序。 |
proxy-suite | 由 SUSE 开发的 FTP 安全代理。 |
seccheck | SUSE 定制的 cron 脚本,用于对日志、系统状态等执行各种安全检查,并将电子邮件报告发送给您。 |
subdomain-utils, subdomain-profiles, mod-change-hat 等 | AppArmor,一种强制访问控制 (MAC) 系统,用于限制特定二进制文件的行为。SUSE 使用它来代替 SELinux,两者非常相似。 |
squid, SquidGuard | Squid 是一款流行的 HTTP/HTTPS 代理。SquidGuard 添加了访问控制和其他安全功能。 |
SUSEfirewall | SUSE 为 Linux 的 netfilter/iptables 提供的便捷前端。 |
syslog-ng | 高级系统日志记录器,比 syslogd 更强大。syslog-ng 是 SUSE 的默认日志记录器。 |
tinyca2 | OpenSSL 的前端,用于管理证书颁发机构。 |
yast2-firewall | 防火墙功能。 |
vsftpd | 非常安全的 FTP 守护程序。 |
xen, FAUmachine, uml-utilities, bochs | Xen、FAUmachine、User Mode Linux 和 BOCHS 虚拟机环境。 |
实际上,表 1 中冗长的软件包列表仅代表了我个人和 SUSE 特定选择的特别喜爱的软件包。SUSE 包含更多更多的系统安全工具,包括 tcpd (tcpwrappers)、openssl、chkrootkit、sudo 和 wipe。您可以在 www.novell.com/products/linuxpackages/professional/index_all.html 查看 SUSE Linux 10.0 中包含的软件包的完整列表。
除了保护您安装 SUSE 的系统之外,您可能还对使用 SUSE 系统来验证其他系统或整个网络的安全性感兴趣。SUSE 是一个不错的选择。表 2 显示了 SUSE Linux 10.0 中可用于安全扫描的一些软件包。请注意,您永远不应在任何连接到互联网的服务器上安装这些软件包(也许 Snort 除外)。在那种情况下,每个软件包对攻击者的用处远大于对您的用处。扫描软件应从通常远离危险的系统执行。
表 2. SUSE Linux 10.0 中的安全扫描器
软件包名称 | 描述 |
---|---|
ethereal, tcpdump | 优秀的包嗅探器。 |
fping | Flood ping(多目标 ping)。 |
john | John the Ripper,密码破解工具(合法用于识别弱密码)。 |
kismet | 无线局域网嗅探器。 |
nessus-core, nessus-libraries | Nessus 通用安全扫描器。 |
nmap | 无可争议的端口扫描器之王。 |
snort | 出色的包嗅探器、包记录器和入侵检测系统。 |
如果您是 SUSE 的新手,您应该意识到,默认情况下,YaST 使用选择过滤器(视图)来选择软件包,其中仅向您提供所有可用软件包的一小部分子集。如果您在此视图中没有看到您需要的内容,例如 nessus-core,请使用软件包组过滤器以查看更完整的类别集。如果您想查看按字母顺序排列的所有软件包的单个列表,只需将过滤器设置为软件包组,然后单击组 zzz 所有(图 1)。
您还可以将过滤器设置为搜索,以按名称或关键字搜索软件包。
在您选择并安装所有软件包后,YaST 允许您设置 root 密码并创建第一个(非 root)用户帐户。默认情况下,SUSE 使用 Blowfish 进行密码加密,YaST 会检查您键入的密码的复杂性。(过于简单的密码很容易被攻击者猜测或暴力破解。)
您还有机会启用本地防火墙脚本(默认启用)以及 SSH 和 VNC 远程 shell 守护程序(默认禁用)。请注意,在后两者中,SSH 是管理堡垒主机(加固的互联网服务器)的最佳选择——除其他原因外,除非您有非常具体、非常充分的理由,否则您不应该在堡垒主机上使用 X Window 系统。应该注意的是,YaST 在文本 (ncurses) 模式下运行良好,并且具有与 X 版本完全相同的模块和选项。此外,tightvnc,SUSE 附带的 VNC 远程桌面工具的版本,不加密会话数据,只加密身份验证数据。
另请注意,在安装时,您没有机会自定义本地防火墙设置。最初,使用一个默认脚本,该脚本提供一个简单的“允许所有出站事务,不允许任何非本地发起的入站事务”策略。换句话说,默认的 SUSEfirewall 脚本非常适合大多数桌面系统,但对于服务器使用来说是不够的。您稍后可以通过运行 YaST 的防火墙模块来更改此设置。
然后,YaST 允许您从以下方法中选择一种来验证非 root 用户身份
本地 /etc/passwd 文件(默认)。
LDAP。
NIS。
Samba(Windows NT 域)。
SUSE Linux 10.0 中还通过 Kerberos 支持 Active Directory 身份验证。
选择身份验证方法后,您可以创建您的第一个非 root 用户帐户。务必禁用自动登录,除非您的系统对安全性的要求非常低——启用此功能会导致机器在启动时自动登录您的非 root 用户。(我认为,唯一适合这种情况的情况是信息亭类型的系统!)
就这样——SUSE 安装现已完成!然而,作为一名有安全意识的系统管理员,您的工作还没有结束。
第一次启动您新安装的 SUSE Linux 系统后,您应立即以您的非特权用户身份登录并调用 YaST。如果您从 KDE 或 GNOME 中执行此操作,系统会自动提示您输入 root 密码,但在文本控制台会话中,您需要使用su -c来调用 /sbin/yast。
正如我之前提到的,YaST 内置了许多安全功能。表 3 列出了与系统安全特别相关的 YaST 模块。
表 3. 与安全相关的 YaST 模块
YaST 部分 | 模块名称 | 描述 |
---|---|---|
软件 | 在线更新 | 设置手动和自动软件更新。 |
软件管理 | 用于安装和删除软件包。 | |
虚拟机安装 (XEN) | 为 Xen 3 虚拟机环境创建虚拟机。 | |
系统 | /etc/sysconfig 编辑器 | 编辑守护程序启动参数。 |
系统服务(运行级别) | 管理启动脚本。 | |
Powertweak | 设置高级内核参数,例如 TCP timewait 套接字。 | |
网络服务 | DNS 服务器 | 配置 BIND。 |
HTTP 服务器 | 配置 Apache。 | |
LDAP 客户端 | 设置 LDAP 身份验证和查找。 | |
邮件传输代理 | 配置 Postfix 或 Sendmail。 | |
Kerberos 客户端 | 设置 Kerberos 身份验证,包括 Active Directory。 | |
远程管理 | 配置 TightVNC。 | |
Novell AppArmor | 各种 | 用于管理特定二进制文件上的 AppArmor 强制访问控制。 |
安全和用户 | 防火墙 | 用于管理 netfilter/iptables 设置。 |
本地安全 | 确定密码复杂度和长度、密码老化、文件权限方案以及各种其他系统安全参数。 | |
组管理 | 用于创建、编辑和删除组帐户。 | |
用户管理 | 用于创建、编辑和删除用户帐户(实际上与组管理是同一个模块,它是双重用途的)。 |
在这些 YaST 模块中,在线更新是最重要的模块之一。您应立即使用它来配置自动补丁下载,并且除非您的系统处于变更控制流程下,否则还应配置自动补丁安装。YaST 在线更新是主要 Linux 发行版中首批提供的自动补丁实用程序之一,并且仍然是最好的实用程序之一。使用它来利用 SUSE 在提供及时、经过良好测试的安全补丁方面的出色记录。
防火墙模块(图 2)也非常有用,特别是如果您不习惯创建和管理自己的防火墙脚本(我承认像我这样发现这很迷人且有趣的人很少见)。同样,组/用户管理消除了您手动编辑 /etc/group 或 /etc/passwd 的需要。
虚拟机安装模块和 Novell AppArmor 部分也特别值得注意。事实上,非常值得注意,以至于我应该花一些时间更深入地谈论 SUSE 的虚拟机和强制访问控制系统。
您可能还记得我的文章“Linux 安全的未来”[LJ,2005 年 8 月],我在其中吹捧虚拟机环境和虚拟机监控器(又名安全监视器)是系统安全的一个重要新方向。如果您不记得这一点,那么要点是,这是因为 MAC 方案(如 SELinux)在许多人看来过于复杂。相反,一种更简单的方法是在其自己的虚拟机上运行每个主要应用程序或服务。这样,例如,如果运行 Sendmail 的虚拟机受到威胁,则在同一物理硬件上运行 Apache2 的虚拟机将不会处于直接或直接的危险之中。
因此,虚拟机提供了一种强大且易于理解的方式来隔离彼此复杂的应用程序。而且,SUSE Linux 10.0 包含不少于三种不同的虚拟机技术。
Xen 3 环境起源于剑桥大学,由 SUSE 以“技术预览”形式提供。据我所知,这仅仅意味着由于 Xen 3 是一种不成熟且可能不稳定的应用程序,SUSE 只是试图降低人们对其可用性的期望——SUSE Linux 10.0 中的 Xen 3 版本不是特殊的预览版或评估版或任何类似的东西。Xen 3 支持 Linux、FreeBSD、NetBSD 和 Plan9 “guest”(虚拟)系统。
或者,FAUmachine 虚拟化环境包括 RPM 软件包,这些软件包支持 SUSE 9、Debian 3.0、OpenBSD 3.5/3.6 和 Red Hat 9 guest 系统。FAUmachine 优于 Xen 3 的一个优点是,在 FAUmachine 中,guest 系统的内核在主机系统上以非 root(非特权用户)权限运行。
User Mode Linux 是 SUSE Linux 10.0 中通过 uml-utilities 软件包提供的另一种虚拟化环境。与 FAUmachine 一样,其 guest 内核在没有 root 权限的情况下运行。
然而,并非所有人都放弃了基于 MAC 的系统安全性,SUSE 通过收购和重新打包 Immunix 的 AppArmor(又名 Subdomain)出色地涵盖了这一领域。AppArmor 类似于 SELinux,因为它允许您限制特定进程的行为,其效果类似于但在 chroot jail 中运行它们更有效。
(请注意,虽然 SUSE 提供了 libselinux 软件包并在其默认内核中包含 SELinux 功能,但 SELinux 在 SUSE Linux 中未获得官方支持。您需要 www.cip.ifi.lmu.de/~bleher/selinux 上的软件包才能在 SUSE Linux 中运行 SELinux。)
subdomain-docs 软件包中包含的文档 /usr/share/doc/packages/subdomain-docs/ug_apparmor.pdf 是 AppArmor 用户指南,它告诉您配置和使用 AppArmor 所需的一切知识。现在只需说,如果您只是运行 YaST AppArmor 控制面板模块并启用 AppArmor,则会加载默认配置文件,其中包含许多常见守护程序和命令的设置,包括 netstat、ping、traceroute、firefox、evolution、gaim、syslogd、acroread、ethereal、appropos、procmail、postfix (smtpd, 等等)、Apache2 (httpd2-prefork)、nscd、identd、ntpd、sshd 和 squid。
这是一个功能有限的 AppArmor 版本,因此显然它仅提供完整 1,250 美元版本中可用功能的一个子集。就我个人而言,我不清楚具体有什么区别,尽管——我在 SUSE Linux 10.0 版本中所做的每件事似乎都运行良好,因此这似乎不是一个过于严重的功能削减版本。也许完整版本包含更长的预配置应用程序列表。
Mick Bauer (darth.elmo@wiremonkeys.org) 是美国最大的银行之一的网络安全架构师。他是 O'Reilly 图书 Linux 服务器安全 第二版(以前称为 构建安全的 Linux 服务器)的作者,信息安全会议的特邀演讲者,以及“网络工程波尔卡舞曲”的作曲家。