久々にAmazon EC2のAmazon Linuxにvsftpをセットアップしようとしたところ、手順を忘れかけていたのでメモを残しておく。
vsftpのセットアップ手順
Amazon Linuxへvsftpをセットアップするには、以下の手順に沿って行う。
- yumコマンドでvsftpをインストールする
- 使われていないポートを確認する
- vsftpを設定する
- ユーザを作成する
- vsftpの起動設定を行う
- vsftpを起動する
- 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=YES | chroot_listを有効にする。ファイルはデフォルト(chroot_list_file=/etc/vsftpd/chroot_list)になる。 |
| 修正 | tcp_wrappers=NO | ホストへのアクセスを制御しない。(EC2のSecurity Groupsで設定する方がよい) |
| 修正 | connect_from_port_20=NO | ActiveFTPを無効にする。 |
| 修正 | xferlog_std_format=NO | wu-ftpdではなく,vsftpdログ形式でログを記録する。 |
| 追加 | pasv_enable=YES | PASV FTPを有効にする。 |
| 追加 | pasv_addr_resolve=YES | PASVモード接続先IPアドレスをホスト名から取得する。 |
| 追加 | pasv_address=固定IP | Elestic IPを設定する。(インスタンスのPublic DNSを指定するとPASVモードでの接続はできない。バージョン2.0.4以降であれば、IPが固定でなくても pasv_addressにDDNSを書くことで動的なIPに対応できる。) |
| 追加 | pasv_min_port=60001 | PASVモード接続時の最小ポート番号を設定する。(確認した空きポートの範囲で設定) |
| 追加 | pasv_max_port=60010 | PASVモード接続時の最大ポート番号を設定する。(確認した空きポートの範囲で設定) |
| 追加 | 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 インストールと設定