用語辞典・通信プロトコル

FTPS

FTPSとは

FTPSは、FTP通信をTLSで保護するファイル転送方式です。FTP over TLS(エフティーピー・オーバー・ティーエルエス)が規格上の内容で、一般にFTPS(エフティーピーエス)またはFTP Secureと呼ばれます。

FTPのコマンド、応答、制御接続とデータ接続という構造を残し、それぞれへTLSを適用します。ファイル操作の意味はFTP、暗号化・完全性・証明書認証はTLSが担います。

FTPSでは制御接続を暗号化しただけで、別に開くデータ接続まで自動的に保護されたとは限りません。PROT設定と、各データ接続のTLS成立を確認します。

制御接続をTLSへ昇格して証明書を検証し、データ接続にも別のTLS保護を適用するパッシブポート範囲を通しながら、SFTPとは異なるプロトコルとして設定する
FTPSクライアントが制御接続をAUTH TLSで昇格し、証明書連鎖を確認してTLSトンネルを作り、保護設定後にファイアウォールの許可ポートを通るデータ接続にも別のTLSトンネルを作る一方、SSH上のSFTPを別方式として分離した図解
図1上下のトンネルは同じ鍵を使うという意味ではありません。制御接続と各データ接続は別のTLS接続として成立します。

Explicit FTPSは、通常のFTP接続をAUTH TLSで保護へ切り替える

ログイン情報を送る前にTLSを確立し、データ保護レベルを決めてから転送する各段階の成功応答とTLS状態を確認し、平文へ黙って戻さない
ConnectFTP制御接続

通常はTCPポート21へ接続し、サーバーの開始応答を受ける

AUTH TLSTLSへ昇格

認証情報を送る前にAUTH TLSを要求し、肯定後にハンドシェイクする

Verify証明書を検証

接続先名、有効期間、信頼の連鎖、秘密鍵所持の証明を確かめる

PBSZ保護バッファー値

TLS利用時はPBSZ 0を送り、RFC 4217の手順を満たす

PROT Pデータを非公開に

データ接続にもPrivate保護を要求し、TLSで一覧とファイルを守る

Transfer別TLS接続

パッシブ等でデータ接続を開き、TLS確立後に転送を開始する

図2PROT Cはデータ接続をClear、PROT PはPrivateにします。機密ファイルで意図せずPROT Cを許可しない設定が必要です。

ExplicitとImplicitは、TLSを開始する時点が違う

Explicit FTPS(エクスプリシット・エフティーピーエス/明示FTPS)は、FTP制御接続後にAUTH TLSコマンドを送り、TLSへ切り替えます。RFC 4217が定める中心方式で、通常のFTPと同じポート21を使い、サーバーがTLS必須なら平文ログインを拒否します。

Implicit FTPS(インプリシット・エフティーピーエス/暗黙FTPS)は、接続直後からTLSハンドシェイクを始める運用方式で、ポート990が一般的です。両者はクライアント設定で明確に選びます。「FTPS」という選択だけで自動判定させると、平文FTPへの誤接続や待ち状態を招きます。

証明書を検証しない暗号化は、なりすまし相手との安全な通路になり得る

クライアントは、接続設定のホスト名と証明書のSubject Alternative Name、有効期間、信頼の連鎖を検証します。IPアドレスで接続して証明書はホスト名用、という不一致を安易に無視しません。

自己署名証明書を使う閉域環境では、証明書または専用認証局を安全な別経路で配布し、指紋や発行元を固定します。初回に表示された証明書を無条件で信頼する方式では、最初から中間者がいる場合を防げません。

制御接続とデータ接続で、TLSセッションの扱いが異なる

制御接続はログイン中継続しますが、データ接続は一覧・転送ごとに新しく開きます。各データ接続でTLSハンドシェイクを行うため、接続数、CPU、証明書、セッション再開の挙動が転送性能へ影響します。

一部サーバーは、データ接続が制御接続と同じTLSセッションを再開することを、接続乗っ取り対策として要求します。クライアントとの相互運用差が出るため、単に証明書エラーだけでなく、再開要求・TLS版・接続ログを確認します。

暗号化された制御接続は、古いFTP検査機器からポート情報を隠す

通常FTPでは、NATやファイアウォールのFTP ALGがPORT・PASV応答を読み、動的にデータポートを開くことがあります。FTPSでは制御内容が暗号化されるため、途中機器は選ばれたポートを読めません。

サーバーのパッシブポート範囲を限定し、その範囲を明示的に許可します。NAT外側へ通知する公開アドレス、IPv4・IPv6、負荷分散時の転送先も合わせます。制御ポート、パッシブ範囲、接続方向、TLS終端を一枚の構成図で管理すると、開けすぎと転送失敗を同時に避けやすくなります。

SFTPは、SSH上の別プロトコルであり、FTPSの略し方ではない

SFTP(SSH File Transfer Protocol/エスエスエイチ・ファイル・トランスファー・プロトコル)はSSH接続上で動くファイル転送プロトコルです。通常一つのSSH接続を使い、FTPコマンドや別データ接続を使いません。

FTPS用の証明書とSFTP用のSSHホスト鍵、利用ポート、認証方式、ファイアウォール設定は互換ではありません。取引先の指定では「FTPを暗号化」ではなく、Explicit FTPS、Implicit FTPS、SFTPのどれかを名称・ポート・認証方式まで確認します。

TLSを現行設定にし、平文へのフォールバックを失敗として扱う

SSL 2.0・3.0や古いTLS版を無効にし、証明書署名、鍵長、暗号スイートを現行方針へ合わせます。FTP互換性のために「TLS失敗時は通常FTPで続ける」設定を許すと、攻撃者がTLS開始を妨害して認証情報を平文へ落とせます。

サーバー側でAUTH TLSを必須にし、USER・PASSをその前に受け付けず、データにはPROT Pを要求します。ログには合意TLS版、証明書、制御・データ保護、転送結果を残し、期限切れ前の更新を試験します。

仕様の確認資料:RFC 4217「Securing FTP with TLS」RFC 9846「TLS 1.3」RFC 8996「Deprecating TLS 1.0 and 1.1」

関連用語