对于系统管理员来说,控制用户对管理权限的使用是一个重要的问题;对于安装和操作 Linux 系统的人员而言,决定和控制哪些网络服务应该处于活跃状态就更为重要。
许多红帽企业 Linux 中的服务都像网络服务器一样。如果机器上运行某个网络服务,那么这个叫做守护进程(daemon)的服务器程序就在一个或多个网络端口上监听连接。每一个此类服务器都应该被作为潜在的攻击渠道对待。
网络服务可以给 Linux 系统带来许多威胁。以下列举了一些主要威胁:
拒绝服务攻击(DoS) — 拒绝服务攻击通过向服务器发送大量服务请求使系统由于试图记录和答复每个请求而陷于停顿,从而无法响应正常的服务请求。
脚本弱点攻击 — 如果服务器使用脚本来执行服务器端的行动(万维网服务器通常会这么做),怪客可以对不正确编写的脚本发起攻击。这些脚本弱点能够导致缓冲溢出或允许攻击者改变系统上的文件。
缓冲溢出攻击 — 连接到端口0到1023的服务必须以管理用户的身份运行。如果应用程序中有一个可利用的缓冲溢出漏洞,攻击者就能够在用户运行守护进程的时候获得对系统的控制权。由于可被利用的缓冲溢出的存在,怪客可以使用自动化的工具来识别有弱点的系统,一旦他们获得进入权,他们可以使用自动化的 rootkits 来保持对系统的使用权。
注记 | |
---|---|
ExecShield 是一个 x86 兼容的单或多处理器内核支持的可执行的内存分段和保护程序。红帽企业 Linux 使用 ExecShield 来解决缓冲溢出的危险。ExecShield 把内存分为可执行段和不可执行段来减少缓冲溢出的危险。任何试图在可执行内存段以外执行的代码 (如缓存溢出产生的有害代码) 都将触发一个内存段错误中止。 ExecShield 也包括了对 AMD64 平台的 No eXecute( NX)技术和 Itanium 和 Intel® EM64T 系统的 eXecute Disable (XD)技术的支持。这些技术和 ExecShield 一起使用可以阻止不良的代码和一个可执行的 4kb 代码在可执行段的虚拟内存空间内执行。这可以减少利用缓存溢出对系统进行攻击的危险。 关于 ExecShield 和 NX 或 XD技术的详情,请参阅New Security Enhancements in Red Hat Enterprise Linux v.3, Update 3”。它可以从以下得到: |
要把受到网络攻击的暴露程度限制在一定范围内, 你应该关闭所有不使用的服务。
为增强安全性,多数和红帽企业 Linux 一起安装的网络服务都被默认关闭。不过,其中有几个明显的例外:
cupsd — 红帽企业 Linux 的默认打印服务器。
lpd — 另一个打印服务器。
xinetd — 控制连接到 vsftpd、telnet 之类的从属服务器的超级服务器。
sendmail — Sendmail 邮件传输代理被默认启用,但是它只监听 localhost 上的连接。
sshd — OpenSSH 服务器,是 Telnet 的安全替代品。
在决定是否让这些服务继续运行时,最好是听凭常识,宁可过于小心也不疏忽大意。例如,如果没有打印机,你就不必运行 cupsd。portmap 端口也同理,如果你不挂载 NFSv3 文件卷或使用 NIS(ypbind 服务),那么 portmap 就应该被禁用。
红帽企业 Linux 中包括了三个用来开关服务的程序。它们是:服务配置工具(system-config-services)、ntsysv 和 chkconfig。关于使用这些工具的信息,请参阅《红帽企业 Linux 系统管理指南》的“控制对服务的使用”这一章。
如果你对某服务的目的不清楚,服务配置工具中有一个描述字段可能会对你有所启发,如图 4-3所示。
但是仅仅查看哪些网络服务在引导时被启用是不够的。优秀的系统管理员还应该检查哪些端口被打开或正在监听。关于这个课题的详情,请参阅第 5.8 节。
任何网络服务都有潜在的不安全因素。这就是关闭不使用服务之所以非常重要的原因。服务漏洞会被例行检查、揭示和修补,从而使更新与网络服务有关的软件包这一点显得格外重要。关于这个问题的详情,请参阅第3章 。
和其它网络协议相比,某些网络协议具有固有的不安全因素。它们包括任何进行以下事务的服务:
在网络中传递不经加密的用户名和口令 — 许多旧有的协议,如 Telnet 和 FTP,都不会加密验证会话,应该尽可能地避免使用。
不经加密地在网络中传递保密信息 — 许多协议在网络中不经加密地传递信息。这些协议包括 Telnet、FTP、HTTP、和 SMTP。许多网络文件系统,如 NFS 和 SMB,也不经加密地在网络中传递信息。在使用这些协议时,限制传输数据是用户的责任。
还有,像 netdump 之类的远程内存转储服务会把内存内容不经加密地在网络中传递。内存转储中可以包含口令,更糟的是,还可能包含数据库的数据和其它保密信息。
其它服务如 finger 和 rwhod 会揭示关于系统用户的信息。
带有固有不安全因素的服务包括:
rlogin
rsh
telnet
vsftpd
所有远程登录和 shell 程序(rlogin、rsh 和 telnet)都应该避免使用,使用 SSH 来替代它们。(关于 sshd 的详情,请参阅第 4.7 节。)
FTP 固有的对系统安全的威胁性没有远程 shell 那么严重,但是 FTP 服务器必须被谨慎配置和监视才能避免问题的发生。关于保护 FTP 服务器的安全的详情,请参阅第 5.6 节。
应该谨慎实现并放置在防火墙之后的服务包括:
finger
identd
netdump
netdump-server
nfs
rwhod
sendmail
smb (Samba)
yppasswdd
ypserv
ypxfrd
关于保护网络服务安全的详情,请参阅第5章 。
下节讨论了可以用来设置简单防火墙的工具。