如何在 Linux 上配置特定于服务的防火墙?

如何在 Linux 上配置特定于服务的防火墙?

我如何配置某种防火墙,只允许特定程序使用系统中的开放端口(最好是 RHEL)?

例如,如果我希望yum能够正常连接和更新,但我想阻止浏览等出站 Web 请求,我仍然需要打开端口 80、443、53 和 UDP-53。

但是,我需要防火墙能够区分yum网络浏览器。

答案1

iptables有能力检查程序的用户。

使用--uid-owner--gid-owner标志,您可以将网络限制为仅限指定用户(root?),并且您的网络服务器(可能以 身份运行www-data)数据包将被丢弃。

当然,这是针对每个用户/组的限制,而不是针对每个程序的限制,但当今大多数服务都由自己的用户和组运行。

例子:

iptables -I OUTPUT -m owner --uid-owner www-data -jDROP

限制除 root 之外任何人的出站网络的示例:

iptables -P OUTPUT DROP
iptables -I OUTPUT -m owner --uid-owner root -jALLOW

另一种方法是使用SELinux(通常与 RedHat 产品捆绑在一起)设置规则。我个人认为这会更难管理。

相关内容