告诉 socat 监听来自单个 IP 地址的连接

告诉 socat 监听来自单个 IP 地址的连接
socat TCP-LISTEN:22,fork TCP:192.168.0.15:5900

我如何告诉 to socat,端口 22 仅受远程 IP 地址 8.8.8.8 的信任,并且不应接受来自其他 IP 地址的连接?这是在 Linux 服务器上。

答案1

您可以将range选项添加到 socat 监听地址:

socat TCP-LISTEN:22,fork,range=8.8.8.8/32 TCP:192.168.0.15:5900

或者您可以添加tcpwrap=vnc_forward选项并为其定义全局规则vnc_forward服务按照主机访问(5)

这不会阻止连接到达socat,但socat如果它们不是来自 8.8.8.8,则会忽略它们(并发出警告)。

答案2

像这样的东西对我有用,让 socat 仅在本地主机上监听。

socat TCP-LISTEN:22,fork,bind=127.0.0.1 TCP:192.168.0.15:5900

所以你可以试试这个。

socat TCP-LISTEN:22,fork,bind=8.8.8.8 TCP:192.168.0.15:5900

答案3

大多数人为此使用防火墙。看一下iptables限制端口 22 的流量,即:

iptables -I INPUT -p tcp '!' -s 8.8.8.8 --dport 22 -j REJECT

或者,如果防火墙已经受到限制,则仅允许一个地址:

iptables -A INPUT -p tcp -s 8.8.8.8 --dport 22 -j ACCEPT

请注意,这不是 iptables 防火墙的完整配置,在使用上述配置之前,您首先需要设置正确的配置。

答案4

如果您的主要目标是安全并且您控制客户端计算机,那么通过 SSL 隧道连接到 socat 服务器是更安全的选择,使服务器在接受连接之前验证客户端证书。

我最近经历了这个尝试确保协同客户端/服务器设置的安全。

本教程清楚地解释了设置

http://www.dest-unreach.org/socat/doc/socat-openssltunnel.html

我发现的一个与说明不同的是,由于 logjam 补丁,您的客户端 SSL 库应该默认拒绝服务器密钥

将以下内容附加到服务器 PEM 使一切正常

openssl dhparam 2048 >> "$FILENAME".pem

当通过基于 IP 的身份验证来验证主机时,这种基于密钥的交换机制更加权威。

相关内容