我想为一个 Web 项目建立一个 Riak 集群。
但是,我希望保护此集群,以便只有我的 Web 服务器可以访问 Riak 集群。基本上,我将拥有一个或多个 Web 服务器和 4 个 Riak 服务器(在一个集群中)。
我想使用 Shorewall 或其他防火墙应用程序来保护 Web 服务器和 Riak 集群之间的通信,以便除了我自己的服务器之外,没有其他服务器可以访问集群。由于 Riak 在服务器端是完全开放的,因此在我将服务器投入生产之前,这一点至关重要。
我认为我必须:
- 在每个 Riak 服务器上安装 Shorewall
- 首先锁定所有端口
- 在所有 Riak 服务器上打开端口 4369(epmd)和端口 8099(切换监听器)+我的 app.config 文件中定义的端口范围
- 在所有 Riak 服务器上打开端口 8098 和 8097(用于客户端)
- 单独限制一台 Riak 服务器对集群中其他 Riak 服务器的 IP 地址 + 我的 Web 服务器的 IP 地址的访问。对集群中的其他 Riak 服务器重复上述操作
我可以安装 Shorewall,但我不知道如何配置 Shorewall 来执行上述操作。如果能得到帮助,我将非常感激。
答案1
如果您打算将 Shorewall 用作只有一个接口的机器上的防火墙,那么在我看来,这有点大材小用。不过,无论如何,我还是喜欢使用 Shorewall 来完成这项任务。以下是简短的介绍,可能有助于您入门。
因此,我在此假设单接口仅 IPv4 配置。shorewall 的 IPv4 和 IPv6 版本是独立但相似的软件包。
$ sudo apt-get install shorewall
安装后,一切仍处于禁用状态。首先,让我们复制一个单一接口配置的示例。
$ sudo cp /usr/share/doc/shorewall/examples/one-interface/* /etc/shorewall
那我们来一个一个的配置这些文件吧。
提示:*.annotated.gz
如果您愿意,可以使用这些文件在您的配置文件中添加更多注释。
zones
- 保留默认设置。配置区域是强制性的,但由于它是单个接口,因此除了防火墙本身之外,它仅包含一个区域(fw
)net
:。interfaces
- 在那里配置您的单个接口。默认配置可能很好,我只会删除它,dhcp
因为我的服务器上没有运行 DHCP。policy
- 定义区域间流量的策略。由于您的区域数只有一个,因此这也很容易。默认情况下,所有入站流量均被禁止,所有出站流量均被允许。如果您愿意,请保留该默认设置。rules
- 您可以在此处配置已定义策略的例外情况。允许来自整个外部 IPv4 世界的入站 TCP 端口 1234 的一个简单示例如下:ACCEPT net $FW tcp 1234
考虑使用一些可以帮助您的配置文件更具可读性的宏,例如您可能想要设置的这个宏:
SSH(ACCEPT) net:1.2.3.4 $FW
允许从 IP 地址进行 SSH 访问
1.2.3.4
。shorewall.conf
gunzip
- 通过ping 发送的文件获取它shorewall.conf.gz
。检查IP_FORWARDING=Off
您是否不进行任何转发,并考虑设置DISABLE_IPV6=Yes
如果您不打算在机器上配置 IPv6。最后,设置STARTUP_ENABLED=Yes
。
/etc/default/shorewall
在设置中也启用它在启动时startup=1
。
现在通过运行检查当前配置
$ shorewall check
每次更改某个文件后,请在实际重新启动 Shorewall 之前执行此操作。它可以防止在出现语法错误时停机,因为它会抱怨语法错误。
如果一切顺利,您可以尝试实际启动:
$ sudo service shorewall start
请随意检查结果iptables
:
$ sudo iptables -L -n -v