FTPとは? - ファイル転送の基本プロトコル
FTP (File Transfer Protocol) とは、ファイルを転送するための通信プロトコル。インターネットが普及し始めた頃から使われている、非常に基本的な仕組み。
FTPでファイルを転送する場合、ファイルを置いている側をFTPサーバー、ファイルの送受信する側をFTPクライアントと呼ぶ。
FTPサーバーには、誰でもアクセスできる公開された「Anonymous FTPサーバー」(主にダウンロード専用)と、特定のIDとパスワードで認証が必要なサーバーの2種類があります。
FTPのデメリットは、すべての通信が暗号化されないことである。
FTPの仕組み:2つのコネクション
データのやり取りには2つのコネクションを利用する。
-
コントロールコネクション (ポート21番)
- FTPサーバーとの間で、ログイン情報(ID/パスワード)の認証、ファイル一覧の取得、ディレクトリの移動、ファイル削除などのコマンドを制御するために使用される
- 常に開かれた状態を維持している
-
データコネクション
- ファイルデータの送受信に使用される
- ファイル転送時のみ一時的に確立され、転送が完了すると閉じられる
データコネクションの確立方法によって、FTP にはアクティブモードとパッシブモードという2つの動作モードが存在する。
FTPの動作モード
| 動作モード | データコネクションの接続要求 | サーバー側の使用ポート | クライアント側の使用ポート | ファイアウォール |
|---|---|---|---|---|
| アクティブ | サーバー→クライアント | 20番 | ランダム | クライアント側のファイアウォールでブロックされやすい |
| パッシブ | クライアント→サーバー | ランダム | ランダム | クライアント側のファイアウォールの影響を受けにくい |
-
アクティブモード
- FTPサーバーからFTPクライアントに対してデータコネクションの接続要求を行う
- クライアント側のファイアウォールが、サーバーからの予期せぬ接続要求をブロックしてしまうことが多く、接続が失敗する原因となる
-
パッシブモード
- FTPクライアントからFTPサーバーに対してデータコネクションの接続要求を行う
- クライアント側のファイアウォールの影響を受けにくいため、現代の FTP 接続ではこのパッシブモードが主流となっている
FTPSとは? - 暗号化されたFTP
FTPS (File Transfer Protocol over SSL/TLS) とは、FTPのセキュリティ上の脆弱性を克服するために、SSL/TLSという暗号化技術を追加したプロトコル。
暗号化の仕組み
FTPと同じく2つのコネクション(コントロールコネクションとデータコネクション)を使うが、これらのコネクション確立時に SSL/TLS 暗号化を行う。これにより、送受信されるファイルデータや認証情報が、すべて暗号化された状態でやり取りされる。
FTPS 接続を確立するためには、サーバー側に SSL/TLS 証明書が必要で、この証明書によってサーバーの身元が保証され、通信が暗号化される。
SSLとTLS
-
SSL (Secure Sockets Layer)
- ウェブブラウザとウェブサーバー間の通信を暗号化する仕組み。いくつかの脆弱性が見つかったため現在はほとんど使われていない
-
TLS (Transport Layer Security)
- SSL の脆弱性をカバーするために開発された後継プロトコル。現在はほとんどが TLS 1.2 や TLS 1.3 といった TLS のバージョンが使われている
SFTPとは
SFTP (SSH File Transfer Protocol) とは、これまでの FTP や FTPS とは根本的に異なるファイル転送プロトコルである。
SFTP は、リモートコンピューターと安全に通信するための SSH を利用してファイル転送を行う。
SFTPサーバーを用意する必要はなく、SSH を利用できる環境があれば良い。
SSHの仕組み
SSH (Secure Shell) とは、クライアントとサーバー間で安全な通信チャネルを確立するためのプロトコル。
データの暗号化、認証、改ざん防止の仕組みが最初から組み込まれており、主にリモートサーバーに安全にログインしてコマンドを実行するために使われるが、そのトンネルを利用してファイル転送も行うことができる。
SFTPの最大の強み:単一コネクションとセキュリティ
- 単一のコネクション
- FTP や FTPS のように制御用とデータ用の2つのコネクションを分けるのではなく、SSH のための単一のコネクションだけでファイル転送を行う
- 高いセキュリティ
- SSH の持つ強力な認証(パスワード認証や公開鍵認証)と通信全体の暗号化によって、高いセキュリティを確保できる
- シンプルなファイアウォール設定
- 使用するポートが基本的に一つだけのため、ファイアウォール設定がシンプルになり、接続トラブルの原因を減らせる
FTP・FTPS・SFTPの比較と選び方
| 項目 | FTP | FTPS | SFTP |
|---|---|---|---|
| 暗号化 | なし | あり (SSL/TLS) | あり (SSH) |
| 認証方式 | ID/パスワード | ID/パスワード | ID/パスワード、公開鍵認証 |
| コネクション数 | 2 (制御+データ) | 2 (制御+データ) | 1 (SSHトンネル) |
| 主なポート | 制御: 21, データ: 20(アクティブ) / ランダム(パッシブ) | 制御: 21, データ: ランダム | 22 |
| セキュリティ | 低 | 中 | 高 |
- 最も安全性を重視するなら:SFTP
- 新しいシステムや安全なファイル転送が必要な場合は、SFTP を選ぶと良い。認証と暗号化が強固であり、ファイアウォール設定もシンプル
- FTPの操作感で暗号化したい場合:FTPS
- 既存の FTP サーバーやクライアントを流用したいが、暗号化も必須という場合に選択肢となる。ただし、パッシブモードのポート開放など、SFTP より設定が複雑になる場合がある
- 非推奨:FTP
- 特殊なレガシーシステムとの連携など、やむを得ない場合を除いて、FTP の利用は避けた方が良い
まとめ
FTP、FTPS、SFTP は、それぞれ異なるレベルのセキュリティと仕組みを持つファイル転送プロトコルである。
- FTP は暗号化されず、セキュリティが低いため、現在では非推奨
- FTPS は FTP に SSL/TLS 暗号化を加えたもので、セキュリティを向上させる
- SFTP は SSH プロトコルを利用し、単一のコネクションで強力な暗号化と認証を提供し、現在は最も主流である