![shorewall / iptables - 按用户限制出站端口](https://linux22.com/image/79179/shorewall%20%2F%20iptables%20-%20%E6%8C%89%E7%94%A8%E6%88%B7%E9%99%90%E5%88%B6%E5%87%BA%E7%AB%99%E7%AB%AF%E5%8F%A3.png)
我对某些用户和组进行了过滤;但是,它不适用于 SSH。对于 SSH,我指定 ssh 组的成员可以具有出站 SSH 流量。我对守护进程(DNS 和 privoxy)使用相同的语法,并且它们运行良好。
当我列出进程时,我确实看到 ssh 是由我自己运行的,那么为什么它不让我出去呢?
宏
?COMMENT SSH
PARAM - - tcp ssh - - - :ssh
iptables
ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 owner GID match 1006
1006是ssh组的groupid
我是 ssh 组的成员,我看到 iptables 将所有者 GID 与 ssh 的所有者 GID 相匹配。我可以这样做吗?这是出站,不是入站...
答案1
@DavidKing 在评论中已经回答了这个问题:iptables 检查的 GID 是指进程运行时所在的 GID。 Iptables 不会检查该进程的所有者是否是给定组的成员
如果你想保持设置不变,你必须使用特定的组 ID 运行 ssh:
sg ssh "ssh [email protected]"
这里的sg
命令用于更改运行命令的组(就像su
对用户执行的操作一样)。通过比较id和的输出可以看出它是如何工作的sg ssh id。人们会注意到 gid 的值会有所不同,而其他一切都保持不变。
组 ID 的整个主题在以下问题的答案中得到了很好的解释这个问题。