SSHトンネリングとポートフォワーディングの手法
ローカル、リモート、ダイナミックポートフォワーディングを習得し、正当な用途とセキュリティ上の注意が必要な用途を理解します。
「SSHトンネリングとポートフォワーディングの手法」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。
ローカルポートフォワーディングの概念
ローカルポートフォワーディング(ssh -L local_port:destination_host:destination_port user@ssh_server)は、ローカルマシン上のポートをバインドします。そのローカルポートに送られたトラフィックは、暗号化されたSSH接続を通ってSSHサーバーへ移動し、SSHサーバーが送信先へ接続します。ローカルアプリケーションはlocalhostと通信するだけで、SSHがトラフィックをリモートの送信先へ安全に届けます。
ローカルフォワーディングの使用例:データベースへのアクセス
ローカルポートフォワーディングの一般的な使用例は、ファイアウォールの内側にある内部データベースへアクセスすることです。ssh -L 5432:db.internal:5432 user@bastionを実行すると、ローカルのPostgreSQLクライアントはlocalhost:5432に接続します。踏み台ホストがこのトラフィックを内部データベースサーバーへ転送するため、インターネットから直接到達できないデータベースにもアクセスできます。
リモートポートフォワーディングの概念
リモートポートフォワーディング(ssh -R remote_port:local_host:local_port user@ssh_server)は、リモートのSSHサーバー上のポートをバインドします。外部クライアントがそのリモートポートに接続すると、トラフィックはSSHトンネルを通ってローカルマシンへ戻ります。これにより、インターネットに接続されたサーバーを介して、ローカルで実行中のサービスを外部に公開できます。
リモートフォワーディングの使用例:NATの内側
リモートフォワーディングは、マシンがNATの内側にあり、着信接続を直接受けられない場合に特に便利です。パブリックサーバーへのリバーストンネルを作成すると、外部クライアントがそのパブリックサーバーを経由してローカルサービスに到達できるようになります。この手法は、一部のリモートアクセスツールやIoTデバイス管理システムでも使用されています。
動的ポートフォワーディング:SOCKS5プロキシ
動的ポートフォワーディング(ssh -D local_port user@ssh_server)は、ローカルマシン上にSOCKS5プロキシを作成します。SOCKS5に対応したアプリケーションは、このプロキシを通じてトラフィックをルーティングできます。トラフィックはSSHサーバーから発信されたように見えます。これにより、閲覧トラフィックをリモートネットワーク経由で実質的にルーティングできるため、地域制限されたリソースへのアクセスや、ローカルネットワークのフィルターの回避に役立ちます。
リバーストンネルとセキュリティ上の影響
リバーストンネルは強力ですが、セキュリティリスクも生じます。サーバーでGatewayPortsが許可されている場合、リモート転送ポートはlocalhostだけでなくパブリックインターネットからもアクセス可能になります。リバーストンネルが設定されたマシンが侵害されると、攻撃者が内部サービスへ到達できる可能性があります。組織では、不正なリバーストンネルを監視し、SSH設定でGatewayPortsを制限する必要があります。
SSHサーバーのトンネル制御
SSHサーバーの設定によって、トンネリング機能を制御できます。AllowTcpForwardingは、ローカルおよびリモートのポートフォワーディングを許可するかどうかを制御します。AllowStreamLocalForwardingは、Unixソケットの転送を制御します。これらをnoに設定すると、すべてのユーザーでトンネリングが無効になります。また、ユーザー単位またはグループ単位で制限することもできます。不要なフォワーディングを無効にすると、攻撃対象領域を縮小できます。
tunデバイスを使ったVPNとしてのSSH
SSHは、完全なIPトンネリングのためにtunネットワークインターフェースを作成できます(ssh -w)。これにより、特定のTCP接続だけでなく、IPパケット全体をトンネルする軽量なVPNとしてSSHを利用できます。サーバーではPermitTunnelを有効にする必要があります。専用のVPNソフトウェアより効率は劣りますが、追加のソフトウェアが不要で、既存のSSHインフラストラクチャを活用できます。
接続の多重化
SSH接続の多重化(ControlMasterおよびControlPath設定)では、既存のSSH接続を新しいセッションで再利用します。これにより、同じホストへの2回目以降の接続が大幅に高速化されるため、スクリプト環境で特に有用です。共有接続を使用すると、複数のSSHセッションにわたってトンネルを維持することもできます。
SSHトンネルの検出
ネットワーク管理者は、通常とは異なるトラフィックパターンからSSHトンネルを検出できます。たとえば、ポート22で長時間維持されるTCP接続、端末トラフィックだけを運ぶはずの接続としては予想外に多いデータ量、接続確立後に機微な情報を扱うことで知られる宛先への接続などです。ディープパケットインスペクションではSSHの内容を確認できませんが、メタデータ分析によって不審なトンネルの挙動を検出できます。
トンネル設定のベストプラクティス
許可された用途で使用する場合は、すべてのトンネルとその目的を文書化してください。不要なシェルを開かないよう、トンネルでは -N(コマンドなし)を使用し、端末をブロックせずに実行するには -f(バックグラウンド)を使用してください。永続的なトンネルには、接続が切断されたときに自動的にトンネルを再起動するAutoSSHまたはsystemdのソケットアクティベーションを使用してください。
ローカルポートフォワーディングとリモートポートフォワーディング
ポート3000で動作しているローカルの開発サーバーを、パブリックなSSHサーバー経由でインターネットに公開したいとします。どのフォワーディング方式を使用すべきですか?
SSHトンネリングの復習
SSHトンネリングの復習です。ローカルフォワーディング(-L)はマシンから内部サービスへ安全にアクセスし、リモートフォワーディング(-R)はパブリックサーバー経由でローカルサービスを公開します。動的フォワーディング(-D)はアプリケーションレベルのトラフィックルーティング用にSOCKS5プロキシを作成し、tunフォワーディングは完全なIP VPNを有効にします。サーバーのAllowTcpForwardingは、これらの機能を制御します。
AI チューターと学ぶ Cryptology Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 67
- レッスン
- 261
よくある質問
「SSHトンネリングとポートフォワーディングの手法」レッスンは無料ですか?
はい。「SSHトンネリングとポートフォワーディングの手法」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。
「SSHトンネリングとポートフォワーディングの手法」で何を学びますか?
ローカル、リモート、ダイナミックポートフォワーディングを習得し、正当な用途とセキュリティ上の注意が必要な用途を理解します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cryptology Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「SSHトンネリングとポートフォワーディングの手法」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCryptology Academyレッスンでコードを書いて実行できますか?
はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- SSHハンドシェイクとホスト鍵認証
- 公開鍵認証とエージェントフォワーディング
- SSHトンネリングとポートフォワーディングの手法
- SSHのハードニングと監査のベストプラクティス