SUSEfirewall2

SuSEfirewall2 是一个脚本,用来读取在 /etc/sysconfig/SuSEfirewall2 中设置的变量以生成一组 iptables 规则。 该脚本定义了三个安全区域,但在以下示例配置中只涉及第一个和第二个安全区域:

外部区域

鉴于根本无法对外部网络进行控制,所以需要保护主机,使其免受外部网络的影响。 在多数情况下,外部网络就是因特网,但也可能是其他不安全的网络,如 WLAN。

内部区域

内部网络是指专用网络,多为 LAN。 如果此网络中的主机使用专用地址范围中的 IP 地址(请参见 第 30.1.2 节 “网络掩码和路由”),则必须启用网络地址转换 (NAT),内部网络中的主机才能访问外部网络。

网络隔离区 (DMZ)

尽管从外部网络和内部网络都可以访问此区域内的主机,但这些主机本身无法访问内部网络。 这种设置可用于在内部网络前再加一道防线,因为 DMZ 系统与内部网络是隔离的。

凡是过滤规则集没有明确允许通过的网络通讯数据,iptables 都一概禁止。 因此,必须将入站通讯数据所流经的各个接口放入这三个区域之一。 对于每个区域,都应定义所允许的服务或协议。 规则集只适用于来自远程主机的包。 防火墙不截获本地生成的包。

可以使用 YaST 进行上述配置(请参见 第 43.4.1 节 “使用 YaST 配置防火墙”)。 还可以在文件 /etc/sysconfig/SuSEfirewall2 中进行手动配置,该文件已作适当注释。 另外,/usr/share/doc/packages/SuSEfirewall2/EXAMPLES 还提供了一些示例方案。

使用 YaST 配置防火墙

[Important]自动配置防火墙

完成安装后,YaST 会在所有已配置接口上自动启动防火墙。 如果在系统中配置并激活了某个服务器,YaST 可通过服务器配置模块中的选项打开防火墙中所选接口上的端口打开防火墙中的端口修改自动生成的防火墙配置。 某些服务器模块对话框包含防火墙细节按钮,用于激活其他服务和端口。 YaST 防火墙配置模块可用于激活、取消激活防火墙或单独对其进行重配置。

可以从 YaST 控制中心访问图形化的 YaST 配置对话框。 选择安全性和用户+防火墙。 该配置分为 7 个部分,可以在屏幕左侧的树结构上直接访问它们。

币笆

在该对话框中设置启动行为。 在默认安装中将自动启动 SUSEfirewall2。 也可以在这里启动和停止防火墙。 要在正在运行的防火墙上实施新的设置,请使用保存设置并立刻重启动防火墙

接口

这里列出了所有已知的网络接口。 要从区域中删除某接口,请选择此接口,并在按更改后选择未指派任何区域。 要向区域中添加某接口,请选择此接口,并在按更改后选择任一可用区域。 也可以使用自定义来创建一个采用您自己的设置的特殊接口。

允许的服务

您需要此选项来从自己的系统向受保护区域提供服务。 默认情况下,服务器仅免受外部区域的影响。 明确允许使用外部主机可用的服务。 在所选区域允许的服务中选择所需的区域后,激活该列表中的服务。

伪装

对外部网络(例如因特网),伪装隐藏您的内部网络,但内部网络中的主机可以透明地访问外部网络。 伪装将阻止从外部网络到内部网络的请求,而发自内部网络的请求从外部来看好像是由伪装服务器发出的。 如果需要使外部网络能够使用内部计算机的特殊服务,则可以为服务添加特殊重定向规则。

广播

在该对话框中配置允许广播的 UDP 端口。 将所需的各个端口号或服务添加到适当区域,以空格分隔。 另请参见文件 /etc/services

可以在这里启用未接受的广播日志记录。 这样做可能会出现问题,因为 Windows 主机使用广播来互相识别,从而生成许多未接受的包。

IPsec 支持

在此对话框中配置是否允许从外部网络使用 IPsec 服务。 在细节下配置可信的包。

日志记录级别

对于登录有两条规则:已接受和未接受的包。未接受的包为 DROPPED 或 REJECTED。 可以为这两种包选择全部记录只记录关键信息不记录任何信息

完成防火墙配置后,选择下一步退出此对话框。 然后打开面向区域的防火墙配置概要。 在其中检查所有的设置。 所有已允许使用的服务、端口和协议均在此概要中列出。 要修改配置,请使用后退。 按接受即可保存您的设置。

