正直な所、あまり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