vsftpdの設定方法

vsftpd (Very Secure FTP Daemon) を選択した理由は、まぁなんとなくなのですが、どのディストリビューションにもパッケージあるので汎用性高いし、かなり細かく設定ができるので、使い方を覚えておいて損はないとは思います。

設定項目自体は、ArchLinuxのwikiをおすすめします。
https://wiki.archlinux.org/index.php/Vsftpd

セキュリティーを考慮しつつ必要最低限の設定で動くというのがいい感じです。

man 5 vsftpd.conf

もっと細かい設定項目は、マニュアルに詳しく載っているのでそれを参考にしつつ。

iptables使っている場合に、FTPS接続にする場合は

pasv_enable=YES
pasv_min_port=xxxxx
pasv_max_port=xxxxx

のようにパッシブモードの設定が必要です。

ちょっとハマった点としては、FTPクライアントとしてFileZillaを利用しているのですが、「GnuTLS error -12: A TLS fatal alert has been received.」のようなエラーが出て接続できなかったところです。

ssl_ciphers=HIGH

を追加することによって、正常に接続できるようになりました。
デフォルトがDES-CBC3-SHAなのですが、これがよろしくないようで。

man ciphers

詳しいオプションを知りたい場合は上記のマニュアルを参照してみてください(そこまで調べる人はあんまりいなそうですけど・・)。


追加ですが、AndroidアプリからFTPS接続しようとするとエラーが出るのでマニュアルを確認したところ、require_ssl_reuseがデフォルトのYESだとダメなクライアントがあるから注意って書いてありました。

https://security.appspot.com/vsftpd/vsftpd_conf.html

If set to yes, all SSL data connections are required to exhibit SSL session reuse (which proves that they know the same master secret as the control channel). Although this is a secure default, it may break many FTP clients, so you may want to disable it. For a discussion of the consequences, see http://scarybeastsecurity.blogspot.com/2009/02/vsftpd-210-released.html (Added in v2.1.0).

require_ssl_reuse=NO

と書き込んで解決しました。これはもうNOにするしかしょうがないですよねぇ。