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