……で、ProFTPDにFTP over SSL/TLSの設定

都合2日間も費やして、やっとこさ本丸まで到達しました。
いよいよProFTPDでSSL/TLSを使用できるように設定を施します。

とりあえず今インストールしてあるproftpdが
SSL/TLSを使うようにコンパイルしてあるか確認します。

# proftpd -l |grep mod_tls
#

……
ヒットして来ませんでした。どうやら入っていないようです。
こういう時は仕方がないので1からインストールし直しです。

まずはproftpdのプロセスを止めて、
# killall proftpd
その後にportsからインストール。
# cd /usr/ports/ftp/proftpd
# make deinstall (一旦アンインストールする)
# rm -rf /var/db/ports/proftpd
(以前のmake configure用のノブの設定を削除)
# make distclean install clean && rehash
ここでconfigureの段階でOPENSSLを指定しておきます。
これをやらないと設定の意味がない。

インストール終了後、設定ファイルである
proftpd.confの末尾に

<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

# Are clients required to use FTP over TLS when talking to this server?
TLSRequired off

# Server's certificate
TLSRSACertificateFile /usr/local/cert/server.crt
TLSRSACertificateKeyFile /usr/local/cert/server.key

# Authenticate clients that want to use FTP over TLS?
TLSVerifyClient off
</IfModule>

を追加しておきます。

さらに、ここで動的IPを使用してサーバを構築している場合には、proftpd.conf内でPassivePortsの設定を施しておかねばなりません。
自宅サーバ設定のメモで有名なおやじさんのサイトに詳しい情報が載っていましたので、詳しくはそちらをご覧ください。

というわけで、うちは動的IPを使っているので
proftpd.confに設定を施します。
場所はどこでも構わないので、

ServerType inetd
MasqueradeAddress xxx.xxx.xxx.xxx(FQDNでも可)
PassivePorts 7030 7050
(PASV接続で使用する開始ポートと終了ポートを指定)

以上の記述を追加しておきます。
(ServerTypeまで変更していますが、どうやらstandaloneではグローバルIPが変更されるタイミングでマスカレードの状態が解除されるようです)
で、念のため使っているブロードバンドルータにも
上で指定したポートをマスカレードするように設定。

あとはFTP over SSL/TLSに対応しているクライアントで
暗号化をExplicit(TLS-C)にしたうえで接続を試み、

ホストを探しています - xxxxx.xxx
ホストに接続しています - xxxxx.xxx (xxx.xxx.xxx.xxx:21)
220 Welcome to server.
>AUTH TLS-C
234 AUTH TLS-C successful
SSLで接続しています...
暗号化されたセッションを確立しました。

上手く暗号化されることを確認して
今回の作業を終了としました。
なんとか2日で設定できました。疲れた……