探索 Shorewall 防火墙配置和命令行选项
在我之前的文章中,我们了解了Shorewall,了解如何安装它、设置配置文件以及配置通过NAT进行端口转发。在本文中,我们将探讨Shorewall的一些常见错误、一些解决方案,并介绍其命令行选项。
Shorewall提供了大量可以在命令行上运行的命令。查看man shorewall应该会给你很多信息,但我们要执行的第一个任务是检查我们的配置文件。
$ sudo shorewall check
Shorewall将打印出所有配置文件及其所含选项的检查结果。输出结果如下。
Determining Hosts in Zones... Locating Actions Files... Checking /usr/share/shorewall/action.Drop for chain Drop... Checking /usr/share/shorewall/action.Broadcast for chain Broadcast... Checking /usr/shrae/shorewall/action.Invalid for chain Invalid... Checking /usr/share/shorewall/action.NotSyn for chain NotSyn.. Checking /usr/share/shorewall/action.Reject for chain Reject... Checking /etc/shorewall/policy... Adding Anti-smurf Rules Adding rules for DHCP Checking TCP Flags filtering... Checking Kernel Route Filtering... Checking Martian Logging... Checking Accept Source Routing... Checking MAC Filtration -- Phase 1... Checking /etc/shorewall/rules... Checking /usr/share/shorewall/action.Invalid for chain %Invalid... Checking MAC Filtration -- Phase 2... Applying Policies... Checking /etc/shorewall/routestopped... Shorewall configuration verified
我们正在寻找的神奇行位于底部,内容为:“ Shorewall 配置已验证”。如果您收到任何错误,则很可能是由于内核配置中缺少模块造成的。
我将向您展示如何解决两个最常见的错误,但如果您计划将您的机器用作防火墙,则有必要使用所有必要的模块重新编译您的内核。
第一个错误,也是最常见的错误,是关于NAT 的错误。
Processing /etc/shorewall/shorewall.conf... Loading Modules... Checking /etc/shorewall/zones... Checking /etc/shorewall/interfaces... Determining Hosts in Zones... Locating Actions Files... Checking /usr/share/shorewall/action.Drop for chain Drop... Checking /usr/share/shorewall/action.Broadcast for chain Broadcast... Checking /usr/shrae/shorewall/action.Invalid for chain Invalid... Checking /usr/share/shorewall/action.NotSyn for chain NotSyn.. Checking /usr/share/shorewall/action.Reject for chain Reject... Checking /etc/shorewall/policy... Adding Anti-smurf Rules Adding rules for DHCP Checking TCP Flags filtering... Checking Kernel Route Filtering... Checking Martian Logging... Checking Accept Source Routing... Checking /etc/shorewall/masq... ERROR: a non-empty masq file requires NAT in your kernel and iptables /etc/shorewall/masq (line 15)
如果您看到类似这样的内容,则可能是您当前的内核未编译支持NAT。这在大多数开箱即用的内核中很常见。请阅读我的教程“如何编译 Debian 内核”以开始使用。
检查产生的另一个常见错误是有关iptables和日志记录的错误。
root@debian:/etc/shorewall# shorewall check Checking... Processing /etc/shorewall/params... Processing /etc/shorewall/shorewall.conf Loading Modules.. ERROR: Log level INFO requires LOG Target in your kernel and iptables
你也可以将其编译到新内核中,但如果你想使用ULOG ,有一个快速修复方法。ULOG是一种不同于 syslog 的日志记录机制。它非常易于使用。
要进行此项设置,您必须将/etc/shorewall中所有配置文件中的每个“ info ”实例更改为“ ULOG ” 。以下命令可以为您执行此操作。
$ cd /etc/shorewall $ sudo sed –i ‘s/info/ULOG/g’ *
之后,编辑/etc/shorewall/shorewall.conf文件并设置该行。
LOGFILE=
您希望将日志存储到哪里。我的是/var/log/shorewall.log。
LOGFILE=/var/log/shorewall.log
运行“ sudo shorewall check ”应该会给你一份健康证明。
Shorewall 的命令行界面为系统管理员提供了许多方便的单行命令。一个常用的命令(尤其是在对防火墙进行大量更改时)是保存当前配置状态,以便在出现任何复杂情况时可以回滚。此命令的语法很简单。
$ sudo shorewall save <filename>
回滚同样简单:
$ sudo shorewall restore <filename>
Shorewall 也可以启动并配置为使用备用配置目录。您可以指定这是启动命令,但您需要先检查它。
$ sudo shorewall check <config-directory>
如果您只是想尝试一下配置,如果它可以正常工作,就启动它,您可以指定尝试选项。
$ sudo shorewall try <config-directory> [ ]
Shorewall 只是 Linux 系统上众多强大的防火墙解决方案之一。无论您身处哪种网络环境,许多人都会发现它简单实用。
这只是个小小开始,它可以让您在不深入研究网络概念的情况下顺利上手。与往常一样,请研究并查看手册页和其他资源。Shorewall 的邮件列表非常棒,而且更新及时,维护良好。