NATの背後にはクラスタ(現在10台のマシン)があります。プライベートネットワークと一般企業ネットワークの間には、NATゲートウェイ/ジャンプホストがあります。
ユーザーはssh
ホストにジャンプし、NATの背後にある他のコンピュータにアクセスできます。
私は、NATの背後にあるWebインターフェースをローカルシステムにトンネリングするのに役立つ簡単なスクリプトを提供したいと思いました。
だから私の最初の提案はSSHocksプロキシを使用し、インターフェイスをlocalhostにトンネリングすることです。
だから私の質問は:この2つのトンネル(同僚のローカルコンピュータからジャンプホストに1つ、ジャンプホストからNATの背後にあるそのコンピュータに1つ)を作成する場合、このトンネルはどのくらい安全ですか?
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つの靴下とトンネルに言及しました。
ワーカー1のソックスプロキシを次のように設定します。
ssh [email protected] -D 127.0.0.1:10001
localhost:10001
jumphost.tldに移動するためにソックスを使用するようにワーカー1のブラウザを設定します。
Worker1 から Hostxyz に直接 SSH を実行するには、次のようにします。
ssh [email protected] -L localhost:10001:hostxyz:22
ssh user@localhost:10001
これが私がすることです。私は.ssh/configファイルを使ってすべてをクリーンアップします。設定ファイルとトンネルに関する情報については、以下をお読みください。https://man.openbsd.org/ssh_config別の素晴らしい紹介については、opensshに関するMichael W Lucasの講演をご覧ください。