Edited at

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を指定しないといけなかったぽい。

以下の記事を参考にしたらすんなり解決した!!あざす!!


余談

本稿とは全く関係ないが、今回参考にさせて頂いたブログの別記事「独習のしかた

の考え方がかなり勉強になった。アウトプットの重要さをひしひしと感じた。

車輪の再発明は大事..