以编程方式修改Debian防火墙规则

我目前正在使用Debian安装在Rackspace云服务器上进行部署。

我有一个应用程序使用远程协调器与我的所有服务器进行通信,以启动各种服务,只是通常跟踪服务器。

我需要保护我的生产环境,并使用某些没有内置安全性的服务(Couchbase / Membase和ElasticSearch),因此我需要在所有服务器上实现防火墙。 可以修改协调器为服务器提供防火墙规则来实现,但是我不知道如何以编程方式修改Debian中的防火墙设置。 我希望能够指定端口只是为了将其locking更紧一点。

如果任何人有任何build议如何实现这一点,或者可以看到我做错了什么,那么请让我知道。

我认为这通常是通过使用iptables-restore工具完成的,该工具只是从文件中加载iptables规则。 然后协调员应该部署一个新版本的规则文件(通常是/etc/iptables.rules )并调用iptables-restore来加载它。

不要忘记在启动时加载防火墙,方法是创build一个if-pre-up.d脚本,如http://wiki.debian.org/iptables所述 。

一般来说,你应该从configuration服务开始,只监听本地主机(lo)接口,而不是任何公共路由接口(eth0)。 不过,将防火墙规则放在适当的位置还是个好主意。

在某些情况下,您希望允许configuration的服务在公共路由接口(例如eth0)上侦听,但只允许来自特定计算机的连接,如远程协调器。 您可以通过IP地址以编程的方式来实现,但是当您在某处添加新实例时,这可能会很不方便。

而不是处理维护基于IP的防火墙规则的麻烦,您可以使用fwknop来控制防火墙规则:单包授权和端口禁止 。 默认丢包过滤是低开销,并且工作非常简单,没有较less的端口震荡系统的复杂性。 为Debian安装它:

 sudo apt-get install fwknop-server fwknop-client 

考虑在服务器上运行Shorewall-lite,并从运行Shorewall的中央服务器控制防火墙configuration。 在标准发行版中都可以使用Debian软件包。

Shorewallconfiguration可以设置为使用通用文件进行共享configuration。 这将有助于跨服务器获得一致的configuration。