Categories: サーバ

CentOS7にProFTPDをインストール・設定してみた(ftpasswd利用)

正直な所、あまりftpサーバは利用したくないのですが、1サーバを複数ユーザー(お客様など)に
対して利用して頂く場合にはsshだと逆に怖いので、今回は「ProFTPD」を使ってftpサーバを
構築したいと思います。
ちなみに複数あるftpサーバからProFTPDを選定したのは、「構築・運用経験がある」という1点が
大きく、vsftpdの「Very Secure」が好きなので、タイミングを見てこちらも試してみたいと思ってます。
※ちなみにCensOS系のデフォルトはvsftpdのようです。



インストール

まずはyumからインストールして、systemctlからの起動設定と、inetdのインストール+起動設定

# yum -y install proftpd
# systemctl enable ftpd.service
# yum install inetd
# chkconfig xinetd on
# systemctl start xinetd.service
ファイアウォール

続いてfirewalld(ファイアウォール)でftpの恒久的な公開の設定(+リロード)

# firewall-cmd --add-service=ftp --permanent
# firewall-cmd --reload
設定ファイル

そして設定ファイルを変更します。ポイントとしては、

  • OSのユーザーを使わずバーチャルユーザーを利用する
  • サーバはstandaloneではなくinet経由で起動する

といった感じです。

AuthUserFile                    /etc/proftpd/ftpd.passwd
AuthGroupFile                   /etc/proftpd/ftpd.group
ServerType                      inetd
UseFtpUsers                     off
RequireValidShell               off
#AuthPAMConfig                  proftpd
#AuthOrder                      mod_auth_pam.c* mod_auth_unix.c
AuthOrder                       mod_auth_file.c
FTP用パスワードファイル

最後は「ftpasswd」を使ってFTP用のパスワードファイルを作るので、そのインストールと設定。
ftpasswdはproftpdのソース内にあるので、proftpdのソースファイルを適当に落として置いておきます。
作成するバーチャルユーザーは「ftpuser」ですが、OS上では存在する別ユーザーとして
実行されるので、そのユーザーID「1000」とグループID「100」を指定します。
ホームディレクトリはバーチャルユーザーのルート(これ以上、上層に行けない)になるので、
バーチャルホストのディレクトリを設定します。

最後はパスワードファイル権限を変更して終了。
※再度ユーザー追加等でftpasswdを実行する場合は権限についても再設定してください。

## ダウンロードとftpasswdのバイナリがある場所まで移動
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4d.tar.gz
# tar zxvf proftpd-1.3.4d.tar.gz
# cd proftpd-1.3.4d/contrib

## パスワードファイルの作成
# ./ftpasswd --passwd \
--file=/etc/ftpd.passwd --name=ftpuser --uid=1000 --gid=100 \
--home=/var/www/vhosts/virtual-host.com --shell=/bin/bash
# ftpasswd --group --file=/etc/ftpd.group --name=users --gid=100
# chown root:nobody /etc/{ftpd.passwd,ftpd.group}
# chmod o-r /etc/{ftpd.passwd,ftpd.group}



Photo credit: Fabio Téllez via Visualhunt / CC BY-SA

memento-mori