SFTP と FTPS と FTP の理解

公開: 2022-08-18

FTP またはファイル転送プロトコルは、さまざまなユース ケースで使用できる最も一般的なデータ転送方法の 1 つです。

FTP には、FTPS および SFTP と呼ばれるさまざまな安全なバリエーションがあり、動作方法に微妙な違いとそうでない違いがいくつか組み込まれています。 これらの違いは、データの交換方法、通信におけるセキュリティのレベルとタイプ、およびファイアウォールの考慮事項に関連しています。

これらのプロトコルがどのように機能するか、およびこれらの一般的な転送メカニズムの違いを理解すると、ニーズに最適なプロトコルを選択するのに役立ちます。

FTP

FTP は、もともと RFC 114 の下で提案された数十年前のファイル転送プロトコルです。これは後に RFC 959 として発展し、現在使用されている標準となっています。

FTP は、情報を交換するために 2 つのチャネルで動作します。1 つはコマンド用で、もう 1 つはデータ用です。 これには、FTP が機能するための 2 つのポート (コマンド チャネルとデータ チャネル) が必要です。

コマンド チャネルはポート 21 で動作し、クライアントからの接続を受け入れ、コマンドの受け渡しを処理します。 コマンド チャネルは、クライアントがQUITコマンドを送信するか、非アクティブまたはその他の考えられる理由によりサーバーが強制的に切断されるまで、FTP セッションの全期間にわたって開いたままになります。

データ チャネルは、サーバー (パッシブ モード) またはクライアント (アクティブ モード) でリッスンするオンデマンドの一時ポートを使用します。 このチャネルは、サーバーとクライアントの間でディレクトリ リストとファイル転送の形式で実際のデータを共有する役割を果たします。

コマンド チャネルとは異なり、データ チャネルはファイル転送の間だけ開いたままになり、終了するとすぐにデータ チャネルは閉じられます。 複数のファイルまたはディレクトリ リストを同時に転送するには、複数のデータ チャネル ポートが必要です。

FTP は、コマンド チャネルとデータ チャネルの両方が暗号化されていない形式で情報を転送するため、本質的に安全でないプロトコルです。

前述のように、FTP では、コマンド チャネル用にサーバー側のポート21/tcpでインバウンド接続が必要です。 パッシブ ポート範囲は、ファイル転送とディレクトリ リスト用に定義され、インバウンド接続を許可します。 この定義プロセスは、使用中の FTP サーバーによって異なる場合があります。 詳細については、そのドキュメントを参照してください。 クライアント側では、ポート21/tcpでのアウトバウンド接続を、サーバーで定義されたパッシブ ポート範囲と共に許可する必要があります。

FTP での認証

FTP 認証情報は、最初の接続確立時にコマンド チャネルを介して渡されます。 FTP では、認証にユーザー名とパスワードを使用できます。また、誰でもサーバーにログインしてアクセスできるように匿名にすることもできます。

アクティブおよびパッシブ FTP モード

FTP は、接続の設定にアクティブ モードまたはパッシブ モードのいずれかを使用します。

アクティブ モードでは、ユーザーは FTP クライアントのランダム ポートからサーバーの FTP ポート21/tcpに接続し、PORT コマンドを送信して、サーバーが接続するクライアント ポートを指定します。 このポートはデータ チャネルに使用されます。

次に、サーバーはポート20/tcpから、クライアントがPORTコマンドで指定したクライアント ポートに接続します。 このデータ チャネルは、サーバーとクライアント間のファイル転送に使用されます。

パッシブ モードでは、クライアントは FTP クライアントからのランダムなポートからサーバーのポート 21/tcp に接続し、PASV コマンドを送信します。 次にサーバーは、データ チャネルに使用するランダムなポートで応答します。 次に、クライアントは別のランダム ポートを使用して、前の手順でサーバーから応答されたポートに接続します。 このデータ チャネル接続は、サーバーとクライアント間のファイル転送に使用されます。

したがって、アクティブ モードでは、最初の接続要求はクライアントによって開始され、データ チャネル接続要求はサーバーによって開始されます。

