gpt4 book ai didi

firewall - iptables --gid-owner 仅适用于用户的主组

转载 作者:行者123 更新时间:2023-12-04 19:11:36 26 4
gpt4 key购买 nike

我正在尝试禁用除“neta”组成员之外的所有用户对 IP 1.2.3.4 的访问。这是我专门为此创建的一个新组。

iptables -I OUTPUT -o eth0 -p tcp -d 1.2.3.4 -m owner ! --gid-owner neta -j REJECT

这将禁止所有用户访问 1.2.3.4,即使他们是“neta”组的成员。

我有一个用户 xx,他是 xx(主组)和 neta 组的成员。如果我将规则更改为:
iptables -I OUTPUT -o eth0 -p tcp -d 1.2.3.4 -m owner \! --gid-owner xx -j REJECT

除了用户 xx 之外的所有人都无法访问 1.2.3.4。

我将 root 添加到这个组 xx:
usermod -a -G xx root

但是 root 仍然无法访问这个 IP。如果我将主用户的组(root,xx)添加到规则中,一切都按预期工作。

我试着把它分成两个规则来确定(并拒绝日志):
iptables -A OUTPUT -o eth0 -p tcp -d 1.2.3.4 -m owner --gid-owner neta -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -d 1.2.3.4 -m limit --limit 2/s --limit-burst 10 -j LOG
iptables -A OUTPUT -o eth0 -p tcp -d 1.2.3.4 -j REJECT

但没有区别。一切都在被拒绝。

没有其他 iptables 规则。
root@vm1:~# iptables -nvL
Chain INPUT (policy ACCEPT 19 packets, 1420 bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 10 packets, 1720 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * eth0 0.0.0.0/0 1.2.3.4 owner GID match 1001
0 0 LOG tcp -- * eth0 0.0.0.0/0 1.2.3.4 limit: avg 2/sec burst 10 LOG flags 0 level 4
0 0 REJECT tcp -- * eth0 0.0.0.0/0 1.2.3.4 reject-with icmp-port-unreachable

我希望能够(禁止)通过从这个“neta”组中添加/删除用户而不是为每个用户添加 iptables 规则来允许访问这个 IP。

最佳答案

好吧,老实说,我对 linux 和 iptables 知之甚少,以确保我的理论,但因为我想对 VPN 做同样的事情,所以我们走了。

我假设匹配是使用数据包源自的进程完成的,并且 linux 进程不会分配用户的所有组,而是一个进程以一个 uid 和一个 gid 运行。

这意味着您必须使用此特定组显式执行命令,否则将使用用户的默认组执行命令/进程。

写到这里我有了一个想法,看看是否有这种可能性。
我使用组 VPN 限制了对某个 IP 范围的访问。这从来没有奏效。现在我使用以下命令进行了测试,并且可以正常工作:

sg vpn -c "ssh user@10.15.1.1"

所以我希望我的理论是正确的。

关于firewall - iptables --gid-owner 仅适用于用户的主组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com