第十四章 防火墙及对服务访问的控制

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 服务也被启动,因此,保存了选定选项后,防火墙就会被立即激活。

top

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 服务来启动防火墙。

top

14.1.3 激活 iptables 服务

防火墙规则只有在 iptables 服务运行的时候才能被激活。要手工启动服务,使用以下命令:

/sbin/service iptables restart

要确保它在系统引导时启动,使用以下命令:

/sbin/chkconfig --level 345 iptables on

ipchains 服务不能和 iptables 服务同时运行。要确定 ipchains 服务被禁用,执行以下命令:

/sbin/chkconfig --level 345 ipchains off

 top

14.2 控制服务的访问
    维护 Linux 系统的安全性极端重要。管理系统安全的方法之一是谨慎管理对系统服务的使用。你的系统可能提供某些对外网络服务(譬如 httpd)。然而,如果你不需要提供其他服务,则应该把它们关闭。可以使用以下三种方法来配置服务的启动或停止:
  • 服务配置工具: 一个图形化应用程序,它显示了每项服务的描述,以及每项服务是否在引导时启动(运行级别 3、4、5),并允许你启动、停止、或重新启动每项服务。

  • ntsysv: 基于文本的程序。它允许你为每个运行级别配置引导时要启动的服务。对于不属于 xinetd 的服务而言,改变不会立即生效。你不能使用这个程序来启动、停止、或重新启动不属于 xinetd 的服务服务。

  • chkconfig: 一个允许你在不同运行级别启动和关闭服务的命令行工具。对于不属于 xinetd 的服务而言,改变不会立即生效。你不能使用这个工具程序来启动、停止、或重新启动不属于 xinetd 的服务服务。

当然也可以直接手工编辑位于 /etc/rc.d 目录下的大量符号链接,或者编辑 /etc/xinetd.d 中的 xinetd 配置文件。通过使用 iptables 来配置 IP 防火墙也是个好方法来管理系统服务。

14.2.1 运行级别

服务可以处于不同的运行级别。运行级别是一种状态,或模式(mode),它由列在 /etc/rc.d/rc<x>.d 目录中的服务来定义,其中 <x> 是运行级别的数字。

Red Hat Linux 使用下列运行级别:

  • 0 — 停运

  • 1 — 单用户模式

  • 2 — 没有使用(可由用户定义)

  • 3 — 完全的多用户模式

  • 4 — 没有使用(可由用户定义)

  • 5 — 完全的多用户模式(带有基于 X 的登录屏幕)

  • 6 — 重新引导

如果你使用的是文本登录屏幕,你是在运行级别 3 中操作。如果你使用的是图形化登录屏幕,你是在运行级别 5 中操作。系统默认的运行级别可以通过修改 /etc/inittab 文件来改变,该文件在接近开头的地方有一行与下面相似:

id:5:initdefault:

把这一行中的数字改成你想要的运行级别。所做改变在系统重新引导之后才会生效。要立即改变运行级别,使用命令 telinit (或init),其后跟随运行级别数字。你必须是根用户才能使用这项命令。

top

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 目录的内容。

top

14.2.3. 服务配置工具

服务配置工具是图形化应用程序。它由 Red Hat 开发,用来配置 /etc/rc.d/init.d 中在引导时(对运行级别 3、4、5 而言)要启动 哪些 SysV 服务,哪些 xinetd 服务。它允许你启动、停止、和重新启动 SysV 服务以及重新启动 xinetd。

要从桌面启动 服务配置工具,点击面板上的「主菜单」 => 「系统设置」 => 「服务器设置」 => 「服务」,或在 shell 提示下(如 XTermGNOME 终端),键入命令 redhat-config-services。

服务配置工具不但列出了 /etc/rc.d/init.d 中的服务,还列出了由 xinetd 控制的服务。点击左侧列表中的服务名来显示该服务的描述以及状态。工具栏的编辑运行级别可以来改变服务运行级别。工具栏的「行动」可以来启动、停止、或重新启动某项服务。如果该服务是一个 xinetd 服务,行动按钮会被禁用,因为它们不能被单个地启动或停止。如果你通过选择或取消选择服务名旁的复选箱来启用或禁用了 xinetd 服务,你必须从下拉菜单中选择「文件」 => 「保存改变」来重新启动 xinetd,并立即启用或禁用你所改变的 xinetd 服务。

top

14.2.4. ntsysv

ntsysv 工具为激活或停运服务提供了简单的界面。你可以使用 ntsysv 来启动或关闭由 xinetd 管理的服务。你还可以使用 ntsysv 来配置运行级别。按照默认设置,只有当前运行级别会被配置。要配置不同的运行级别,使用 --level 选项来指定一个或多个运行级别。譬如,命令 ntsysv --level 345 配置运行级别 3、4、和 5。ntsysv 的界面和文本模式的安装程序的工作方式相仿。使用上下箭头来上下查看列表。使用空格键来选择或取消选择服务,或按 「确定」「取消」按钮。要在服务列表和「确定」「取消」按钮中切换,使用 [Tab] 键。* 标明某服务被设为启动。 [F1] 键会弹出每项服务的简短描述。

top

14.2.5 chkconfig

chkconfig 命令也可以用来激活和停运服务。如果你使用 chkconfig --list 命令,你会看到一个系统服务列表,以及它们在运行级别 0 到 6 中已被启动(on)或停止(off)。 在列表末端,你会看到由 xinetd 管理的服务部分。

如果你使用 chkconfig --list 来查询由 xinetd 管理的服务,你会看到 xinetd 服务是被启用(on)还是被关闭(off)了。 譬如,命令 chkconfig --list finger 返回了下列输出:

finger          on

如上所示,finger 作为 xinetd 服务被启用。如果 xinetd 在运行,finger 就会被启用。

如果你使用 chkconfig --list 来查询 /etc/rc.d 中的服务,你会看到服务在每个运行级别中的设置。譬如,命令 chkconfig --list anacron 返回了下列输出:

anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off

chkconfig 还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。譬如,要在运行级别 3、4、5 中停运 nscd 服务,使用下面的命令:

chkconfig --level 345 nscd off

 top