我的用例是根据客户需求部署运行不同服务的arch-linux服务器。 这些服务是特定于应用程序运行的自定义端口,但是可以使用它的FTP,WEB和WEB SSL参数。 以任何组合。
对于每个服务我有一个自定义的软件包,安装该特定的服务,并使其变得简单,我希望该软件包还安装了一个iptables规则,使其有可能使用该服务。
所以,默认情况下,我想有一个规则,拒绝除了SSH以外的所有内容。 然后当我安装例如WEB软件包时,我想让那个软件包安装一个包含规则的文件来打开端口80. FTP的软件包端口是21等等。
但是,我只能看到iptables已经通过iptables-restore / save实用程序完全支持一个文件。
我可以写我自己的实用程序,读取几个文件,并手动与iptables进行交互。 但是我觉得这应该是一个“普通的”用例,而且这样的用途肯定存在。 但是,我的谷歌技能没有对我做任何好的时间:)
基本上我想要的是有一个文件夹,说/etc/iptables.d,我可以放置文件15-http,10-ftp,20-ssl。 根据文件名中的编号应用文件和规则。
你可以在你的设备上安装ufw 。 它支持通过configuration文件定义应用程序(您可以告诉它在文件中打开哪些端口),然后通过运行一个命令来启用它们(使防火墙考虑在内)。
使你的软件包依赖于ufw ,在/etc/ufw/applications.d放置一个文件,然后使用post-install hook运行ufw allow <app name>来启用这些规则。
Shorewall似乎是IPtables的一个先进的前端,我相信它会支持你正在做的事情。 我build议你看看它的文档,看看它是否会更好。