第十四章 防火墙及对服务访问的控制 |
|||||
14.1 基本防火墙的配置
14.1.1 安全级别配置工具 14.1.2 GNOME Lokkit 14.1.3 激活 iptables 服务 |
|||||
14.2 控制服务的访问
14.2.1 运行级别 14.2.2 TCP 会绕程序 (TCP Wrappers) 14.2.3 服务配置工具 14.2.4 ntsysv 14.2.5 chkconfig |
|||||
14.1 基本防火墙的配置 | |||||
防火墙有利于防止计算机病毒影响系统以及非法入侵。防火墙存在于计算机和网络之间,可以判定计算机上哪些服务可以被网络上的远程用户访问。好的防火墙能够极大地增强系统安全性。对于提供WWW等网络服务的Linux系统建议配置一个防火墙。在版本9中,Linux采用iptables来设定防火墙规则。这里只是简单防火墙的设定。 | |||||
14.1.1 安全级别配置工具
Red Hat Linux 安装中的「防火墙配置」屏幕给你提供了几个可供选择的选项:高级、中级、无防火墙;你还可以选择要允许的指定设备、进入服务、和端口等。要启动这个程序,选择面板上的「主菜单」 => 「系统设置」 => 「安全级别」,或在 shell(如 XTerm 或 GNOME 终端)下键入redhat-config-securitylevel 命令。 从下拉菜单中选择想要的安全级别。 点击「确定」来激活防火墙。点击了「确定」后,选定的选项就会被转换成 iptables 命令并写入 /etc/sysconfig/iptables 文件。iptables 服务也被启动,因此,保存了选定选项后,防火墙就会被立即激活。 |
|||||
14.1.2 GNOME Lokkit
GNOME Lokkit 允许你通过建立基本的 ipchains 联网规则来为普通用户配置防火墙设置。你不必编写这些规则,该程序会向你提出一系列关于你如何使用系统的问题,然后把它们写入 /etc/sysconfig/ipchains 文件。 你不应该使用 GNOME Lokkit 来生成复杂的防火墙规则。该程序的目的是帮助普通用户在使用调制解调器、电缆、或 DSL 连接到互联网上时进行自我保护。要配置特指的防火墙规则,请参阅《Red Hat Linux 参考指南》 书中的“使用 iptables 来建立防火墙”这一章。 要启动图形化的f GNOME Lokkit,选择「主菜单」 => 「系统工具」 => 「更多系统工具」 => Lokkit,或在 shell 提示下以根用户身份键入 gnome-lokkit 命令。如果你没有安装 X 窗口系统,或者你优选基于文本的程序,在 shell 提示下键入 lokkit 命令来启动这个程序的文本模式。 点击「结束」会把防火墙规则写入 /etc/sysconfig/iptables 文件,并通过启动 iptables 服务来启动防火墙。 |
|||||
14.1.3 激活 iptables 服务
防火墙规则只有在 iptables 服务运行的时候才能被激活。要手工启动服务,使用以下命令:
要确保它在系统引导时启动,使用以下命令:
ipchains 服务不能和 iptables 服务同时运行。要确定 ipchains 服务被禁用,执行以下命令:
|
|||||
14.2 控制服务的访问 | |||||
维护 Linux
系统的安全性极端重要。管理系统安全的方法之一是谨慎管理对系统服务的使用。你的系统可能提供某些对外网络服务(譬如
httpd)。然而,如果你不需要提供其他服务,则应该把它们关闭。可以使用以下三种方法来配置服务的启动或停止:
当然也可以直接手工编辑位于 /etc/rc.d 目录下的大量符号链接,或者编辑 /etc/xinetd.d 中的 xinetd 配置文件。通过使用 iptables 来配置 IP 防火墙也是个好方法来管理系统服务。 |
|||||
14.2.1 运行级别
服务可以处于不同的运行级别。运行级别是一种状态,或模式(mode),它由列在 /etc/rc.d/rc<x>.d 目录中的服务来定义,其中 <x> 是运行级别的数字。 Red Hat Linux 使用下列运行级别:
如果你使用的是文本登录屏幕,你是在运行级别 3 中操作。如果你使用的是图形化登录屏幕,你是在运行级别 5 中操作。系统默认的运行级别可以通过修改 /etc/inittab 文件来改变,该文件在接近开头的地方有一行与下面相似:
把这一行中的数字改成你想要的运行级别。所做改变在系统重新引导之后才会生效。要立即改变运行级别,使用命令 telinit (或init),其后跟随运行级别数字。你必须是根用户才能使用这项命令。 |
|||||
14.2.2 TCP 会绕程序(TCP Wrappers)
许多 UNIX 系统管理员对使用 TCP 会绕程序来管理对某些网络服务的使用比较熟悉。由 xinetd(以及任何带有内建 libwrap 支持的程序)管理的服务能够使用 TCP 会绕程序来管理使用权。xinetd 能够使用 /etc/hosts.allow 和 /etc/hosts.deny 文件来配置到系统服务的使用。如文件的名称所暗示,hosts.allow 包含一个允许客户使用被 xinetd 所控制的网络服务的规则列表,hosts.deny 文件包含拒绝使用权的规则。hosts.allow 文件优先于 hosts.deny 文件。对使用权限的授予或拒绝可以根据个别 IP 地址(或主机名)或一类客户而定。 |
|||||
14.2.2.1. xinetd
xinetd控制到互联网服务的访问,它是 inetd 的安全替换品。xinetd 守护进程保存系统资源,提供访问控制和日志记录,并可以用来启动特殊目的的服务器。xinetd 能够用来提供到某些主机的访问;拒绝到某些服务的访问;限制进入连接的频率和(或) 连接造成的载量等等。xinetd 无时不在运行并监听它所管理的所有端口上的服务。当某个要连接它管理的某项服务的请求到达时,xinetd 就会为该服务启动合适的服务器。xinetd 的配置文件是 /etc/xinetd.conf,但是它只包括几个默认值以及包含 /etc/xinetd.d 目录中的配置文件。要启用或禁用某项 xinetd 服务,编辑位于 /etc/xinetd.d 目录中的配置文件。如果 disable 属性被设为 yes,该项服务已禁用。如果 disable 属性被设为 no,则该项服务已被启用。 你可以使用 服务配置工具、ntsysv 或 chkconfig 来编辑任何一个 xinetd 配置文件或改变它的启用状态。要获得由 xinetd 控制的网络服务列表,使用 ls /etc/xinetd.d 命令来列举 /etc/xinetd.d 目录的内容。 |
|||||
14.2.3. 服务配置工具
服务配置工具是图形化应用程序。它由 Red Hat 开发,用来配置 /etc/rc.d/init.d 中在引导时(对运行级别 3、4、5 而言)要启动 哪些 SysV 服务,哪些 xinetd 服务。它允许你启动、停止、和重新启动 SysV 服务以及重新启动 xinetd。 要从桌面启动 服务配置工具,点击面板上的「主菜单」 => 「系统设置」 => 「服务器设置」 => 「服务」,或在 shell 提示下(如 XTerm 或 GNOME 终端),键入命令 redhat-config-services。 服务配置工具不但列出了 /etc/rc.d/init.d 中的服务,还列出了由 xinetd 控制的服务。点击左侧列表中的服务名来显示该服务的描述以及状态。工具栏的「编辑运行级别」可以来改变服务运行级别。工具栏的「行动」可以来启动、停止、或重新启动某项服务。如果该服务是一个 xinetd 服务,行动按钮会被禁用,因为它们不能被单个地启动或停止。如果你通过选择或取消选择服务名旁的复选箱来启用或禁用了 xinetd 服务,你必须从下拉菜单中选择「文件」 => 「保存改变」来重新启动 xinetd,并立即启用或禁用你所改变的 xinetd 服务。 |
|||||
14.2.4. ntsysv
ntsysv
工具为激活或停运服务提供了简单的界面。你可以使用 ntsysv
来启动或关闭由 xinetd
管理的服务。你还可以使用 ntsysv
来配置运行级别。按照默认设置,只有当前运行级别会被配置。要配置不同的运行级别,使用
--level
选项来指定一个或多个运行级别。譬如,命令 ntsysv
--level 345 配置运行级别 3、4、和 5。ntsysv
的界面和文本模式的安装程序的工作方式相仿。使用上下箭头来上下查看列表。使用空格键来选择或取消选择服务,或按
「确定」和「取消」按钮。要在服务列表和「确定」、「取消」按钮中切换,使用
|
|||||
14.2.5 chkconfig
chkconfig 命令也可以用来激活和停运服务。如果你使用 chkconfig --list 命令,你会看到一个系统服务列表,以及它们在运行级别 0 到 6 中已被启动(on)或停止(off)。 在列表末端,你会看到由 xinetd 管理的服务部分。 如果你使用 chkconfig --list 来查询由 xinetd 管理的服务,你会看到 xinetd 服务是被启用(on)还是被关闭(off)了。 譬如,命令 chkconfig --list finger 返回了下列输出:
如上所示,finger 作为 xinetd 服务被启用。如果 xinetd 在运行,finger 就会被启用。 如果你使用 chkconfig --list 来查询 /etc/rc.d 中的服务,你会看到服务在每个运行级别中的设置。譬如,命令 chkconfig --list anacron 返回了下列输出:
chkconfig 还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。譬如,要在运行级别 3、4、5 中停运 nscd 服务,使用下面的命令:
|
|||||