さくらのVPS CentOSでサーバ構築 作業ノート6回目。
普通ファイルのアップロードにはSSH経由のSFTPで接続してるので FTP は基本いらないのですが、WordPressの自動アップデート機能でSSH鍵認証させるのが少し面倒なのと、iPadで普段使ってるFTPアプリがSFTPに対応していないので、一応FTPをいれることにしました。
vsftpdのインストール
[root@ ~]# yum -y install vsftpd
続いてサービスの起動と自動起動の設定をします。
[root@ ~]# /etc/rc.d/init.d/vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@ ~]# chkconfig vsftpd on
[root@ ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
起動が問題ないようなので、設定を行います
設定
[root@ ~]# vi /etc/vsftpd/vsftpd.conf
1.匿名アクセス禁止
anonymous_enable=YES
↓
anonymous_enable=NO
2.アスキーモード有効
#ascii_upload_enable=YES
#ascii_download_enable=YES
↓
ascii_upload_enable=YES
ascii_download_enable=YES
3.シグニチャ隠蔽
#ftpd_banner=Welcome to blah FTP service.
↓
ftpd_banner=Welcome to blah FTP service.
4.デフォルトでホームの上位はみせない
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
↓
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
5.サブフォルダを含む一括アップロード・ダウンロードを許可
#ls_recurse_enable=YES
↓
ls_recurse_enable=YES
6./etc/vsftpd/user_listのユーザーだけを許可 (ここからはファイルの最後に設定を追加)
userlist_deny=NO
7.ユーザーごとの設定ファイルを有効にする。
user_config_dir=/etc/vsftpd/vsftpd_user_conf
8.タイムスタンプ時間をローカル時間にする
use_localtime=YES
9.設定を簡単にするためにPASVのポート範囲を限定
pasv_min_port=50000
pasv_max_port=50030
10.保存して終了
ESC
:wq
アクセス許可するユーザを/etc/vsftpd/user_listに設定します。FTPはパスワードが平文で転送される為、su や sudo 等の管理者用のコマンドが使えるユーザーは避けましょう。
以下は、シェルが使えず、ホームディレクトリが /var/www のユーザーを作る方法です。
[root@ ~]# adduser --shell /sbin/nologin --home /var/www ftpuser
adduser: warning: the home directory already exists.
Not copying any file from skel directory into it.
ホームディレクトリが存在してるという警告がでますが、気にせずパスワードも設定してください。
[root@ ~]# passwd ftpuser
vi でファイルを開いたら、内容を全部消して「ftpuser」だけを記述します。
[root@ ~]# vi /etc/vsftpd/user_list
ftpuser
上位ディレクトリにアクセス許可するユーザを/etc/vsftpd/chroot_listに設定しますどのユーザーにも許可させないので、そのまま保存して、空のファイルを作ります。
[root@ ~]# vi /etc/vsftpd/chroot_list
尚、既存の一般ユーザーを利用する場合に、FTPの時だけ別のホームディレクトリを指定するには以下のようにします。
[root@ ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@ ~]# vi /etc/vsftpd/vsftpd_user_conf/admin
local_root=/var/www
これでftpuserユーザーだけがアクセスできて、さらにWebコンテンツしか操作できないように設定ができたので、vsftpdを再起動します。
[root@ ~]# /etc/rc.d/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
iptablesの設定追加
実際にアクセスする為に iptables にFTP用の設定追加をします。
[root@ ~]# iptables -A SERVICE -p tcp --dport 20 -j ACCEPT
[root@ ~]# iptables -A SERVICE -p tcp --dport 21 -j ACCEPT
[root@ ~]# iptables -A SERVICE -p tcp --dport 50000:50030 -j ACCEPT
[root@ ~]# /etc/rc.d/init.d/iptables save
[root@ ~]# /etc/rc.d/init.d/iptables restart
これでFTPでのアクセスが可能になりました。