我想让git-daemon通过一个永久的ssh隧道。我完成了这项任务。如何阻止任何远程未连接到GIT_DAEMON端口(在我的情况下为9418)?如何只允许隧道连接到端口?
我已经在iptables的尝试简单的规则(阻止除本地主机的所有内容):
$ 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 [email protected]
对于Linux:
ssh -N -i <key> -L 127.0.0.1:9418:192.168.1.69:9418 [email protected]
现在它的测试,但不是太有帮助,它提供了相同的效果,作为规则在一个问题:( – kravitz 2011-06-12 08:09:32
@kravitz你能解释一下更好的交通路径应该是什么? – cnicutar 2011-06-12 08:10:26
@cnicutar肯定,假设我们有三个主机:A,B,C。主机A有一个运行的git-daemon,主机B想要与A进行通信(推/拉请求),主机C不应该能够在A访问git-daemon。我模拟所以B创建本地隧道到A(9418端口到9418,在-L openssh中有-L选项),这意味着B发送到本地9418端口的所有内容都通过ssh(22端口)并发生在A的9418我需要一个过滤机制,这将阻止连接到A:9418,除了隧道之外的任何东西。 – kravitz 2011-06-12 08:18:08