FTP (File Transfer Protocol) はインターネットにおける最初のプロトコルの 1 つです (RFC 959 は 1985 年に発行されました!)。FTP はウェブが生まれる前にファイルを配布するために使われました (HTTP プロトコルは 1990 年に作られ、1996 年の RFC 1945 でバージョン 1.0 が正式に定義されました)。
FTP を使うことで、ファイルのアップロードとダウンロードが可能です。そしてこの理由から、現在でもインターネットサービスプロバイダによってホストされているウェブサイトの更新 (およびウェブサイトを構成する要素) を配置するために広く使われています。この場合、ユーザ識別子とパスワードを使って安全なアクセスが強制されます。そして認証に成功したら、FTP サーバはそのユーザのホームディレクトリに対する読み書きアクセスを許可します。
他の FTP サーバは主に、一般のユーザがダウンロードできる、ファイルを配布するために使われます。そしてこれの良い例が Debian パッケージです。サーバの内容は別の、地理的に離れている、サーバから取得されます。そしてサーバの近郊にいるユーザに向けて内容を提供します。これはクライアント認証が不要になることを意味します。結果的に、この挙動は「匿名 FTP」として知られています。完全に正しく言えば、クライアントは匿名の
ユーザ名で認証します。そしてパスワードは、慣例的に、ユーザの電子メールアドレスですが、サーバはこれを無視します。
Debian では、多くの FTP サーバ (ftpd、proftpd-basic、pyftpd など) が利用できます。Falcot Corp の管理者は vsftpd を選びました。なぜなら、管理者だけがいくつかのファイルを配布する (Debian パッケージリポジトリ用) ために FTP サーバを使うからです。さらに、管理者は高度な機能を必要としておらず、セキュリティの観点を重視しているからです。
vsftpd パッケージをインストールすると、ftp
システムユーザが作成されます。このアカウントは匿名 FTP 接続の際に常に使われるものです。FTP サービスに接続するユーザは ftp
システムユーザアカウントのホームディレクトリ (/srv/ftp/
) を利用できます。巨大なファイルを公開ダウンロード可能にするという単純な要求を満足させるにはデフォルト設定 (/etc/vsftpd.conf
) に変更を加える必要があります。つまり、匿名アクセスを有効化し (anonymous_enable=YES
)、ローカルユーザの読み込み専用アクセスを無効化する (local_enable=NO
) 必要があります。ローカルユーザの読み込み専用アクセスを無効化するのは特に重要です。なぜなら FTP プロトコルはいかなる種類の暗号化も行わないため、デフォルト設定のままではネットワーク越しにユーザパスワードを横取りされる可能性があるからです。