Shorewall - 用于配置Linux服务器的高级防火墙

Shorewall本质上是iptables的前端,但它是一个命令行环境前端,利用大量的文本文件进行配置。

在Linux中设置防火墙可以是一个新手非常艰巨,还是有人不是很熟悉iptables的 幸运的是,有一个很容易的shorewall使用的解决方案。

在Linux中安装Shorewall防火墙

在Linux中安装Shorewall防火墙

在这个多部分教程,我将让您开始使用的shorewall,并引导您完成一些更高级的话题与这真棒防火墙系统。

什么是Shorewall?

的shorewall本质上是一个前端iptables的 ,但它是一个命令行环境的前端,利用若干文本文件为它的配置。 虽然是的shorewall能在非常大的网络服务众多的机器上迈上了一个强大的防火墙系统,我们将有一个基本的双接口配置开始和明确的基础。

双接口配置包括具有两个以太网端口的机器,一个进入,一个进入本地网络。

在Linux中安装Shorewall

可以的shorewall使用apt-get和yum包管理工具进行安装。

在Debian / Ubuntu / Linux Mint
$ sudo apt-get install shorewall6
在RHEL / CentOS / Fedora上
$ sudo yum install shorewall6

安装完毕后,我们需要一个示例配置从“ / usr /共享/ DOC /的shorewall”目录复制到的shorewall的默认目录“ / etc / shorewal L”。

$ sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall

然后cd到/ etc / shorewall。

$ cd /etc/shorewall

如果我们把这个目录中一看,我们看到一堆文件和文件shorewall.conf的。 的shorewall认为网络作为一组不同的区域,所以我们要看看它是“ / etc /的shorewall /区 ”文件中的第一个文件。

区域

区域

在这里,我们看到有默认定义了三个区域: ,和所有 要注意的是的shorewall对待防火墙机器本身作为在称为$ FW可变其自己的区域,并存储是重要的。 您将在整个配置文件的其余部分中看到此变量。

该“ / etc /的shorewall /区 ”的文件是不言自明。 你有净区 (面向Internet接口), 组委会 (LAN接口面临的),以及所有 ,这就是一切。

政策

政策

这个设置放弃了以下:

  1. 它允许从禄区 (LAN) 净区域 (Internet)的所有连接请求。
  2. 丢弃所有连接请求(忽略)从网区到防火墙LAN。
  3. 拒绝并记录所有其他请求。

日志级别位应该是熟悉的人谁做与Apache,MySQL和或任何其他许多其它开放源码软件项目建设与管理。 在这种情况下,我们告诉的shorewall使用记录的信息级别

如果你想有提供给您您的防火墙从你的局域网管理,可以将以下几行添加到您“ / etc /的shorewall /政策 ”的文件。

#SOURCE		DEST	POLICY		LOG		LEVEL		LIMIT:BURST
loc			$FW		ACCEPT
$FW			loc		ACCEPT

现在我们的区域和策略已设置,我们必须配置我们的接口。 您可以通过编辑“ / etc /的shorewall /接口 ”的文件做到这一点。

接口

接口

在这里,我们设置了面向Internet的接口为eth0 净区域 在我们的局域网方面,我们已经设置了其他接口,eth1的 ,到禄区 请调整此文件以正确配置您的配置。

您可以为这些接口放置的各种选项是广泛的,最好在手册页上详细说明。

$ man shorewall-interfaces

其中一些的快速下降如下:

  1. nosmurfs -过滤数据包广播地址作为源。
  2. logmartians -记录与不可能的源地址的数据包。
  3. routefilter -核心路由过滤防欺骗。

当然,现在我们的系统是防火墙的,我们将需要某些连接被允许通过,以获得我们需要做的事情。 “/ etc /的shorewall /规则 ”定义这些规则文件。

规则

规则

这个文件首先看起来很混乱,主要是因为列重叠,但头部是很自明的。 首先,你必须在操作列中,描述要执行什么。

接下来,你有一个头,可以定义所在的包始发的区域 然后,你有你DEST,目标 ,这是在目标的区域IP地址 让我们举一个例子。

假设你想与192.168.1.25的IP地址的机器上运行防火墙后面的SSH服务器。 不仅是你要在你的防火墙中打开一个端口,但你将不得不告诉任何通信端口22来需要在192.168.1.25到被路由到本机防火墙。

这被称为端口转发 它是最防火墙 / 路由器上的共同特征。 在“ / etc /的shorewall /规则 ”,你会加入这样一行做到这一点:

SSH(DNAT)	net		loc:192.168.1.25
SSH端口转发

SSH端口转发

上面,我们定义从网区防火墙未来的SSH指定数据包必须被路由 (DNAT)到端口22台机器上的地址192.168.1.25。

这被称为网络地址转换NAT。 “D”简单地告诉的shorewall,这是一个目的地址的NAT。

为了这个工作,你必须在你的内核中启用NAT支持。 如果你需要NAT和没有它,请参阅我的教程重新编译Debian内核

参考链接

Shorewall主页

在下一篇文章中,我们将介绍一些更高级的主题,但是在这里应该有很多东西让你开始使用。 和往常一样,请查看手册页以获得更深入的了解。

另请阅读探索的shorewall防火墙配置和命令行选项