プロキシ IP を使用したポート転送

プロキシ IP を使用したポート転送

パブリック IP を使用して SSH 経由でマシンにリモート アクセスしようとしています。

これを行う通常の方法は、ルーターでポート転送を許可してから、次の操作を実行することです。ssh ubuntu@myPublicIpただし、私の ISP は CGNAT を使用しているため、割り当てられたパブリック IP でポート転送を行うことはできません。そのため、AWS インスタンスで tinyproxy を使用して、ローカル マシンをプロキシ IP アドレスに接続しました。

つまり、ローカル マシンから行うすべてのリクエストは、プロキシ IP を経由します。これで、パブリック IP がプロキシ IP に置き換えられます。私の質問は、プロキシが有効になっているローカル Linux マシンでポート転送を設定して、次のように ssh を使用してリモートでマシンに接続できるようにするにはどうすればよいかということですssh ubuntu@myProxyIp

答え1

NAT/ファイアウォールなどの背後にあるマシンにアクセスするには、そのマシンがパブリック ネットワークへの送信接続とパブリック ネットワーク内のインスタンスへの SSH アクセスを実行できること以外は何も必要ありません。

NAT の背後にあるマシンの設定は、リバース ポート転送を有効にしてアウトバウンド SSH 接続を確実に確立するためのものです。

ssh -R:60000:127.0.0.1:22 [email protected]

[email protected]は、アクセスできるパブリック ネットワーク内のインスタンスのアカウントとアドレスです。このコマンドは基本的に、次のことを意味します。ユーザーを使用して への SSH 接続を確立し、認証friendly.domain.tldjoeて、リモート エンドのローカル TCP ポート 22 を TCP ポート 60000 として公開します。SSH サーバー ソフトウェアが十分に新しい場合 (および構成で許可されている場合)、ローカル転送ポートを のインターネット向け IP アドレスに直接マップすることもできますがfriendly.domain.tld、ここではそのような構成は許可されていないと想定しています。

これで、マシンが送信リンクを確立したので、どこからでも接続するために必要なことは、friendly.domain.tldSSH 接続で をプロキシとして使用することだけです。そのためには、2 つのターミナル ウィンドウを開く必要があります。最初のウィンドウは、インスタンスとのリンクを確立して、friendly.domain.tld公開されている TCP ポート 60000 をローカル マシンにポート転送するために使用されます。

ssh -L60000:127.0.0.1:60000 [email protected]

これにより、ループバック インターフェイスの TCP ポート 60000 が、friendly.domain.tldssh コマンドを実行しているインスタンスのループバック インターフェイスにマッピングされます。

この時点から、次のコマンドを使用するだけで、NAT の背後にあるマシンに接続できます。

ssh -p60000 my_account@localhost

my_accountNAT の背後にあるマシン上のアカウントはどこにありますか。

全体として、3 つの SSH トンネルが使用されています。

machine_behind_nat <=1=> friendly_instance <=2=> your_laptop
            <=================3==================>

このような設定の理由は、「friendly_instance」が侵入されても、NAT の背後にあるマシンとの通信が危険にさらされないようにするためです (ループバック インターフェイス経由でバイトを転送すること以外は、「friendly_instance」を信頼していません)。トンネル #1 と #2 を通過するトンネル #3 では、エンドツーエンドの暗号化を使用しています。

私はカバーした私のブログのこの設定ssh で実行できる背景情報やその他のトリックを少し知りたい場合。

答え2

実際にポート転送する必要があるものに応じて、ssh を使用して動的なリバース ポート転送を行うことができます。

ポート22のみをプロキシする必要がある場合:

ssh -R 22:0.0.0.0:2222 user@remote_server

次に、ローカル マシンで ssh を実行します。

ssh -p 2222 localuser@ProxyIP

動的に転送する場合:

ssh -R 0.0.0.0:2222 user @remote_server

プロキシ チェーンを使用すると、ローカル ネットワーク上のあらゆるものにアクセスできます。SOCKS プロキシのリモート IP とポートを知っている人なら誰でもローカル ネットワークにアクセスできることに注意してください。アクセスできるユーザーを制限するために、ファイアウォールを実装することをお勧めします。

これについて語っている良い記事がこちらにあります:https://posts.specterops.io/offensive-security-guide-to-ssh-tunnels-and-proxies-b525cbd4d4c6

関連情報