SuSEfirewall2
关于
SuSEfirewall2 基本上是一个脚本,它从存储在 /etc/sysconfig/SuSEfirewall2 文件中的配置生成 iptables 规则。SuSEfirewall2 通过拒绝或丢弃到达您的网络接口的一些不必要的包来保护您免受网络攻击。
对于更高级的配置,防火墙提供三个不同的区域,您可以将您的网络接口分配给这些区域。这使得 SuSEfirewall2 也可以作为三个不同网络之间的网络路由器,或者说是提供到 Internet(或其他网络)的伪装的 LAN 服务器。
+---------------------+
| every Firewall Zone |
+----------+----------+
|
+--> [ Has assigned Network interfaces ]
|
+--> [ Has defines Allowed Services ]
配置
要配置 SuSEfirewall2,您可以
- 编辑/etc/sysconfig/SuSEfirewall2文件手动,然后调用
或
- 或使用 YaST 配置模块,该模块在 页面中描述。
请注意,当前的 并不显示或让您配置防火墙的所有设置。这至少包括拒绝配置(至少有一个默认激活)。
特性
虽然 SuSEfirewall2 具有许多功能,但 YaST 显然无法配置所有这些功能。配置文件为每个功能提供了所有必需的文档。
如果某个变量允许分配多个条目,则它们用空格分隔。
示例
FW_VARIABLE="value1 value2 value3,with,more,parameters"
防火墙区域
SuSEfirewall2 默认有三个不同的区域
- EXT - 外部区域(即不可信,Internet)
- INT - 内部区域(完全可信,无过滤,LAN)
- DMZ - 非军事区(用于应可从 Internet 访问的服务器)
可以通过将接口名称添加到 FW_DEV_zone 变量中来将网络接口分配给区域,其中 zone 是配置的区域之一。
示例
FW_DEV_EXT="dsl0" FW_DEV_EXT="any wlan0" FW_DEV_INT="eth0 wlan1"
可以使用特殊字符串 any 来告诉 SuSEfirewall 将所有未在任何地方列出的接口分配给指定的区域。默认情况下,所有未分配的接口会自动分配给外部区域。
可以使用 FW_ZONES 变量来定义其他区域。例如,如果您不想使用外部区域的严格过滤在您的 WLAN 中,但也不完全信任 WLAN,因此无法使用内部区域,您可以定义一个新的区域
FW_ZONES="wlan" FW_DEV_wlan="ra0"
允许访问服务
每个防火墙区域可以允许四种类型的服务
- TCP - FW_SERVICES_EXT_TCP、FW_SERVICES_INT_TCP、FW_SERVICES_DMZ_TCP
- UDP - FW_SERVICES_EXT_UDP、FW_SERVICES_INT_UDP、FW_SERVICES_DMZ_UDP
- RPC - FW_SERVICES_EXT_RPC、FW_SERVICES_INT_RPC、FW_SERVICES_DMZ_RPC
- IP - FW_SERVICES_EXT_IP、FW_SERVICES_INT_IP、FW_SERVICES_DMZ_IP
TCP 和 UDP 服务可以通过端口号、端口名称(当前分配可以在您的系统的 /etc/services 文件中找到)或用冒号分隔的两个端口号定义的端口范围来输入。
示例
FW_SERVICES_EXT_TCP="ssh" FW_SERVICES_EXT_TCP="ftp 22 telnet 512:514" FW_SERVICES_EXT_UDP="631 400:405"
或者,软件包可以提供一个配置文件,该文件描述运行特定服务所需的开放端口,请参阅 SuSEfirewall2/Service_Definitions_Added_via_Packages。如果服务需要多个端口,则使用此方法尤其方便。
更严格的服务访问
上述允许访问服务的方法不够严格,它允许或不允许。有一个参数可以设置为允许更严格的服务访问。但是,当使用相同的端口时,上述允许的服务定义优先于下面提到的定义。
- FW_SERVICES_ACCEPT_EXT、FW_SERVICES_ACCEPT_INT、FW_SERVICES_ACCEPT_DMZ
对于每个服务,这些参数采用 4 个位置参数和额外的关键字参数,也称为标志。
因此,格式是空格分隔的 net,protocol[,dport[,sport[,flags]]] 列表
- 示例
FW_SERVICES_ACCEPT_EXT="0.0.0.0/0,tcp,22" # This 0.0.0.0/0 restricts access via IPv4 only
支持的标志是
hitcount=NUMBER: ipt_recent --hitcount 参数blockseconds=NUMBER: ipt_recent --seconds 参数recentname=NAME: ipt_recent --name 参数
示例
# Allow max three ssh connects per minute from the same IP address somewhere in the Internet: FW_SERVICES_ACCEPT_EXT="0/0,tcp,22,,hitcount=3,blockseconds=60,recentname=ssh" # This 0/0 allows access via both IPv4 and IPv6
伪装
... 示例
- 允许内部接口上的网络完全访问网络。
- 允许 DMZ 网络完全访问网络。
FW_MASQ_NETS="10.1.1.0/24 192.168.1.0/24"
转发到伪装主机
...
透明重定向
...
日志记录
...
HTB - 调整最大上传速度
...
IPv6
Internet Protocol version 6 (IPv6) 配置包含以下项目
- IPv6 支持 - FW_IPv6 (yes/no)
- IPv6 传出配置 - FW_IPv6_REJECT_OUTGOING ([yes]/no/drop)
示例
FW_IPv6="" FW_IPv6_REJECT_OUTGOING="no"
- FW_IPv6 默认为内核的 ipv6 支持,如果该选项为空。
- FW_IPv6_REJECT_OUTGOING 默认配置为 yes(拒绝)。
要允许从 SuSEfirewall2 后面的 IPv6 子网转发,请设置 FW_FORWARD="[您的 IPv6 前缀]/64,2000::/3"
自定义规则
这是一个使用自定义规则以不侵入的方式禁用火星源日志记录的示例。不幸的是,禁用火星源日志记录的标准方法是设置 FW_SECURITY 为“no”。但是,这种选择也会关闭其他一些安全选项。以下配置创建一个自定义规则文件,该文件对系统配置进行必要的更改。
- $ cp /etc/sysconfig/scripts/SuSEfirewall2-custom /root/bin/
- 运行 Yast 的 /etc/sysconfig 编辑器
- 设置 Network->Firewall->SuSEfirewall2->FW_CUSTOMRULES 为 /root/bin/SuSEfirewall2-custom
- 编辑 /root/bin/SuSEfirewall2-custom。在我们的示例中,我们想在 fw_custom_after_finished 函数中添加一些代码
fw_custom_after_finished() {
# these are the rules to be loaded after the firewall is fully configured
for i in /proc/sys/net/ipv4/conf/*; do
setproc 0 $i/log_martians
done
true
}
请查看 /usr/sbin/SuSEfirewall2,以了解可以执行什么以及脚本的哪个点。
无法正常工作的功能
- SuSEfirewall2 不支持其所有功能在 IPv6 上。
- 无法正常工作关键字列表
- FW_TRUSTED_NETS
- FW_SERVICES_ACCEPT_EXT
- ... (欢迎添加更多)
更多阅读
请参阅/usr/share/doc/packages/SuSEfirewall2/内容,来自 SuSEfirewall2 包。