vsftpdを利用してchroot環境のFTPサーバーを構築

vsftpdを利用したchroot環境のFTPサーバーをインストール

前回の記事(OPENSSHでchroot環境を作るでOpenSSHを利用したchroot環境は思っていたような挙動じゃなかったので、vsftpで下記の仕様のFTPサーバーを構築しました

【仕様】
・匿名ユーザー(annonymous)でのログインは拒否する
・特定のユーザーのみ接続可能
・ログインした上層へはアクセスを禁止する(chroot環境)

vsftpdインストール

vsftpdはyumを利用してインストールします。その後、vsftpd.confを編集してvsftpdを起動したら終了です

# yum install vsftpd

vsftpdの設定

設定ファイルをコピーして、その後編集します、設定では以下の設定をしています。

  • 匿名を拒否
  • 上位の階層へのアクセスを禁止
  • 特定ユーザーのみ接続する
  • ログインするディレクトリを変更する

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.org
# vi /etc/vsftpd/vsftpd.conf

# 匿名拒否
#anonymous_enable=YES
anonymous_enabl=NO

# 上層のディレクトリへのアクセスを禁止(chroot)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

# 特定のユーザーのみ接続可能
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/ftpuser_list

# ルートディレクトリを変更
user_config_dir=/etc/vsftpd/vsftpd_user_conf

上位のディレクトリにアクセス可能なユーザのリスト(chroot_list)作成します。上位のディレクトリへのアクセスが可能なユーザーはSCP接続するような感じで運用するので、chroot_listは空ファイルで作成します
# touch /etc/vsftpd/chroot_list

FTPで接続するユーザのリスト(ftpuser_list)を作成します。下記の設定では「ftpuser01」「ftpuser02」がFTPでの接続ができます
# vim /etc/vsftpd/ftpuser_list
ftpuser01
ftpuser02

ルートディレクトリを変更するので、その設定をおこないます。まずは設定ファイルを保存するディレクトリを作成し、設定するユーザー名のファイル配置して設定していきます。

下記の設定では、ftpuser01のルートディレクトリは「/var/www/testweb/ftpuser01」としています。ftpuser02のルートディレクトリは「/var/www/testweb/ftpuser02」としています

ルートディレクトリを変更するファイルを配置するディレクトリを作成します
# mkdir /etc/vsftpd/vsftpd_user_conf

ftpuser01の設定ファイル作成します
# vi /etc/vsftpd/vsftpd_user_conf/ftpuser01
local_root=/var/www/testweb/ftpuser01

ftpuser02の設定ファイル作成します
# vi /etc/vsftpd/vsftpd_user_conf/ftpuser02
local_root=/var/www/testweb/ftpuser02

FTPサーバーの自動起動及び起動をおこないます

【CentOS 6.x】
# /etc/init.d/vsftpd start
# chkconfig vsftpd on

【CentOS 7.x】
# systemctl start vsftpd
# systemctl enable vsftpd.service

スポンサーリンク