使用 Shorewall Firewall 保护 Riak

Cha*_*les 6 firewall

我想为 Web 项目设置 Riak 集群。

但是,我想保护这个集群,以便只有我的 Web 服务器可以访问 Riak 集群。基本上,我将拥有一个或多个 Web 服务器和 4 个 Riak 服务器(在一个集群中)。

我想使用 Shorewall 或其他防火墙应用程序来保护 Web 服务器和 Riak 集群之间的通信,这样除了我自己的服务器之外,没有其他服务器可以访问集群。由于 Riak 在服务器端是完全开放的,这在我将服务器投入生产之前是必不可少的。

我想我将不得不:

  1. 在每个 Riak 服务器上安装 Shorewall
  2. 最初锁定所有端口
  3. 在所有 Riak 服务器上打开端口 4369(epmd)和端口 8099(切换侦听器)+我的 app.config 文件中定义的端口范围
  4. 在所有 Riak 服务器上打开端口 8098 和 8097(用于客户端)
  5. 单独将一台 Riak 服务器的访问限制为集群中其他 Riak 服务器的 IP 地址 + 我的 Web 服务器的 IP 地址。对集群中的其他 Riak 服务器重复此操作

我可以安装 Shorewall,但我不熟悉如何配置 shorewall 来执行上述操作。我将不胜感激。

ger*_*ijk 1

如果您打算使用 Shorewall 作为只有一个接口的计算机上的防火墙,那么在我看来,这有点过分了。尽管如此,我还是喜欢使用 Shorewall 来完成这项任务。以下是一个简短的介绍,可以帮助您入门。

因此,我在这里假设仅使用单接口 IPv4 配置。IPv4 和 IPv6 版本的 shorewall 是独立但相似的软件包。

$ sudo apt-get install shorewall
Run Code Online (Sandbox Code Playgroud)

安装后,一切仍然被禁用。首先,让我们复制单个接口配置的示例。

$ sudo cp /usr/share/doc/shorewall/examples/one-interface/* /etc/shorewall
Run Code Online (Sandbox Code Playgroud)

然后我们来一一配置文件。

提示:*.annotated.gz如果您愿意,请在配置文件中使用这些文件来添加更多注释。

  • zones- 保留默认值。配置区域是强制性的,但由于它是单个接口,因此除了防火墙本身之外,它只包含一个区域 ( fw): net
  • interfaces- 在那里配置您的单一接口。默认配置可能会很好,我只是删除,dhcp因为我没有在我的服务器上运行 DHCP。
  • policy- 定义区域之间的流量策略。由于您的区域数量只有一个,这也很容易。默认情况下,禁止所有入站流量,允许所有出站流量。如果您愿意,请保留默认值。
  • rules- 您可以在此处配置已定义策略的例外情况。允许来自整个外部 IPv4 世界的入站 TCP 端口 1234 的简单示例如下:

    ACCEPT       net           $FW        tcp       1234
    
    Run Code Online (Sandbox Code Playgroud)

    考虑使用一些宏来帮助您的配置文件更具可读性,例如您可能无论如何都想设置的宏:

    SSH(ACCEPT)  net:1.2.3.4   $FW
    
    Run Code Online (Sandbox Code Playgroud)

    允许从 IP 地址进行 SSH 访问1.2.3.4

  • shorewall.confgunzip- 通过ping 发送的文件来获取它shorewall.conf.gz。检查IP_FORWARDING=Off是否不执行任何转发,DISABLE_IPV6=Yes如果不打算在计算机上配置 IPv6,请考虑进行设置。最后,设置STARTUP_ENABLED=Yes.

在启动时间中也启用它/etc/default/shorewall,设置startup=1

现在通过运行检查您当前的配置

$ shorewall check
Run Code Online (Sandbox Code Playgroud)

请在每次更改某些文件时以及实际重新启动 Shorewall 之前执行此操作。它可以防止出现语法错误时出现停机,因为它会在编译时抱怨语法错误。

如果一切顺利,您可以尝试实际启动:

$ sudo service shorewall start
Run Code Online (Sandbox Code Playgroud)

并随意检查结果iptables

$ sudo iptables -L -n -v
Run Code Online (Sandbox Code Playgroud)