手动配置

以下段落提供进行成功配置的分步说明。 每个配置项都根据该项是与防火墙有关还是与伪装有关作了相应标记。 如果适用,请使用端口范围(例如 500:510)。这里未涉及配置文件中提到的与 DMZ(网络隔离区)相关的内容。 这些内容只适用于大型组织中较复杂的网络基础结构(公司网络),这需要大量配置以及对此主题的深入了解。

首先,使用 YaST 模块系统服务(运行级别)以您的运行级别(很可能是 3 或 5)启用 SUSEfirewall2。 这会在 /etc/init.d/rc?.d/ 目录中设置 SUSEfirewall2_* 脚本的符号链接。

FW_DEV_EXT(防火墙,伪装)

链接到因特网的设备。 对于调制解调器连接,请输入 ppp0。 对于 ISDN 链接,请使用 ippp0。 DSL 连接使用 dsl0。 指定 auto 使用与默认路由对应的接口。

FW_DEV_INT(防火墙,伪装)

链接到内部专用网络的设备(如 eth0)。 如果内部网络不存在,防火墙只保护它运行所在的主机,则应将此项保留为空白。

FW_ROUTE(防火墙,伪装)

如果需要伪装功能,请将此项设置为 yes。 内部主机对外将是不可见的,因为因特网路由器将忽略内部主机的专用网络地址(例如 192.168.x.x)。

对于未使用伪装功能的防火墙而言,只有在您希望允许访问内部网络时才应将此项设置为 yes。 在此情况下,内部主机需要使用正式注册的 IP 地址。 但在通常情况下,应禁止从外部访问您的内部网络。

FW_MASQUERADE(伪装)

如果需要伪装功能,则将此项设置为 yes。 这实际上为内部主机提供了与因特网的直接连接。 但更保险的做法是在内部网络主机和因特网主机之间设置代理服务器。 代理服务器提供的服务不需要伪装。

FW_MASQ_NETS(伪装)

指定要伪装的主机或网络,各个项之间要留有空格。 例如:

FW_MASQ_NETS="192.168.0.0/24 192.168.10.1"
FW_PROTECT_FROM_INT(防火墙)

将此项设置为 yes 可以保护防火墙主机免遭来自内部网络的攻击。 只有已经显式启用服务,才可以在内部网络中使用这些服务。 另请参见 FW_SERVICES_INT_TCPFW_SERVICES_INT_UDP

FW_SERVICES_EXT_TCP(防火墙)

输入应该可用的 TCP 端口。 对于不应提供任何服务的家用普通工作站,应将此项保留为空白。

FW_SERVICES_EXT_UDP(防火墙)

除非您运行 UDP 服务并希望此服务对外部可用,否则将此项保留为空白。 使用 UDP 的服务包括 DNS 服务器、IPsec、TFTP、DHCP 等。在此情况下,请输入要使用的 UDP 端口。

FW_SERVICES_INT_TCP(防火墙)

使用此变量定义可用于内部网络的服务。 变量表示法与 FW_SERVICES_EXT_TCP 的表示法相同,但变量设置适用于内部网络。 只有在 FW_PROTECT_FROM_INT 设置为 yes 时才需要设置此变量。

FW_SERVICES_INT_UDP(防火墙)

请参见 FW_SERVICES_INT_TCP。

配置防火墙后,请测试您的设置。 以 root 身份输入 SUSEfirewall2 start 可创建防火墙规则集。 然后,举例来说,可以从外部主机使用 telnet 查看是否确实会拒绝连接。 此后,请查看 /var/log/messages,应能看到如下所示的内容:

Mar 15 13:21:38 linux kernel: SFW2-INext-DROP-DEFLT IN=eth0 
OUT= MAC=00:80:c8:94:c3:e7:00:a0:c9:4d:27:56:08:00 SRC=192.168.10.0 
DST=192.168.10.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=15330 DF PROTO=TCP 
SPT=48091 DPT=23 WINDOW=5840 RES=0x00 SYN URGP=0 
OPT (020405B40402080A061AFEBC0000000001030300)

用于测试您的防火墙设置的其他包有 nmap 或 nessus。 在安装相应的包后,nmap 的文档位于目录 /usr/share/doc/packages/nmap 中,nessus 的文档位于目录 /usr/share/doc/packages/nessus-core中。