FTP(ファイル転送プロトコル)の仕組みとセキュリティ、現代的な代替手段

ネットワークを通じてサーバーとクライアント間でファイルをやり取りするための標準的なルールがFTP(File Transfer Protocol)です。1971年にAbhay Bhushan氏によって設計されたこのプロトコルは、半世紀以上にわたりデジタルデータの転送を支えてきました。現代ではより安全な通信方式に移行していますが、その基礎的な設計思想は今なお多くのネットワーク技術に影響を与えています。

FTPの最大の特徴は、命令をやり取りする「制御コネクション」と、実際のデータを送受信する「データコネクション」という2つの独立した経路を使い分ける点にあります。

A model chart of how FTP works

Key Facts

  • 基本機能:サーバーとクライアント間でのファイル転送を実現するアプリケーション層のプロトコル。
  • 使用ポート:制御用としてポート21、データ転送用としてポート20を使用。
  • 動作モード:接続方式により「アクティブモード」と「パッシブモード」の2種類が存在する。
  • セキュリティ:標準のFTPは通信内容が暗号化されず、平文で送信されるため脆弱である。
  • 現代の傾向:セキュリティ上の理由から、多くのWebブラウザ(ChromeやFirefoxなど)でサポートが終了している。

FTPの通信メカニズムと接続モード

FTPは、クライアントからの指示を伝える制御チャネルと、ファイルの中身を流すデータチャネルを分離して運用します。このデータチャネルをどのように確立するかによって、以下の2つのモードに分かれます。

アクティブモード(Active Mode)

クライアントが自身の待機ポートをサーバーに伝え、サーバー側からクライアントへ接続しに行く方式です。サーバーはポート20を使用してデータ転送を開始します。

パッシブモード(Passive Mode)

クライアントがサーバーに対してパッシブ接続を要求し、サーバーが指定したポートへクライアント側から接続しに行く方式です。これは、クライアント側がファイアウォールやNAT(ネットワークアドレス変換)の背後にあり、外部からの接続を拒否する環境で非常に有効です。

Illustration of starting a passive connection using port 21

かつてはWebブラウザにFTPクライアント機能が組み込まれており、「ftp://」で始まるURLでサーバーの中身を閲覧できましたが、現在はセキュリティリスクの低減のため、主要なブラウザではこの機能が削除されています。

Google Chrome browser accessing an FTP server, showing the ftp:// in the URL bar

データ形式と転送の仕様

FTPでは、転送するファイルの性質に合わせて複数のデータタイプを使い分けます。代表的なものは以下の通りです。

  • ASCII(テキストモード):テキストファイル用。送信側と受信側の文字表現や改行コードを適切に変換して転送します。
  • イメージ(バイナリモード):画像や実行ファイルなど、データをバイト単位でそのまま転送します。現代のほとんどの転送で利用される形式です。
  • ローカル:かつての36ビットシステムなどの特殊な環境向けに設計された形式です。

また、ファイルの構造(ストリーム形式やレコード形式など)や、転送モード(ストリーム、ブロック、圧縮)といった詳細な設定も定義されていますが、現在の一般的な環境では「ストリーム形式(STRU F)」と「ストリームモード(MODE S)」が主流となっています。

A computer at Amundsen–Scott South Pole Station logging into an FTP server and transferring a file, in 1994

セキュリティ上の課題と現代的な解決策

標準的なFTPは設計が古く、ユーザー名やパスワード、転送データがすべて平文(クリアテキスト)で送信されます。そのため、パケットキャプチャによる盗聴や、ブルートフォース攻撃、なりすましなどのリスクにさらされています。

これらの問題を解決するために、現在は以下の代替プロトコルが推奨されています。

FTPS (FTP over SSL/TLS)

従来のFTPにSSL/TLS暗号化層を追加したものです。「AUTH TLS」コマンドを用いて明示的に暗号化を要求する方式などが定義されています。

SFTP (SSH File Transfer Protocol)

名前は似ていますが、FTPとは全く異なるプロトコルです。Secure Shell (SSH) をベースにしており、制御とデータの両方を単一の暗号化チャネルで転送するため、極めて安全です。

Primitive FTPd on Android, actively running an FTP and SFTP server

FTP仕様まとめ

FTPプロトコルの主要仕様一覧
項目 詳細
開発者 / 初出 Abhay Bhushan / 1971年 (RFC 114)
現在の標準仕様 RFC 959
OSI参照モデル アプリケーション層
制御ポート TCP 21
データポート TCP 20 (アクティブモード時)
主な代替手段 SFTP, FTPS

Frequently Asked Questions

FTPとSFTPの決定的な違いは何ですか?

最大の違いは暗号化の有無と仕組みです。FTPは平文で通信し、制御とデータの2つの接続を使いますが、SFTPはSSHを利用してすべての通信を暗号化し、単一の接続で完結させます。互換性はありません。

パッシブモードを使うべき理由は何ですか?

現代のネットワーク環境では、PCがルーターやファイアウォールの内側に配置されていることが一般的です。アクティブモードではサーバーからPCへの接続が必要になりますが、これはセキュリティ設定で遮断されることが多いため、PCからサーバーへ接続するパッシブモードが推奨されます。

なぜWebブラウザでFTPが使えなくなったのですか?

Google ChromeやFirefoxなどのブラウザがサポートを終了したのは、FTPが暗号化されていないためセキュリティ上のリスクが高く、より安全なSFTPやHTTPSによるファイル共有に取って代わられたためです。

匿名FTP(Anonymous FTP)とは何ですか?

特定の個人アカウントではなく、不特定多数のユーザーが公開ファイルにアクセスできるように設定されたFTPサーバーのことです。通常、ユーザー名に「anonymous」を入力して利用します。

FTPの応答コード(3桁の数字)にはどのような意味がありますか?

サーバーからの返答は3桁の数字で示されます。例えば「2」で始まるコードは成功(例:200 OK)、「4」や「5」で始まるものは失敗やエラーを意味します。2桁目の数字で、構文エラーか認証エラーかなどの詳細な分類がなされています。