我想让一个 git-daemon 通过一个永久的 ssh 隧道。我完成了这个任务。如何阻止任何远程非隧道连接到 GIT_DAEMON 端口(在我的例子中是 9418)?
我已经在 iptables 中尝试了简单的规则(阻止除 localhost 之外的所有内容):
$ iptables -A INPUT -p tcp -d ! localhost --destination-port 9418 -j DROP
但它也会阻塞隧道(因为它保存了源 IP 地址)。如果我有一台用于防火墙的主机,可以通过阻止与此端口的任何远程连接来简单地完成,但我需要这台主机来完成这项工作。
隧道以两种方式之一创建:
对于 Windows:
plink.exe -N -i <key> -L 127.0.0.1:9418:192.168.1.69:9418 tunnel@192.168.1.69
对于 Linux:
ssh -N -i <key> -L 127.0.0.1:9418:192.168.1.69:9418 tunnel@192.168.1.69
最佳答案
你实际上可以在不使用 iptables 的情况下实现这一点,只需将 git-daemon
绑定(bind)到环回接口(interface),例如。
git daemon --listen=127.0.0.1
这将使它只能从本地主机连接,并且不需要 root 权限来设置。
关于linux - 如何只允许隧道连接到端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320794/