我的用例是部署 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 等,其中文件和规则根据文件名中的数字应用。
答案1
您可以安装ufw
在您的设备上。它支持通过配置文件定义应用程序(您在文件中告诉它要打开哪些端口),然后您可以通过运行命令启用它们(让防火墙考虑到这一点)。
让您的包依赖于ufw
,放入一个文件/etc/ufw/applications.d
,然后使用安装后钩子运行ufw allow <app name>
来启用规则。
Shorewall 似乎是 IPtables 的一个更高级的前端,我相信它会支持您要做的事情。我建议您查看其文档,看看它是否更合适。