对于新手或不太熟悉iptables 的人来说,在Linux系统中设置防火墙可能会非常困难。幸运的是, Shorewall有一个非常易于使用的解决方案。
在这个由多部分组成的教程中,首先小编将介绍如何开始使用Shorewall ,并指导你使用这个出色的防火墙系统完成一些更高级的功能设置。
什么是Shorewall?
Shorewall本质上是iptables的前端,但它是一个命令行环境前端,利用多个文本文件进行配置。虽然Shorewall是一个强大的防火墙系统,可以扩展到为众多机器提供服务的大型网络,但这里将从基本的双接口配置开始,并确定基础知识。
双接口配置由一台具有两个以太网端口的机器组成,一个输入,一个输出到本地网络。
在Linux中安装Shorewall
Shorewall可以使用apt和yum包管理器工具安装,命令如下:
sudo apt install shorewall [基于Debian系统] sudo yum install shorewall [基于RHEL系统]
sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall cd /etc/shorewall
如果查看这个目录,我们会看到一堆文件和shorewall.conf配置文件:
Shorewall将网络视为一组不同的区域,因此我们要查看的第一个文件是“ /etc/shorewall/zones ”文件:
sudo nano /etc/shorewall/zones
在这里,我们看到默认定义了三个区域:fw、net和loc。值得注意的是,Shorewall将防火墙机器本身视为自己的区域,并将其存储在名为$fw的变量中。
“ /etc/shorewall/zones ” 文件非常容易看懂,主要包括:net区域(面向互联网的接口)、loc区域(面向LAN的接口)和fw,这就是全部。
此设置给出了以下内容:
- 允许从loc区域( LAN ) 到net 区域( Internet ) 的所有连接请求。
- 丢弃(忽略)从网络区域到防火墙和LAN的所有连接请求。
- 拒绝并记录所有其它请求。
LOG LEVEL位对于任何使用过Apache、MySQL或任何其它数量的FOSS程序进行管理的人来说都应该很熟悉。在这种情况下,可以告诉Shorewall使用日志记录的信息级别。
我们的区域和策略已经设置,现在必须配置我们的接口。可以通过编辑“ /etc/shorewall/interfaces ”文件来完成此操作。
sudo nano /etc/shorewall/interfaces
在这里,我们将面向互联网的接口设置为net zone的eth0。在LAN端,我们将另一个接口eth设置为loc zone。注意:请修改此文件以正确适合你自己的配置。
您可以为这两个界面中的任何一个放置各种选项,这些选项都很广泛,在手册页中有详细解释。
man shorewall-interfaces
其中一些的简要概述如下:
- nosmurfs:过滤以广播地址为源的数据包。
- logmartians:记录具有不可能源地址的数据包。
- Routefilter:用于反欺骗的内核路由过滤。
现在系统已设置防火墙,我们需要允许某些连接通过,这样才能完成我们想要做的事情。。可以在“ /etc/shorewall/rules ”的规则文件中定义这些内容。
sudo nano /etc/shorewall/rules
这个文件乍一看很混乱,主要是因为列重叠,但通过标题很容易明白它的作用。
- 首先,有ACTION列,它描述了你要执行的操作。
- 接下来,有一个SOURCE标头,可以在其中定义数据包的来源区域。
- 然后还有了一个DEST(或目的地),即目的地的区域或IP地址。
接下来让小编举个例子以便帮助你更好的理解。
假设你想在IP地址为192.168.1.55的计算机上的防火墙后面运行SSH服务器。你不仅需要在防火墙中打开一个端口,而且还必须告诉防火墙,来自端口22的任何流量都需要路由到位于192.168.1.55的计算机。
这称为端口转发,这是大多数防火墙/路由器的常见功能。在“ /etc/shorewall/rules ”中,可以通过添加如下行来完成此操作:
SSH(DNAT) net loc:192.168.1.55
在上面设置,我们定义了从网络区域到防火墙的任何以SSH为目的地的数据包都必须路由(DNAT)到地址为192.168.1.55的机器上的端口22。这称为网络地址转换或NAT。“ D ”只是告诉Shorewall这是目标地址的NAT 。
当然,要实现次目的,必须在Linux内核中启用NAT支持。如果你需要NAT但是没有的话,请参阅之前重新编译Debian内核教程。
总结
可以看出,Shorewall是用于配置Linux系统上Netfilter防火墙的高级工具。它旨在简化设置和管理防火墙的任务,使其更易于用户访问。Shorewall提供一组配置文件和一个命令行界面,允许用户定义防火墙规则、策略和设置。
另外,需要注意的是,配置防火墙需要对网络概念和安全原则有很好的理解。用户应仔细查阅Shorewall文档并测试其防火墙配置,以确保其满足安全需求。如果有什么不懂的操作,可以参考本文内容说明以及后面小编所写的教程。