ITお絵かき修行

3歩歩いても忘れないために

AWSにvsftpd導入(2)設定編

今回は実際に設定を行う。

 

【今回の記事のゴール】

AWSのEC2インスタンスAmazon Linux)にvsftpdをインストール・導入を行いFFFTPから接続可能とする」

 

f:id:hhhhhskw:20140504151120p:plain

【すること一覧】

0.rootユーザでログイン、「yum update」を行う。

 

1.vsftpdインストール ※yumコマンドでインストールする

(1)yum search vsftpd

(2)yum -y install vsftpd.x86_64

 

2.ftp用のユーザを作る

(1)adduser ftpuser

(2)passwd ftpuser

→パスワード入力(2回)

 

3.vsftpdの設定を行う(※SSL通信にはしない。見られても困らないので…)

(1)cd /etc/vsftpd/

(2)vim vsftpd.conf

FTPをパッシブモードで使用する場合は下記の通り設定する各設定は以下の通り。

 

「参考(所々丸写し」

vsftpdの設定(vsftpd.conf)

 

「既存のvsftpd.confの設定を変更

●anonymous_enable:匿名ユーザのFTP接続設定

anonymous_enable=NO

 

●local_enable:CL側からの接続設定

local_enable=YES

 

●write_enable:ファイルシステムを変更するFTPコマンドを許可する。

write_enable=YES

 

●local_umask:ローカルユーザがディレクトリやファイルを作成する際に使用されるumaskを指定する。

→削除する実行権限の指定。「022」の場合、「777-022」でディレクトリのパーミッションは"755"、「677-022」でファイルのパーミッションは"655"となる。

local_umask=022

 

●anon_upload_enable:匿名ユーザによるファイルアップロードの許可設定

#anon_upload_enable=YES

 

●anon_mkdir_write_enable:匿名ユーザによるディレクトリ作成・ファイル書き込みの許可設定

#anon_mkdir_write_enable=YES

 

●dirmessage_enable:ユーザが新しいディレクトリに初めて移動した際のメッセージ表示設定

dirmessage_enable=YES

 

●xferlog_enable:ダウンロード/アップロード時のログのファイル出力設定

xferlog_enable=YES

 

●connect_from_port_20:FTP接続に設定するポート番号の動的変更設定

connect_from_port_20=YES

 

●chown_uploads・chown_username:匿名ユーザがアップロードしたファイルの所有者を、chown_usernameオプションで指定したユーザにする。※ 「recommended!」らしい。匿名ユーザの操作は許可していないので無視。

#chown_uploads=YES

#chown_username=whoever

 

●xferlog_file:ダウンロード/アップロード時のログのファイル出力先設定

xferlog_file=/var/log/xferlog

 

●xferlog_std_format:ログの出力フォーマットに関する設定。※いじらなくてOK

xferlog_std_format=YES

 

●idle_session_timeout:CL側からの操作タイムアウト時間の設定

#idle_session_timeout=600

 

●data_connection_timeout:CL側からのコネクションタイムアウト時間の設定

#data_connection_timeout=120

 

●nopriv_user:vsftpdが使用する非特権ユーザの設定

#nopriv_user=ftpsecure

 

●async_abor_enable:ABOR通信の設定(FTPクライアントソフトによってはコメントアウトを外す。今回はコメントアウトのまま)

#async_abor_enable=YES

 

●ascii_upload_enable・ascii_download_enable:ASCIIモードのアップロード許可設定

→バイナリ転送モードしか使わない場合はNOでも良い。

ascii_upload_enable=YES

ascii_download_enable=YES

 

●ftpd_bannerサーバに接続したとき(ユーザ名を入力する前)に表示される文字列

#ftpd_banner=Welcome to blah FTP service.

 

●deny_email_enable・banned_email_file:ログインを拒否する匿名パスワード(つまり、メールアドレス)のリストファイル設定

#deny_email_enable=YES

#banned_email_file=/etc/vsftpd/banned_emails

 

chroot_local_user・chroot_list_enable・chroot_list_file:

chroot_list_fileオプションで指定したユーザリストファイルを読み込み、chrootさせる

#chroot_local_user=YES(※コメントアウトし、chroot_listを有効にする

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

 

●ls_recurse_enable:"ls -R"コマンド(ディレクトリリストを再帰的に表示)の使用許可設定

#ls_recurse_enable=YES

 

●listen:スタンドアロンモード(IPv4)での起動設定

listen=YES

 

●listen_ipv6スタンドアロンモード(IPv6)での起動設定

#listen_ipv6=YES

 

 

「新規でvsftpd.confへ設定を追加

●pam_service_name:vsftpdが使用するPAMサービス名を指定 ※PAM:Linuxが提供するアプリケーション向けの認証機能。

pam_service_name=vsftpd

 

● userlist_enable・userlist_file・userlist_deny:

userlist_fileオプション(デフォルトは/etc/vsftpd.user_listファイル)で指定したファイルに含まれるユーザリストを元に、ログインの許可 / 拒否が決定される。

→この設定だと、「vsftpd.user_listに含まれるユーザの接続は拒否、vsftpd.user_listに含まれないユーザの接続は許可」となる。

userlist_enable=YES

userlist_file=/etc/vsftpd/user_list 

userlist_deny=YES

 

tcp_wrappers:この項目は下記リンク参照。

みんなの教室 - FTPサーバ(vsFTP)の構築 - 仮想専用サーバ構築 > FedoraCore3 - 裏番町通信

tcp_wrappers=YES

 

●local_root:全てのローカルユーザが、ログインした後に移動するディレクトリ設定

local_root=public_html

 

●pasv_enable:パッシブモードの設定

pasv_enable=YES

 

●pasv_address:PASVコマンドの応答でクライアントに通知する、サーバのIPアドレスを指定する。

→公開用のIPアドレスを指定する必要がある。「127.0.0.1」とか「192.168.0.1」とかはNG。ただしFTPサーバとCL側の端末が同一セグメント上にある、などの場合は別。

pasv_address=(※サーバのIPアドレスを設定する※)

 

●pasv_min_port・pasv_max_port:パッシブモードでファイルのやりとりを行うポートレンジの設定

pasv_min_port=60001

pasv_max_port=60100

 

※vsftpd.confの設定はここまで。

 

4.user_listは設定しない。

 

5.空のchroot_listを作成する。→「chroot_list_file」にて指定した場所に作成する。

(1)vim chroot_list

 

6.vsftpdを起動する。

service vsftpd start

 

7.FFFTPから接続

接続に使用するユーザは「ftpuser」を使用する。

→接続に時間がかかるときはネットワークの設定よりIPv4を優先的に使用する設定にすると多少早くなる。

 

8.自動起動の設定

(1)chkconfig vsftpd on

 

以上で設定は終わり。

 

 

【注意点 - つながらなくなった場合に疑うところ】

AWSセキュリティグループのIP設定

テザリングなど、CL側に動的IPアドレスがふられる環境では「My IP Address」の項目はテザリングでの接続ごとに変化する。なのでサーバ接続する際は毎回セキュリティグループの設定を変更する。

 

②vsftpd.confの「pasv_address=(サーバのIPアドレス)」の設定値

ElasticIP(公開用IP)を設定する必要があるが、EC2再起動させたら変更されてしまうので、再起動の度に書き直す必要がある。

→上記設定がめんどくさい方は下記参照。スクリプト書いてください。

EC2でvsftpdのpasv_addressをbootupのしかけでどうにかする - c/fe

 

【感想】

 ・vsftpdの設定(vsftpd.conf) と 道はなくても進むのだ。: Amazon EC2 (Amazon Linux) での vsftpd インストールと設定を見ればだいたいできる。