株式会社ライブキャストロゴ 株式会社ライブキャスト

今回は、Amazon Web ServiceのEC2インスタンスでvsftpdをインストールしてFTPサーバーをたてたいと思います。

早速ですが、yumでvsftpdをインストールします。

[root@ip-172-30-0-43 ec2-user]# yum install 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のコメントアウトを外します

  1. chroot_local_user:ログイン時のディレクトリをそのユーザーのルートディレクトリに変更する
  2. 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にユーザー名を記載します。

[root@ip-172-30-0-123 vsftpd]# emacs chroot_list
webmaster
example

ftpで接続するためのユーザーをOS(Linux)に追加します。

[root@ip-172-30-0-123 vsftpd]# adduser [ユーザー名]
[root@ip-172-30-0-123 vsftpd]# passwd [ユーザー名]

使用用途に応じてこのユーザーを適宜グループに追加してください。

[root@ip-172-30-0-123 vsftpd]# usermod -G apache example

※ ここで指定しているグループ名apacheは一例です。

また、ログイン時のルートディレクトリをユーザー毎に設定することも可能です。

/etc/vsftpd.confを見ると以下のような記載があります。

user_config_dir=/etc/vsftpd/user_conf

/etc/vsftpd/user_conf/
の下にユーザーと同じ名前のファイルを作成して、そのファイルにルートディレクトリを記載しておきます。

[ec2-user@ip-172-30-0-242 ~]$ cd /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にしたい場合には、

[ec2-user@ip-172-30-0-242 user_conf]$ emacs info
/var/www/html

exampleファイルに/var/www/htmlと記載しておけばいいわけです。

これでユーザー毎のルートディレクトリを設定することができました。
それではvsftpdを起動します。

[root@ip-172-30-0-123 vsftpd]# service vsftpd start

vsftpdが自動起動するようにしておきます。

[root@ip-172-30-0-123 vsftpd]# chkconfig vsftpd on

ftpクライアントツールを使って接続してみましょう。



IDとパスワードを入力して接続します。



接続できました!

これで無事にAmazon EC2でFTPサーバーを立てることができました。
AWS、いろんな用途に使えて本当に便利です。
よかったらAmazon Web Service試してみてください。