学习Linux中的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/share/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 configuration verified”。如果你收到任何错误,很可能是由于内核配置中缺少模块。

接下来我将展示如何解决两种常见错误。如果你计划将你的机器用作防火墙,建议重新编译内核并确保包含所有必要的模块。

常见错误及解决方法

第一个错误:关于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。大多数开箱即用的内核都没有启用NAT支持。请参考我的教程《如何编译Debian内核》以帮助你入门。

第二个常见错误:关于iptables和日志记录的错误

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

重新运行以下命令,应该能够得到一个健康的配置状态:

shorewall check

Shorewall的命令行接口

Shorewall的命令行界面提供了许多对系统管理员非常有用的命令。一个常用的命令,尤其是在进行大量防火墙配置修改时,就是保存当前的配置状态,以便在出现问题时进行回滚。

其语法非常简单:

sudo shorewall save <filename>

回滚同样简单:

sudo shorewall restore <filename>

Shorewall还可以配置为使用一个备用的配置目录。你可以在启动命令中指定该目录,但首先要检查它。

sudo shorewall check <config-directory>

如果你只是想试用某个配置,并检查其是否有效,可以使用“try”选项:

sudo shorewall try <config-directory>

Shorewall是Linux系统上众多强大防火墙解决方案之一。无论你处于网络管理的哪个层面,许多人都发现它既简单又有用。

这仅仅是一个起步,可以帮助你在不深入了解网络概念的情况下开始使用。正如往常一样,请自行查阅man手册和其他资源。Shorewall的邮件列表是一个非常棒且及时更新的资源,值得一看。

未经允许不得转载:A5数据 » 学习Linux中的Shorewall防火墙配置检查

相关文章

contact