ProFTPd で FTP サーバの構築

サイトを運営していると FTP を使ってファイルのアップロードを行いたい場合があると思います。
出先で SSH が使えれば SSH over FTP を使えば良いのですが、必ずしも使える環境ではないと思います。
そういった時の為に FTP サーバを用意しておいて、必要に応じて使い分けましょう。

インストール

まずは ProFTPd のインストールです。

# make WITH_LDAP=yes WITH_LDAP_TLS=yes WITH_MYSQL=yes \
? WITH_OPENSSL=yes WITH_QUOTA=yes WITH_CTRLS=yes \
? WITH_WRAP_SQL=yes WITHOUT_RADIUS=yes WITH_BAN=yes \
? WITH_NLS=yes WITH_DIGEST=yes WITHOUT_RADIUS=yes \
? install clean

設定ファイルの編集

設定ファイルを編集します。
各項目の意味等はマニュアルなどをご参照ください。

% sudo vi /usr/local/etc/proftpd.conf

ServerIdent		off
ServerName		"FTP Server"
ServerType		standalone
DefaultServer		on
ScoreboardFile		/var/run/proftpd/proftpd.scoreboard
Port			21
#MasqueradeAddress	ftp.example.com
PassivePorts		9010 9039
Umask			022
MaxInstances		30
CommandBufferSize	512
User			nobody
Group			nogroup
RootLogin		off
RequireValidShell	off
DefaultRoot		~ !wheel
AllowOverwrite		on
AllowRetrieveRestart	on
DeleteAbortedStores	on
ListOptions		"-la"
UseReverseDNS		off
IdentLookups		off
TimesGMT		off
TimeoutIdle		600
TimeoutLogin		300
TimeoutNoTransfer	600
TimeoutSession		none
TimeoutStalled		600

#TransferRate		RETR 10.0:1048576 group !wheel

MaxClientsPerHost	1
MaxHostsPerUser	1

<Limit SITE_CHMOD>
   DenyAll
</Limit>

LogFormat allinfo "%t :  %u (%a [%h]) : [%s], %T, %m (%f)"
LogFormat write "%t : %u : %F (%a)"
LogFormat read "%t : %u : %F (%a)"
LogFormat auth "%t : %u (%a [%h])"
ExtendedLog /var/log/proftpd/all.log ALL allinfo
ExtendedLog /var/log/proftpd/write.log WRITE write
ExtendedLog /var/log/proftpd/read.log  READ read
ExtendedLog /var/log/proftpd/auth.log AUTH auth

設定ファイルのチェック

設定ファイルに不備がないか、チェックします。

% sudo proftpd -t -c /usr/local/etc/proftpd.conf

ログディレクトリの作成

ログ格納ディレクトリを作成します。

% sudo mkdir /var/log/proftpd

ログローテーション

ログローテーションの設定を行います。

% sudo sh -c 'printf "/var/log/proftpd/all.log\t\t644  7\t   *\t@T00  J     /var/run/proftpd.pid\n" >> /etc/newsyslog.conf'
% sudo sh -c 'printf "/var/log/proftpd/auth.log\t\t644  7\t   *\t@T00  J     /var/run/proftpd.pid\n" >> /etc/newsyslog.conf'
% sudo sh -c 'printf "/var/log/proftpd/read.log\t\t644  7\t   *\t@T00  J     /var/run/proftpd.pid\n" >> /etc/newsyslog.conf'
% sudo sh -c 'printf "/var/log/proftpd/write.log\t\t644  7\t   *\t@T00  J     /var/run/proftpd.pid\n" >> /etc/newsyslog.conf'

自動起動の設定

FreeBSD 起動時に自動的に立ち上がるように設定します。

% sudo sh -c "printf '\n# ProFTPd\nproftpd_enable="YES"\n' >> /etc/rc.conf"

起動

ProFTPd を起動します。

% sudo /usr/local/etc/rc.d/proftpd start

リンク