我如何配置某种防火墙,只允许特定程序使用系统中的开放端口(最好是 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 产品捆绑在一起)设置规则。我个人认为这会更难管理。