2 つの別々の NAT 間の SSH 接続のための SSH と PWNAT

2 つの別々の NAT 間の SSH 接続のための SSH と PWNAT

使用できますかプナット2 つの異なるファイアウォール/NAT の背後にある 2 台のマシン間で「ピアツーピア」SSH 接続を確立するには、SSH を使用する必要がありますか?

これが可能であれば、OpenSSH サーバーを実行している NAT 内の Linux マシンでこの機能を設定するために必要な手順は何ですか。また、別の NAT の背後にあるクライアントはどのように接続するのでしょうか。

また、これが可能であれば、この設定は大きなセキュリティ リスクになりますか? 任意の SSH クライアントが pwnat を実行しているサーバーに接続できるでしょうか?

答え1

はい。ネットワークが次のようになっているとします。

ネットワーク図

A から B に SSH で接続したいとします。B で sshd が実行されており、tcp://127.0.0.1:22 でリッスンしています。

B$ pwnat -s 0.0.0.0 2022 127.0.0.1:22

B の pwnat は現在 udp://0.0.0.0:2022 をリッスンしており、tcp://127.0.0.1:22 への接続を許可するように構成されています。また、定期的に ICMP エコー要求を 3.3.3.3 (ハードコードされた IP) に送信しています。

A$ pwnat -c 127.0.0.1 3022 104.16.111.208 2022 127.0.0.1 22

A 上の pwnat は現在 tcp://127.0.0.1:3022 をリッスンしています。

A の pwnat は、ペイロードが NAT B から送信される ICMP エコー要求と一致する ICMP 時間超過パケットを 104.16.111.208 に送信します。NAT B は、ペイロードが送信される ICMP エコー要求と一致することを確認し、ICMP 時間超過パケットを B に転送します。ICMP 時間超過パケットの IP ヘッダーには、送信元アドレスとして NAT A の IP 151.101.193.69 が含まれていることに注意してください。

B の pwnat は、送信元ポート 2022 で UDP パケットを udp://151.101.193.69:2022 に送信します。NAT B はテーブルにエントリを追加し、今後は udp://104.16.111.208:2022 の udp://151.101.193.69:2022 から受信したすべての UDP パケットを udp://192.168.2.10:2022 に転送します。多くのNATは外部インターフェースに異なるポートを割り当てることに注意してください。この場合、pwnatは動作しません

A の pwnat は、送信元ポート 2022 を使用して UDP パケットを udp://104.16.111.208:2022 に送信します。NAT A はテーブルにエントリを追加し、今後は udp://104.16.111.208:2022 から udp://151.101.193.69:2022 で受信したすべての UDP パケットを udp://192.168.1.10:2022 に転送します。

NAT A は B が送信した UDP パケットを受信し、それをテーブルで照合し、A に転送します。NAT B は A が送信した UDP パケットを受信し、それをテーブルで照合し、B に転送します。これで、A と B は UDP 経由で自由に通信できるようになります。

A$ ssh -p 3022 127.0.0.1

tcp://127.0.0.1:3022 をリッスンしている A の pwnat は、ssh からの接続を受け入れます。A の pwnat は、tcp://127.0.0.1:22 へのトンネルを開くために、B の pwnat に (UDP 経由で) 要求を送信します。B の pwnat が起動されたときに、これが許可されたホスト/ポートのペアとしてリストされていたため、接続が確立されます。これでトンネルが完成しました。

ssh on A --[tcp]--> pwnat on A --[udp]--> pwnat on B --[tcp]--> sshd on B

pwnat にバグがないのであれば、これはセキュリティの面では、NAT の背後にないサーバーで sshd を世界に公開することと変わりません。ただし、ソース コードをざっと見たところ、pwnat はハッキングされたような感じで、安全だとは期待できません。最悪のシナリオは、pwnat を実行しているユーザーとして A と B で任意のコードが実行されることです。

答え2

Pwnat は認証されていないようで、大きなセキュリティ リスクがあると考えられます。2 つの NAT/ファイアウォールのうち少なくとも 1 つを制御している場合は、ポート転送/変換を設定するだけで、より安全な設定になります。

関連情報