我有一台位于防火墙后面的 Arch Linux 机器。我可以为 ssh 端口打开端口转发。我想创建一个只能用于 socks 代理的用户。
ssh -N -D 5000 user@server -p9000
5000
将是用户用于 socks5 代理的本地端口
server:9000
是服务器的 ssh 端口(端口转发)
-N
表示不应打开终端。我将创建默认 shell 为 的用户/sbin/nologin
。
现在的问题是用户可以转发本地端口(-L8080:server2:80
),我想避免这种情况。
我还希望代理不代理与服务器内部网络中的任何内容的连接。
这是否能轻易实现?
还有其他陷阱需要考虑吗?
答案1
作为贾库杰提到,您可以使用选项来禁止转发。
按所有者限制出站流量
我还希望代理不代理与服务器内部网络中的任何内容的连接。
您可以使用 iptablesowner
模块允许规则中的特定组和用户出站OUTPUT
到特定位置(例如您的 ssh 网关服务器),但阻止其他所有内容。所有者模块可以根据 gid 或 uid 进行匹配。此方法也常与 Tor 结合使用。
您还可以使用此功能允许特定守护进程访问特定服务。例如,如果使用 ldap,则可以允许 ldap 服务帐户查询您的 ldap 服务器,而不查询其他任何内容。
如果以这种方式使用 iptables,您可能首先要允许(但记录)流量,以便了解哪些流量会被丢弃。
答案2
您可以在 中禁止本地转发sshd_config
,例如:
Match User your_user
AllowTcpForwarding no
PermitOpen none
它不应该影响动态转发/SOCKS代理。
我还希望代理不代理与服务器内部网络中的任何内容的连接。
这需要在 之外的其他地方进行设置ssh
。