Centos7 FTPサーバ設定(vsftpd)

centos7

SCPで事が足りるのであればFTPをわざわざ入れる必要はないですが、まぁ結構な頻度で何かしら必要になるので、centos7でvsftpdを設定した時のメモです。

まず、パッケージをインストール。

# yum install vsftp

ほとんどがそうなると思いますが、パッシブ(PASV)モードを使う場合はポートを開けます。今回は2121-2140のポートを開けています。

・追加の場合
# firewall-cmd --add-port=2121-2140/tcp --zone=public --permanent
・削除の場合
# firewall-cmd --remove-port=2121-2140/tcp --zone=public --permanent

ポートを開けたら設定をリロードします。

# firewall-cmd --reload

次にftp用のユーザを追加します。

# useradd ftp-user
# passwd ftp-user

vsftpdの設定ファイルを変更します。セキュリティ的に大事な部分がchroot関連です。詳細はこちらのサイトが分かりやすいかと思います。

この設定の例では、local_rootで指定したディレクトリよりも上位の階層へは移動できない設定です。

# vi /etc/vsftpd/vsftpd.conf

# anonymous ログインを許可しない
anonymous_enable=NO
# ローカルユーザのログインを許可する
# (/etc/passwdに存在するユーザ)
local_enable=YES
# ファイルの変更を許可
write_enable=YES
local_umask=002
dirmessage_enable=YES
# ファイルやりとりのログを記録
xferlog_enable=YES
# xferlog形式のフォーマットを利用しない
xferlog_std_format=NO
# ログ出力パス
xferlog_file=/var/log/vsftpd.log
# ASCIIモードでのアップロードを許可
ascii_upload_enable=YES
# ASCIIモードでのダウンロードを許可
ascii_download_enable=YES
# 初回接続時に表示するメッセージ
ftpd_banner=Welcome to blah FTP service.
# ホームディレクトリ(local_root)より上層のアクセスを拒否し
# chroot_list_fileで指定したユーザのみ上層へアクセス可能とする
chroot_list_enable=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
# ディレクトリの再帰表示を許可
ls_recurse_enable=YES
# スタンドアローンモード
listen=YES
# IPv6を拒否
listen_ipv6=NO
# FTP接続を待つポート番号
listen_port=2121
# pasvモードで利用するポート最小値
pasv_min_port=2122
# pasvモードで利用するポートの最大値
pasv_max_port=2140
# vsftpdが使用するPAMサービス名
pam_service_name=vsftpd
# userlist_fileで指定したユーザ以外の接続を拒否
userlist_enable=YES
userlist_deny=NO
# 許可ユーザリストのパス
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
# ディレクトリリストの表示にローカルのタイムゾーンを使用
use_localtime=YES
# ログイン時ディレクトリ(ホームとなるディレクトリ)
local_root=/var/www

#
# FTPSを利用する場合は以下を追記
# パスは各自読み替え
#
ssl_enable=YES
rsa_cert_file=/etc/letsencrypt/live/yourdomain.example.com/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/yourdomain.example.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

許可ユーザリストに先ほど作成したユーザを追加します。

# vi /etc/vsftpd/user_list
ftp-user

上位階層アクセス許可ユーザのリストを作成します。今回は空のリストで中身はありません。上位階層へのアクセスを許可したい場合は、ここへユーザを追加します。

# vi /etc/vsftpd/chroot_list
(中身は空)

この状態だと作成したユーザにファイル・ディレクトリの権限がない状態になるので、適切な権限を設定します。この例は作成したユーザ(ftp-user)をもともと権限を持っているディレクトリのグループ(www)へ追加しています。

# gpasswd -a ftp-user www

設定が完了したらサービスを起動(再起動)します。

# service vsftpd restart

自動起動の設定を追加します。

# systemctl enable vsftpd.service

接続する時はvsftpd.confで指定した listen_port (今回の例では2121 )を接続ポートに指定して接続します。

コメント

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