ファイル転送プロトコル(FTP)詳解
はじめに
ファイル転送プロトコル(FTP)は、
コンピュータネットワーク上でファイルの送受信を行うための標準プロトコルです。
インターネット黎明期から使用され、ウェブサイトの構築やファイル共有などに広く利用されてきました。しかし、セキュリティ上の脆弱性から、近年はより安全な代替プロトコルへの移行が進んでいます。本稿では、FTPの歴史、仕組み、セキュリティ上の問題点、そして代替プロトコルについて詳細に解説します。
1. FTPの歴史
FTPの原型となる仕様は1971年にRFC 114として公開されました。当初はTCP/IPの前身であるNCP上で動作していましたが、1980年代にはTCP/IPへの対応が完了し、現在広く知られるFTPの基盤が確立されました。その後も、
ファイアウォール対策のための「パッシブモード」の追加や、
IPv6への対応など、数々の改良が加えられてきました。
2. FTPの仕組み
FTPはクライアント・サーバモデルを採用しており、クライアントとサーバ間で制御接続とデータ転送接続の2つの接続を使用します。
制御接続: クライアントがサーバにコマンドを送信し、応答を受信するための接続です。ポート番号21を使用します。
データ転送接続: ファイルデータの送受信を行うための接続です。アクティブモードではサーバがポート20から接続し、パッシブモードではクライアントがサーバから指定されたポート番号に接続します。
接続モード: データ転送接続の確立方法によって、アクティブモードとパッシブモードの2種類があります。アクティブモードは、
ファイアウォールやNAT環境で接続できない場合があるため、パッシブモードが推奨されることが多いです。
データ表現: FTPでは、
ASCIIモード、
バイナリモード、
EBCDICモード、ローカルモードの4種類のデータ表現が利用できます。
バイナリモードは、あらゆる種類のファイルを扱う際に推奨されます。
データ転送モード: ストリームモード、ブロックモード、圧縮モードの3種類があります。圧縮モードは、FTPソフトウェアによっては実装されているものの、標準化はされていません。
3. セキュリティ上の問題点
FTPは、ユーザ名、パスワード、ファイルデータなど、全ての通信内容を暗号化せずに転送します。そのため、通信経路上でパケットを傍受されると、これらの情報が盗聴される危険性があります。この脆弱性から、総当たり攻撃、FTPバウンス攻撃、パケットキャプチャなどの攻撃を受けやすいため、セキュリティリスクが高いと言えます。
4. 代替プロトコル
FTPのセキュリティ上の脆弱性を克服するために、FTPS、SFTPなどの代替プロトコルが開発されました。
FTPS (FTP over SSL/TLS): FTP通信をSSL/TLSで暗号化する拡張版です。明示的FTPSと暗黙的FTPSの2種類があります。
SFTP (SSH File Transfer Protocol): SSHプロトコルを使用してファイル転送を行うプロトコルです。コマンドとデータの両方を暗号化し、高いセキュリティを実現します。
その他にも、SCP、rsyncなども安全なファイル転送手段として利用できます。
5. HTTPとの比較
HTTPはステートレスなプロトコルであるため、FTPのように制御接続とデータ転送接続を別々に維持する必要がありません。そのため、
ファイアウォールやNAT環境を通過しやすいという利点があります。また、HTTPは、一度の接続で複数のファイルの転送を行うこともできます。
6. Webブラウザの対応
かつては多くのWebブラウザがFTPクライアント機能を備えていましたが、セキュリティ上の懸念から、主要ブラウザはFTPサポートを廃止する傾向にあります。
7. まとめ
FTPは、ファイル転送に広く利用されてきたプロトコルですが、セキュリティ上の脆弱性が大きな問題となっています。そのため、新たなファイル転送を行う際には、FTPSやSFTPなど、セキュリティが強化された代替プロトコルを使用することが強く推奨されます。 セキュリティを確保した上で、ファイルの送受信を行うことが重要です。