今回は、Amazon Web ServiceのEC2インスタンスでvsftpdをインストールしてFTPサーバーをたてたいと思います。
早速ですが、yumでvsftpdをインストールします。
読み込んだプラグイン:priorities, update-motd, upgrade-helper
依存性の解決をしています
–> トランザクションの確認を実行しています。
—> パッケージ vsftpd.x86_64 0:2.2.2-13.13.amzn1 を インストール
–> 依存性解決を終了しました。
依存性を解決しました
========================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
========================================================================================================================
インストール中:
vsftpd x86_64 2.2.2-13.13.amzn1 amzn-main 161 k
トランザクションの要約
========================================================================================================================
インストール 1 パッケージ
総ダウンロード容量: 161 k
インストール容量: 320 k
Is this ok [y/d/N]: y
Downloading packages:
vsftpd-2.2.2-13.13.amzn1.x86_64.rpm | 161 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : vsftpd-2.2.2-13.13.amzn1.x86_64 1/1
検証中 : vsftpd-2.2.2-13.13.amzn1.x86_64 1/1
インストール:
vsftpd.x86_64 0:2.2.2-13.13.amzn1
インストールが完了したので、/etc/vsftpd.confを編集して一部設定を変更したいと思います。
●匿名アクセスを不可にします
・変更前
# Allow anonymous FTP? (Beware – allowed by default if you comment this out).
anonymous_enable=YES
↓
・変更後
# Allow anonymous FTP? (Beware – allowed by default if you comment this out).
anonymous_enable=NO
●asciiモードによるアップロード・ダウンロードを可能にします
・変更前
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
↓
・変更後
# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES
ascii_download_enable=YES
●サーバー側のデータ転送用のポートに20番を使用しないようにします
・変更前
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
↓
・変更後
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=NO
●ログ出力の有無を確認します
おそらくデフォルトでYESとなっているかと思います。なっていない場合にはYESにすることをおすすめします。
# Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
xferlog_std_format=YES
●chroot_local_userとchroot_list_enableのコメントアウトを外します
- chroot_local_user:ログイン時のディレクトリをそのユーザーのルートディレクトリに変更する
- chroot_list_enable:但し、chroot_listに記載されたユーザーは除外する
・変更前
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# chroot_local_user=YES
# chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
↓
・変更後
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
●passiveモードの設定をします
IPアドレスとポート番号を設定します。
pasv_enable=YES
pasv_addr_resolve=YES
pasv_address=52.xx.xxx.xxx
pasv_min_port=65000
pasv_max_port=65535
use_localtime=YES
force_dot_files=YES
EC2ではインスタンスの停止、再起動などでIPアドレスが変わってしまうことがありますので、pasv_addressでは、あらかじめElastic IPで割り振ったで固定IPを指定するようにしましょう。
それとpassiveモードの場合、接続確立後のデータ転送用に任意のポートを使用します。なので、データ転送用のポートは範囲指定しておく必要があります。
pasv_min_portとpasv_max_portの間を大きくしすぎない範囲で設定するようにしましょう。
ここでは、仮にポート番号の最小値を65000、最大値を65535としています。
次に、chroot_listファイルを作成します。
chroot_local_userとchroot_list_enableの設定変更のところで説明したようにchroot_list_enableがYESの場合、chroot_listに記載されたユーザーは、ログイン時のディレクトリをそのユーザーのルートディレクトリに変更する対象から除外されます。そういったユーザーが必要な場合には、chroot_listにユーザー名を記載します。
webmaster
example
ftpで接続するためのユーザーをOS(Linux)に追加します。
[root@ip-172-30-0-123 vsftpd]# passwd [ユーザー名]
使用用途に応じてこのユーザーを適宜グループに追加してください。
※ ここで指定しているグループ名apacheは一例です。
また、ログイン時のルートディレクトリをユーザー毎に設定することも可能です。
/etc/vsftpd.confを見ると以下のような記載があります。
user_config_dir=/etc/vsftpd/user_conf
/etc/vsftpd/user_conf/
の下にユーザーと同じ名前のファイルを作成して、そのファイルにルートディレクトリを記載しておきます。
[ec2-user@ip-172-30-0-242 user_conf]$ ls -lv
合計 12
-rw-r–r– 1 root root 32 6月 7 04:27 webmaster
-rw-r–r– 1 root root 32 11月 8 06:12 example
例えば、exampleユーザーのカレントディレクトリを/var/www/htmlにしたい場合には、
/var/www/html
exampleファイルに/var/www/htmlと記載しておけばいいわけです。
これでユーザー毎のルートディレクトリを設定することができました。
それではvsftpdを起動します。
vsftpdが自動起動するようにしておきます。
ftpクライアントツールを使って接続してみましょう。
IDとパスワードを入力して接続します。
接続できました!
これで無事にAmazon EC2でFTPサーバーを立てることができました。
AWS、いろんな用途に使えて本当に便利です。
よかったらAmazon Web Service試してみてください。