CentOS
ftp
vsftpd
chroot

Vsftpdの設定(FTP接続時のパスを任意のパスに変更、chroot)

More than 1 year has passed since last update.

FTPとは

File Transfer Protocol(ファイル・トランスファ・プロトコル)の略で、クライアントからサーバーに対してファイルをuploadする際のプロトコルのこと。基本的に使われるポートは20番か21番。
20番では、データ転送用のコネクションを張ります。データの送受信が行われる。
21番では、コントロールコネクションを張ります。ログインや転送方法が行われる。

FTPのモード(アクティブモード・パッシブモード)

接続の方向で、下記2つのモードで接続を行います。

アクティブモード

サーバーからクライアントに対して、コネクションを張る。
20番と21番のみのポート開放でOK。

パッシブモード

クライアントからサーバーに対して、コネクションを張る。
1024/TCP以上の範囲でポートを開放する必要があります。

このモードは、ファイアウォールのアウトバウンドやインバウンドの設定次第で使い分けていきます。
基本的には、パッシブモードで運用されることが多いようです。
→クライアントから接続をしに行くため、ファイアウォールに引っかからないことが多い。
※あまりアウトバウンドって制御しませんよね。

今回vsftpdの設定でやりたいこと

①FTPで接続した際のディレクトリを任意のディレクトリに変更する
②FTPユーザーは、OSユーザーを利用
③FTPユーザーは、他のFTPユーザーのディレクトリを参照不可
④パッシブモードで設定する
⑤パッシブモードで使うポートの範囲を制限する

Vsftpdの設定(/etc/vsftpd/vsftpd.conf)

# vi /etc/vsftpd/vsftpd.conf ※コメントアウトのぞいてます。
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=002
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=NO
xferlog_std_format=NO
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES ★③FTPでアップロードしたディレクトリ以外は参照不可!
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=NO
pasv_enable=YES
pasv_addr_resolve=YES
pasv_address=IPアドレス
pasv_min_port=65000 ★⑤パッシブモードで使用するポートの最小値
pasv_max_port=65535 ★⑤パッシブモードで使用するポートの最大値
use_localtime=YES
force_dot_files=YES
user_config_dir=/etc/vsftpd/conf ★①ユーザー毎にFTP接続先を任意の場所に変更!
userlist_file=/etc/vsftpd/user_list
allow_writeable_chroot=YES ★③chrootを設定する先に、書き込み権限を付与する場合は必要!

ユーザー毎の設定(/etc/vsftpd/conf/ユーザー名)※ユーザー毎の設定ファイルパスは、vsftpd.confで指定している。

# vi /etc/vsftpd/conf/test
local_root=/var/ftp/test ★一行のみ記載。ここに書いたパスが、FTP接続時に接続できるパスになります。