4.

TCP/IPのFTP

編集

本稿は FTP (File Transfer Protocol) に関する記事です。クライアントとサーバ間でファイルを転送するためのプロトコルで、1970 年代に策定されて以来、長らくファイル転送の定番として使われてきました。

ただし、FTP は通信内容を暗号化しないため、現在は SFTP (SSH File Transfer Protocol)FTPS (FTP over TLS) への移行が推奨されています。

FTPの基本

項目内容
正式名File Transfer Protocol
RFCRFC 959 (1985年)
プロトコルTCP
標準ポート21 (制御)、20 (アクティブモードのデータ)
動作モデルクライアント/サーバー
認証ユーザ名/パスワード (平文)、Anonymous
セッション制御コネクション + データコネクション (別TCPセッション)

アクティブモードとパッシブモードの違い

モード動作向き
アクティブモードクライアントが待ち受け、サーバ→クライアントへデータ接続クライアント側にグローバルIP・受信可能ポートが必要。NAT 配下では失敗しやすい
パッシブモード (PASV)サーバが待ち受け、クライアント→サーバへデータ接続クライアントが NAT 配下でも動作。現在の主流

主なコマンド (FTPプロトコル)

コマンド用途
USER / PASSユーザ・パスワード認証
PWDカレントディレクトリ表示
CWDディレクトリ変更
LIST / NLSTファイル一覧
RETRファイルダウンロード
STORファイルアップロード
DELEファイル削除
MKD / RMDディレクトリ作成・削除
PASV / EPSVパッシブモードへ切替 (IPv4/IPv6)
TYPE A / TYPE IASCIIモード / Binaryモード
QUIT切断

FTP / FTPS / SFTP の違い

プロトコル暗号化ポート位置づけ
FTPなし (平文)21 / 20レガシー。本番運用での新規利用は非推奨
FTPS (FTP over TLS)TLS21 (Explicit) / 990 (Implicit)FTPに TLS を被せたもの。CA証明書が必要
SFTPSSH22名前は似ているが FTPとは別物SSH 上のファイル転送
HTTPSダウンロードTLS443Web経由配信。CDN との相性が良い

主なFTPクライアント

ソフトウェア環境備考
FileZillaWindows / Mac / LinuxOSS。FTP/FTPS/SFTP 対応
WinSCPWindowsFTP/FTPS/SFTP/SCP 対応
CyberduckMac / Windows多数プロトコル対応
OS標準 ftp コマンドLinux / Windows制限多。学習・スクリプト向け
curl / wgetLinux / WindowsFTP URL 直指定で取得可能

主なFTPサーバ

  • vsftpd — Linux で広く使われる軽量FTPサーバ。FTPS 対応
  • ProFTPD — 機能豊富、設定が Apache 風
  • Pure-FTPd — シンプルで管理しやすい
  • IIS FTP — Windows サーバ標準

セキュリティ上の注意

  • 平文 FTP は盗聴可能。ID・パスワード・ファイル内容がそのまま流れる
  • 外部公開する場合はFTPS または SFTP を必須化する
  • Anonymous FTP は限定された公開配布用途以外で使わない
  • パッシブモードのデータポート範囲をファイアウォールで穴あけする際は、可能な限り狭く設定
  • クライアント/サーバ共に古い実装はBuffer Overflow 等の既知脆弱性がある

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. HTTP
  2. HTTPS
  3. DNS
  4. FTP
  5. TFTP
  6. DHCP
  7. SMTP
  8. SNMP
  9. POP3
  10. Telnet
  11. NTP
  12. SSH