5

git-daemonに永続的なsshトンネルを通過させたいのですが。私はこの仕事を成し遂げました。GIT_DAEMONポート(私の場合は9418)へのトンネルされていないリモート接続をブロックするにはどうすればよいですか?

私はすでにiptablesで簡単なルールを試しました(localhostを除くすべてをブロックします):

$ iptables -A INPUT -p tcp -d ! localhost --destination-port 9418 -j DROP

ただし、トンネルもブロックします(送信元IPアドレスを保存するため)。ファイアウォール用のホストがもう1つある場合は、このポートへのリモート接続をブロックするだけで実行できますが、このジョブを実行するにはこのホストが必要です。

トンネルは、次の2つの方法のいずれかで作成されます。

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
4

2 に答える 2

7

git-daemonループバックインターフェイスにバインドするだけで、iptablesをまったく使用せずに実際にこれを実現できます。

git daemon --listen=127.0.0.1

これにより、ローカルホストからのみ接続可能になり、セットアップにroot権限は必要ありません。

于 2011-06-12T09:27:31.860 に答える
4

あなたはこれを試すかもしれません(テストされていません):

# accept localhost
iptables -A INPUT -p tcp -d localhost --destination-port 9418 -j ACCEPT

# send everyone else packing
iptables -A INPUT -p tcp --destination-port 9418 -j DROP

それを使用してiptables -L言う:

ACCEPT     tcp  --  anywhere             localhost.localdomain tcp dpt:git
DROP       tcp  --  anywhere             anywhere            tcp dpt:git

編集

これは(おそらく)トンネルの設定方法です:

ssh -N -i <key> -L 127.0.0.1:9418:127.0.0.1:9418 tunnel@192.168.1.69

後半は127.0.0.1通常のIPではなく重要です

于 2011-06-12T07:50:43.067 に答える