AWS
EC2
AmazonLinux
vsftpd

EC2にvsftpをセッティングする際のハマリポイント

More than 3 years have passed since last update.

EC2にvsftpインストールする際、Security Groupの設定ではまったのでメモ

インストール

vsftpをインストール

$ sudo yum install vsftp

次に空のポートを確認

$ cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000

で、vsftp.confを編集

$ vi /etc/vsftpd/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 .(ドット)で始まるファイルを隠さない。

ルートディレクトリにアクセス出来るユーザーを設定します。

$ vi /etc/vsftpd/chroot_list

ユーザーを追加します。

$ adduser [ユーザー名]
$ passwd [パスワード]

サービスを起動

$ service vsftpd start
$ chkconfig vsftpd on

Security Groupの設定

ここでハマりました。。。。。。。
以下の値をEC2のSecurity Groupに追加します。

TCP

Type Protocol PortRange Source
Custom TCP Rule TCP 21 0.0.0.0/0
Custom TCP Rule TCP 60000 - 60010 0.0.0.0/0

60000 - 60010 PortRangeを指定する際は単純にハイフン区切りでok.

以上

追記

アクティブモードでは接続出来るが、パッシブモードでは接続出来なくてかなりハマっていた。
EC2の場合、pasv_addressにグローバルIPを指定しないといけなかったぽい。
以下の記事を参考にしたらすんなり解決した!!あざす!!

余談

本稿とは全く関係ないが、今回参考にさせて頂いたブログの別記事「独習のしかた
の考え方がかなり勉強になった。アウトプットの重要さをひしひしと感じた。

車輪の再発明は大事..