iptables 所有者匹配会丢弃 GID 的 icmp,但不会丢弃 UID 的 icmp

iptables 所有者匹配会丢弃 GID 的 icmp,但不会丢弃 UID 的 icmp

iptables我有一种无法解释或理解的奇怪行为。

我有一个用户test,它有自己的主要组test。我想阻止该用户的任何网络访问。

现在,如果我说

iptables -A OUTPUT -o eth0 -m owner --uid-owner test -j DROP

然后我su test得到以下信息:

ping serverfault.com       # WORKS
nmap -sP serverfault.com   # fails
wget serverfault.com       # fails

但是,如果我再次刷新 iptables,并改为:

iptables -A OUTPUT -o eth0 -m owner --gid-owner test -j DROP

(注意区别:gid而不是uid)然后我得到以下内容

ping serverfault.com       # fails
nmap -sP serverfault.com   # fails
wget serverfault.com       # fails

因此,正如您所看到的,规则似乎两次都匹配,但只有当我阻止主组时,ICMP 也会被阻止。这是一个错误还是这有什么我不知道的道理?

我的意思是,我可以简单地阻止两者并感到高兴,但我想了解为什么它们的行为不同。

我的iptables版本是v1.4.4

答案1

生成 icmp 需要对套接字进行原始访问,而这又需要 root 访问权限。因此,Ping 运行 suid,因此套接字所有者的 uid 是 root,而不是 test。

相关内容