按组限制 ssh 隧道端口访问

按组限制 ssh 隧道端口访问

我的理解是,当创建到远程计算机的 ssh 隧道时,该计算机上的端口将打开,任何人都可以使用并连接回我的本地计算机(而不仅仅是打开隧道的用户)。有没有办法将对远程计算机上打开的端口的访问限制为指定的 unix 组?我认为这可能可以通过 iptables 规则或其他 TCP/IP 端口限制来实现,但我并不完全确定。

谢谢

答案1

您可以使用 iptablesowner模块来匹配原始套接字的 UID 或 GID,但这仅适用于本地发起的数据包(即来自远程机器)。

% ssh -fNR 20022:localhost:22 localhost
% sudo iptables --append OUTPUT --destination 127.0.0.1 --protocol tcp --dport 20022 --match owner \! --uid-owner mgorven --jump REJECT
% sudo iptables -nvL OUTPUT
Chain OUTPUT (policy ACCEPT 40 packets, 6349 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            127.0.0.1            tcp dpt:20022 ! owner UID match 1000 reject-with icmp-port-unreachable
% telnet 127.0.0.1 20022
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
^]
telnet> Connection closed.
% sudo telnet 127.0.0.1 20022
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

相关内容