SSH Tectia

非透過的 FTP トンネリング

非透過的 FTP トンネリングは、一般的なトンネリング メカニズムを拡張したものです。一般的なトンネリング (ポート転送) メカニズムとは異なり、非透過的 FTP トンネリングでは、FTP コントロール チャネルに加えて、転送されるファイルもセキュアにします。FTP トンネリングのコードは、トンネルされた FTP コントロール チャネルを監視し、データ チャネルのための新しいトンネルを要求に従って動的に作成します。

非透過的 FTP トンネリングが使用されている場合は、ローカル クライアントのポートからリモート サーバまでのトンネルが作成されます。FTP クライアントは、SecureShell サーバが実行されているエンドポイントに接続を転送する SSH Tectia Client に接続するように設定されます。

標準的な利用方法では、SSH Tectia Client は FTP クライアントと同じホスト上に存在し、FTP サーバは SecureShell サーバと同じホスト上に存在します。他の設定もサポートされますが、接続が暗号化されるのは SSH Tectia Client と SecureShell サーバの間のみであることに注意する必要があります。

非透過的 FTP トンネリングは、コマンドラインで要求できます。または、Connection Broker の設定で有効にしたり、定義したりできます。設定された非透過的 FTP トンネリングは、SSH Tectia Client で定義されている接続プロファイルを使用します。

コマンドラインでは、FTP トンネリングはローカル トンネルとリモート トンネルの両方に使用できます。非透過的 FTP トンネリングは、sshg3 コマンドを以下の構文で入力することによって開始されます。

sshclient$ sshg3 -L ftp/1234:localhost:21 username@sshserver 

sshg3 コマンドについては、sshg3(1)の man ページを参照してください。

Windows では、Connection Broker 構成 GUI の [接続プロファイル] → [トンネル] で、プロファイルごとに FTP トンネリングの設定を作成できます。トンネリングの定義項を参照してください。

FTP トンネルは、Connection Broker の設定ファイルで接続プロファイルに対して定義することもできます。Connection Broker の設定ファイル ssh-broker-config.xml からの例を以下に示します。

<profiles>
  <profile id="id1" host="sshserver.example.com"
  ...
    <tunnels>
      <local-tunnel type="FTP" 
                    listen-port="1234"
                    dst-host="127.0.0.1"
                    dst-port="21"
                    allow-relay="NO" />
      ...  
    </tunnels>
  </profile>
</profiles>

次に、以下のコマンド例を使用して FTP 接続を作成できます。

sshclient$ ftp 
ftp$ open localhost 1234

これで、クライアント上のポート 1234 への FTP 接続が、SecureShell サーバ上のポート 21 にトンネルされました。

セキュアなファイル転送のために、FTP トンネリングの代わりに sftpg3 または scpg3 クライアントを使用できます。これらのクライアントは、コマンドラインまたはスクリプトで使用できます。さらに、SSH Tectia Server にはサブシステムとして sft-server-g3 がすでに存在し、SSH Tectia Client には sftpg3 および scpg3 クライアントが含まれているため、必要な設定が FTP トンネリングより少なくて済みます。サーバ マシン上でのリモート ユーザの制限の管理も、FTP については必要なくなるため、容易になります。

FTP トンネリングが実行される方法を正確に理解するには、FTP プロトコルのアクティブ モードとパッシブ モードという 2 つの異なる方式について理解する必要があります。

パッシブ モードでの FTP のトンネリング

パッシブ モードでは、FTP クライアントはコマンド PASV をサーバに送信します。これに対して、サーバはデータ チャネルのリスナー ポートを開き、そのリスナーの IP アドレスとポート番号を応答としてクライアントに送信します。この応答は、227 Entering Passive Mode (10,1,60,99,6,12) の形式です。

Connection Broker は、PASV コマンドに対する応答を認識すると、その応答で示されている接続先へのローカル ポート転送を作成します。この後、Connection Broker は応答にある IP アドレスとポートを新しく作成されたローカル ポート転送のリスナー (常に localhost アドレス 127.0.0.1 に存在します) を指すように書き換え、その応答を FTP クライアントに渡します。FTP クライアントは、この応答に基づいてデータ チャネルを開きます。それにより、SecureShell 接続を通して、FTP サーバが開いたリスナーにデータが効果的にトンネルされます。この結果、データ チャネルが、SecureShell サーバから FTP サーバまでの区間を除く (これらのサーバが異なるマシン上にある場合) すべての経路でセキュアになります。すべてのデータ チャネルに対して、この一連のイベントが自動的に実行されます。

トンネルは localhost アドレスに対して開かれるため、パッシブ モードを使用する場合は、FTP クライアントを SSH Tectia Client と同じマシン上で実行する必要があります。

アクティブ モードでの FTP のトンネリング

アクティブ モードでは、FTP クライアントは FTP サーバから FTP クライアントまでのデータ チャネル用のリスナーをローカル ポート上に作成し、その IP アドレスとポート番号を PORT 10,1,60,99,6,12 の形式のコマンドで FTP サーバに送信することによってチャネルを要求します。Connection Broker はこのコマンドを傍受し、SecureShell サーバの localhost アドレスから、PORT コマンドで指定されたアドレスとポートまでのリモート ポート転送を作成します。

トンネルを作成した後、Connection Broker は PORT コマンドにあるアドレスとポートを SecureShell サーバ上の新しく開かれたリモート転送を指すように書き換え、それを FTP サーバに送信します。ここで、FTP サーバは PORT コマンドにあるアドレスとポートへのデータ チャネルを開きます。これにより、SecureShell 接続を通して、データが効果的に転送されます。Connection Broker は、FTP クライアントによって作成された元のリスナーに受信データを渡します。この効果として、データ チャネルが、SSH Tectia Client から FTP クライアントまでの区間を除くすべての経路でセキュアになります。すべてのデータ チャネルに対して、この一連のイベントが自動的に実行されます。

トンネルは SSH Tectia Client マシン上の localhost アドレスに対して作成されるため、アクティブ モードを使用する場合は、FTP サーバを SecureShell サーバと同じホスト上で実行する必要があります。

FTP データ チャネルのエンドツーエンドの暗号化を希望する場合は、FTP サーバと SecureShell サーバが同じホスト上に存在する必要があります。また、FTP クライアントと SSH Tectia Client も同様に、同じホスト上に存在する必要があります。

[注意]注意

アクティブ モードでの FTP のトンネリングは、すべての構成で機能すると保証されているわけではありません。可能であれば、FTP 接続のトンネリング時はパッシブ モードを使用してください。