
NAT の背後にクラスター (現在 10 台のマシン) があります。プライベート ネットワークと通常の企業ネットワークの間には NAT ゲートウェイ/ジャンプ ホストがあります。
ユーザーはssh
ジャンプ ホストにアクセスし、NAT の背後にある他のマシンにアクセスできます。
NAT の背後にある Web インターフェイスをローカル マシンにトンネリングするのに役立つ簡単なスクリプトを提供したいと思います。
そこで私が最初に提案したのは、SSH ソックス プロキシを使用して、インターフェイスをローカルホストにトンネルするというものでした。
そこで質問なのですが、これら 2 つのトンネル (同僚のローカル コンピューターからジャンプ ホストへのトンネルと、ジャンプ ホストから NAT の背後にある対応するマシンへのトンネル) を作成した場合、このトンネルはどの程度安全でしょうか。
どれがこれを実行しているかを想像してくださいworker1
:
ssh -t [email protected] -L 10001:localhost:33388 ssh -t hostxyz.behindnat.tld
ループバック インターフェイスをリッスンしているジャンプ ホスト マシンには、開いているポート 33388 があります。worker2
ジャンプ ホストにログインし、すでにトンネル化された接続にもローカルホストのポート 33388 を使用する場合、 に対して再度認証する必要はありhostxyz.behindnat.tld
ません。
これは大きなセキュリティ上の欠陥のように思えますが、もっと良い解決策はあるでしょうか?
答え1
あなたのシナリオは、jumphost と hostxyz の間に既存の ssh セッションが存在し、jumphost のリスニング ポートにアクセスできるすべてのユーザーに公開されていることを前提としています。
靴下とトンネルについて言及しましたが、技術的にはこの 2 つは異なります。
次のようにworker1のSOCKSプロキシを設定します。
ssh [email protected] -D 127.0.0.1:10001
ワーカー1のブラウザをSOCKSを使用してlocalhost:10001
jumphost.tld経由でブラウズするように設定する
worker1 から hostxyz に直接 ssh したい場合は、次のようにします。
ssh [email protected] -L localhost:10001:hostxyz:22
ssh user@localhost:10001
これが私がやっていることです。すべてを整理するために .ssh/config ファイルを使用します。構成ファイルとトンネリングに関する情報については、以下を読むことをお勧めします。ssh_config は、以下の URL からダウンロードできます。他の優れた入門書として、Michael W Lucas による openssh に関する講演をご覧ください。