一方、パッシブ モードでは、最初の接続要求と後続のデータ チャネル要求の両方が、クライアントによってサーバーに対して開始されます。 この微妙な違いは、インバウンド/アウトバウンド接続タイプの方向により、ファイアウォールが従来の FTP 要求を許可/ブロックする方法に影響を与えることがあります。

FTPS

暗号化されていないデータ転送とメインインザミドル攻撃を伴う FTP に伴うリスクを喜んで受け入れるとしても、業界の要件により、比較的安全な FTPS や SFTP などのより安全な代替手段を使用することが求められます。

1990 年、セキュリティ環境の変化に伴い、Netscape はネットワーク上の通信を保護するために SSL または Secure Sockets Layer (SSL、現在は TLS として知られている) プロトコルを作成しました。 FTPSまたはFile Transfer Protocol SecureになったFTPにSSLが適用されました。 FTPS または FTP/S は通常、ポート990/tcpで実行されますが、ポート 21/tcp でも見られます。 同様に、データ チャネルのポート989/tcpは、FTPS に使用される一般的なポートです。 コマンド ポートが21/tcpの場合、そのデータ ポートは20/tcpであると想定されます。

FTP と同様に、FTPS は通信にコマンド チャネルとデータ チャネルの 2 つのチャネルを使用します。 データ チャネルを FTPS で暗号化するか、コマンド チャネルとデータ チャネルの両方を暗号化してセキュリティを強化することができます。

FTP と同様に、FTPS もコマンド チャネルとデータ チャネルに複数のポートを使用します。 したがって、ポート21/tcpは、初期接続と認証情報の送信に使用されます。 後で、クライアントからのファイル転送またはディレクトリ リスト要求ごとにデータ チャネルを設定するために、異なるポートが必要になります。 したがって、FTP と同様に、ファイアウォールで許可されるポートの範囲が必要です。

FTPS での認証

FTPS の認証は、暗号化のためのサーバー証明書と共にユーザー名とパスワードを使用して機能します。 FTPS クライアントは、サーバーに接続するときに、サーバーの証明書が信頼されて接続を続行できるかどうかを確認します。 この証明書は、クライアントとサーバーから要求できます。

SFTP

FTP や FTPS とは異なり、SFTP (SSH ファイル転送プロトコル) は、SSH (またはセキュア シェル) 上に構築されたまったく異なるプロトコルです。 デフォルトでは、SFTP はポート 22/tcp で動作します。これは SSH と同じですが、サーバー上のカスタム フリー ポートを使用するように構成できます。

SFTP は、ファイルの送受信に SSH を使用する安全な FTP プロトコルです。 SSH は完全に暗号化されているため、SFTP はネットワーク経由でファイルを転送するための堅牢で安全な方法です。

SFTP は、FTP や FTPS とは異なり、単一の通信チャネルを使用してコマンドとデータ トラフィックを転送します。これらはすべて、初期認証とともに暗号化された形式で渡されます。

SFTP での認証

SFTP での認証は単純なユーザー名とパスワードを介して実行できますが、FTP とは異なり、認証の詳細を含むすべての情報がネットワーク上で暗号化されて渡されます。

SFTP は、SSH キー ペア、秘密キーと公開キーの組み合わせを使用した認証もサポートします。この場合、クライアントは指定されたユーザーに秘密キーを提供し、サーバーは認証を成功させるために対応する公開キーを持っている必要があります。 ユーザー名とパスワードの組み合わせを使用するよりも安全です。 SFTP サーバーで両方の方法が構成されている場合、パスワードと SSH キーを使用して同じユーザーを認証することができます。

概要

この記事では、さまざまな一般的なファイル転送プロトコル (FTP、FTPS、および SFTP) の基本的な機能を要約し、これらのプロトコルの微妙な違いと大きな違いを強調します。 機能する FTP/FTPS/SFTP サーバーをセットアップするためにファイアウォールで許可する必要があるポートをカバーすると同時に、FTPS や SFTP などのより安全なプロトコルに切り替える必要性も強調しています。

ここで FTP と言うときは、この記事で説明したすべてのプロトコルを指しています。 FTP である理由は何十年も前のものであり、より新しい安全なバージョンでさえ、日常使用のために指定された名前ではなく FTP と呼ばれることがあります。

また、最高の FTP サーバー ソフトウェアと FTP/SFTP クライアントについても知りたいと思われるかもしれません。