webサーバーにhtmlファイルやその他もろもろのファイルをアップロードするのがめんどくさいので、NextFTPを使えるようにする
ちなみにwebサーバーはh2oで構築してある
vsfpdインストール
dnf install vsftpd
設定ファイルの編集
cp /etc/vsftpd/vsftpd.conf{,.org} vi /etc/vsftpd/vsftpd.conf</pre>
変更箇所は下記の通り
#xferlog_file=/var/log/xferlog ↓ xferlog_file=/var/log/vsftpd.log → ログの出力先を変更する xferlog_std_format=YES ↓ #xferlog_std_format=YES xferlog_std_format=NO → 取得するログの形式をvsftpd形式に変更する #ascii_upload_enable=YES #ascii_download_enable=YES ↓ ascii_upload_enable=YES → asciiのアップロード有効化 ascii_download_enable=YES → asciiのダウンロード有効化 #chroot_local_user=YES #chroot_list_enable=YES ↓ chroot_local_user=YES → chrootを設定するため chroot_list_enable=YES → chrootを設定するため #chroot_list_file=/etc/vsftpd/chroot_list ↓ chroot_list_file=/etc/vsftpd/chroot_list → chrootを設定するため許可リストのファイルを指定する #ls_recurse_enable=YES ↓ ls_recurse_enable=YES → ls -Rの使用を許可する listen=NO ↓ #listen=NO listen=YES ← ipv4での接続を許可 listen_ipv6=YES ↓ #listen_ipv6=YES listen_ipv6=NO ← ipv6での接続を許可 -------↓一番下に追記↓-------- userlist_deny=NO text_userdb_names=YES user_config_dir=/etc/vsftpd/vsftpd_user_conf #tcp_wrappers=YES ← 詳しくは後述 #ssl ssl_enable=YES ← sslを使用する rsa_cert_file=/etc/letsencrypt/live/xxxxxx.com/fullchain.pem ← 証明書ファイルのパス rsa_private_key_file=/etc/letsencrypt/live/xxxxxx.com/privkey.pem ← keyファイルのパス require_ssl_reuse=NO ← コントロールコネクションでSSL認証し、データコネクションでは認証を行わない(YESだとFTPSでのファイル転送ができないことがある) ssl_ciphers=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA ↑ 通信で利用可能とする暗号化スイート #パッシブFTPが利用できるように、データコネクション用のポートを固定する pasv_min_port=60001 pasv_max_port=60010 #その他 use_localtime=YES → タイムスタンプ表示をローカルタイムにする force_dot_files=YES → ファイル名一覧でオプション"a"を付けなくても"."含めたファイルも一覧で表示する
tcp_wrappers=YES について、後ほどNextFTPに接続したところ
500 OOPS: tcp_wrappers is set to YES but no tcp wrapper support compiled in
とエラーが出てしまい接続できなかった(以前centos7で構築した時は問題なくいけた)
調べたところCentOS8はtcp wrappersが使用できないそうなのでコメントアウトした
ユーザーリスト作成
前項で
userlist_enable=YES
userlist_deny=NO
と設定しているので
接続を許可するユーザーリストを作成する
vi /etc/vsftpd/user_list
中にはデフォルトでユーザーがいくつか記入されているが、使用しないのですべて削除する
削除したうえで、自分が使用するユーザー名を追記する
chroot後のディレクトリを指定する
ftpログインしたときにどこをルートディレクトリとするか指定する
前項でuser_config_dir=/etc/vsftpd/vsftpd_user_confと設定しているので
作成するディレクトリは/etc/vsftpd/vsftpd_user_conf/[ユーザー名]で作成する
mkdir /etc/vsftpd/vsftpd_user_conf
今回はtestというユーザー名で設定することとする
vi /etc/vsftpd/vsftpd_user_conf/test
自分がルートディレクトリに指定したいパスを記入
local_root=/var/www/html
サービスの起動と自動起動
systemctl start vsftpd systemctl enable vsftpd systemctl status vsftpd
firewall設定
ftpのサービスと、パッシブポートで指定したポートを開ける
自分がファイルアップロードする時くらいしか使わないので、作業PCのIPアドレスを設定しているadminゾーンに対してのみ許可する
firewall-cmd --add-service=ftp --permanent --zone=admin firewall-cmd --add-port=60001-60010/tcp --permanent --zone=admin firewall-cmd --reload
DNS設定追加
下記の通りレコードを追加する
a ftp xxx.xxx.xxx.xxx ← IPアドレス
Next FTP接続
NextFTPを起動し、新規ホストを選択する
下記赤枠欄を埋める
高度な設定タブを開き、
PASVモードをON
SSL暗号化でSSLにしたうえでデータを暗号化をチェックしてOKを押す
参考
https://www.rem-system.com/cent-ftpd-inst/
https://www.atmarkit.co.jp/ait/articles/1612/01/news181_2.html
https://www.chuken-engineer.com/entry/2019/11/13/172205
https://toaruhetare.net/9262
コメント