Next FTPを使用できるようにする

CentOS Stream 8

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

コメント

タイトルとURLをコピーしました