Amazon Linuxにvsftpをセットアップする方法

久々にAmazon EC2のAmazon Linuxにvsftpをセットアップしようとしたところ、手順を忘れかけていたのでメモを残しておく。

vsftpのセットアップ手順

Amazon Linuxへvsftpをセットアップするには、以下の手順に沿って行う。

  1. yumコマンドでvsftpをインストールする
  2. 使われていないポートを確認する
  3. vsftpを設定する
  4. ユーザを作成する
  5. vsftpの起動設定を行う
  6. vsftpを起動する
  7. Amazon EC2のSecurity Groupsを設定する

以下より、手順ごとに解説する。

yumコマンドでvsftpをインストールする

以下のコマンドを実行し、vsftpをインストールする。

sudo yum install vsftpd

使われていないポートを確認する

以下のコマンドを実行し,使われていないコマンドを確認する。

cat /proc/sys/net/ipv4/ip_local_port_range

以下のようなレスポンスが返ってきた場合,32768~61000までが空いていることが分かる。

32768 61000

vsftpを設定する

vsftp.confを編集する

以下のコマンドを実行し,vsftpの設定ファイルの編集を行う。

sudo vi /etc/vsftpd/vsftpd.conf

以下の表にvsftpd.confの変更内容を示す。

分類内容意味
修正anonymous_enable=NO匿名ユーザーのログインは許可しない。
修正dirmessage_enable=NOユーザが新しいディレクトリに初めて移動したとしてもメッセージは表示しない。
修正ascii_upload_enable=YESアスキーモードのアップロードを有効にする。
修正ascii_download_enable=YESアスキーモードのダウンロードを有効にする。
修正chroot_local_user=YESローカルユーザーのルートを各自のホームに変更する。
修正chroot_list_enable=YESchroot_listを有効にする。ファイルはデフォルト(chroot_list_file=/etc/vsftpd/chroot_list)になる。
修正tcp_wrappers=NOホストへのアクセスを制御しない。(EC2のSecurity Groupsで設定する方がよい)
修正connect_from_port_20=NOActiveFTPを無効にする。
修正xferlog_std_format=NOwu-ftpdではなく,vsftpdログ形式でログを記録する。
追加pasv_enable=YESPASV FTPを有効にする。
追加pasv_addr_resolve=YESPASVモード接続先IPアドレスをホスト名から取得する。
追加pasv_address=固定IPElestic IPを設定する。(インスタンスのPublic DNSを指定するとPASVモードでの接続はできない。バージョン2.0.4以降であれば、IPが固定でなくても pasv_addressにDDNSを書くことで動的なIPに対応できる。)
追加pasv_min_port=60001PASVモード接続時の最小ポート番号を設定する。(確認した空きポートの範囲で設定)
追加pasv_max_port=60010PASVモード接続時の最大ポート番号を設定する。(確認した空きポートの範囲で設定)
追加use_localtime=YESローカルタイムを使用する。(デフォルトはGMT)
追加force_dot_files=YES.(ドット)で始まるファイルを隠さない。
 

chroot_listを編集する

続いて,chroot_listファイルを作成し,ルートを変更しないユーザーを指定する。ここで指定されたユーザは,ルートディレクトリにアクセスできるようになるので,rootなど特別なユーザーのみ指定する。とりあえず,空にしておいても問題ない。

sudo vi /etc/vsftpd/chroot_list

ユーザを作成する

FTPサーバに接続するためのユーザを作成する。デフォルトのec2-userでは,FTPサーバへの接続を行うことができないので,FTPサーバ接続用のユーザを作成する必要が生じる。

ユーザを作成するには,以下のコマンドを入力する。

sudo adduser ユーザ名

ユーザにパスワードを設定するには,以下のコマンドを入力する。

sudo passwd ユーザ名

vsftpの起動設定を行う

vsftpの起動設定を行う。これを行うことでシステムを再起動した場合でも,自動的にvsftpが起動するようになる。

以下のコマンドでvsftpの起動設定を行う。

sudo chkconfig vsftpd on

以下のコマンドでvsftpdの起動設定を正常に行うことができたかを確認する。

sudo chkconfig

vsftpdの項目が以下のように表示されれば,設定が成功している。

vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

vsftpを起動する

以下のコマンドを入力し,vsftpを起動する。

sudo service vsftpd start

Amazon EC2のSecurity Groupsを設定する

vsftpはAmazon EC2のインスタンス上で稼働しているが,そのインスタンスが使用しているSecurity Groupの設定を変更する。Security Groupを選択して、21番ポート(FTPがデフォルトで使用)と、60001-60010番ポート(FTPのPASVモード時に使用)を外部からアクセスできるように設定する。

これでFTPの設定が一通り完了した。あとはFTP接続クライアントを用いて,接続の確認を行うことになる。

参考
道はなくても進むのだ: Amazon EC2 (Amazon Linux) での vsftpd インストールと設定