网站搜索

如何在 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/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日志记录的错误。

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 的命令行界面为系统管理员提供了许多方便的单行命令。一项经常使用的命令是保存当前配置状态,以便在出现任何复杂情况时可以回滚,尤其是在对防火墙进行大量更改时。

其语法很简单。

sudo shorewall save <filename>

回滚也同样简单:

sudo shorewall restore <filename>

Shorewall 还可以启动并配置为使用备用配置目录。您可以指定这是启动命令,但您需要先检查它。

sudo shorewall check <config-directory>

如果您只是想尝试配置,并且如果它有效,则启动它,您可以指定 try 选项。

sudo shorewall try <config-directory> [  ]

Shorewall 只是 Linux 系统上可用的众多强大的防火墙解决方案之一。无论您处于网络领域的哪一端,许多人都会发现它简单且有用。

这只是一个小小的开始,可以让您无需过多了解网络概念即可上路。与往常一样,请研究并查看手册页和其他资源。 Shorewall 的邮件列表是一个很棒的地方,并且是最新的且维护良好。