CentOS7にvsftpdを導入してftpサーバーを構築したときのメモ。
wordpressを運用していると、プラグインやテーマを更新する際にFTPかFTPSを構築する必要がある。
今時FTPを使う機会は減っているとは思うけれども・・・
そもそもFTPは認証も含め暗号化されないし、FTPSを使うぐらいならSCPかSFTP使った方が楽だけれども・・・
#前提
CentOS7でWEBサーバーを構築し、lets encryptでhttpsを対応していること
※ftpsは証明書が必要なため
ただのFTPだけならwebサーバーも証明書も不要
WEBサーバーとSSL(lets encryptの証明書)の構築はこちら
https://qiita.com/salt_field/items/31acb1cbb707102e0702
FTPサーバーはマルチドメインではなく、メインのドメインのみで運用することを前提とする。
同一サーバーなので、wordpressで使用する際はユーザー名とパスワードだけ変更すれば問題ない。たぶん
vsftpdの設定項目の意味はこちらを参照しました。
http://www.nina.jp/server/redhat/vsftpd/vsftpd.conf.html#log
##ドメインとかユーザーの情報
項目 | メインドメイン |
---|---|
ドメイン | main.test.com |
ユーザー | User1 |
パスワード | User1Pass |
##インストール
yum -y install vsftpd
##設定変更
#vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
log_ftp_protocol=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=YES
###ここから下は最後に追記する。###
local_root=public_html
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
use_localtime=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_address=main.test.com
pasv_min_port=60000
pasv_max_port=60030
pasv_addr_resolve=YES
pasv_promiscuous=YES
ssl_enable=YES
rsa_cert_file=/etc/letsencrypt/live/main.test.com/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/main.test.com/privkey.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_ciphers=HIGH
public_html以外のディレクトリへのアクセスを許可する場合はchroot_listにユーザー名を追記する。
echo User1 >> /ect/vsftpd/chroot_list
##ポートを開放する
firewall-cmd --add-service=ftp --zone=public --permanent
firewall-cmd --add-port=60000-60030/tcp --zone=public --permanent
firewall-cmd --reload
##起動
systemctl start vsftpd
systemctl enable vsftpd
##あとがき
ffftpでアクセスするとき、ipv4、ipv6いずれかでアクセスできると認証はできるが、その後パッシブモードに(勝手に)切り替わったとき、どちらかのアドレスでしかアクセスできなくなる。(勝手に切り替わるのは設定しているからだけれども)
DNSをきちんと設定してある&サーバーに適切なIPが設定してある状態でないと、ドはまりする。
私の場合、IPv6のDNSが古いアドレスで設定されている状態だった為、ipv4でログインした後パッシブモード(ipv6)時にファイル一覧が取得できずアップロードもダウンロードもできない状態になった・・・
適切な設定がされているのに上記のような症状に悩まされたらDNS設定を見てみよう。
こんな初歩的な問題&個別すぎる問題はググっても出てこないから気を付けよう。