vsftpd で FTPS (FTP Over SSL/TLS)

巷ではガンブラー(Gumblar)がはやっているようなので、FTPサーバのセキュリティを考えてみる。
まぁ、FTPSにしろ、SFTP,SCPにしても、クライアントソフトからID,パスワードを抜かれる場合もあるので、あんまり意味はないような気もするけど、FTPって脆弱だよねと考える機会になるといいかな?
で、

◆FTPS
今回のvsftpdでもそうだけど、オレオレ証明書でいいのであれば実装はいたって簡単。
しかし、重大な課題として、一般的な環境のクライアントがNAPT(普通のNATでも同じか)環境の場合、(暗号化されない通常の)FTPは対応してますが、パケットが暗号化されたFTPSになると、データポートのIPや番号のやりとりの際にNAPTルータが判断できないので、変換がうまくできず繋がらない状態になることがあげられます。(ログインだけできて、ファイル一覧が出ないとかファイル転送ができない)、なので、個人的な感じでは、あまり使われることはないのかなぁ。または、ルータでFTPSにどうにかして対応できるのがでてくるのかなぁ。

◆SFTP,SCP
SSHが基本なので、シェルでログインできないようにとか、ファイル転送のみにするとか、chrootしたいとか面倒そう。
rsshを使用してファイル転送だけにしたり、chrootできるようなのですが、chrootのやり方がスマートでないというか、昔のFTPサーバでやってたような面倒なやり方なので。。現状は×かな。
今後、そいうのを作ってくれるいい人に期待です(笑)

◆クライアント
WinSCPFileZillaあたりがどちらも対応しててフリーなので便利かな。(個人的にはWinSCPを使用)

◆vsftpdでFTPSの対応
サーバ証明書作成

cd /etc/pki/tls/certs
make vsftpd.pem

/etc/vsftpd/vsftpd.conf に以下を追記

#FTPS
ssl_enable=YES
force_local_data_ssl=NO
force_local_logins_ssl=NO
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

「force_local_logins_ssl」と「force_local_data_ssl」は、SSL通信を必須にするかどうか、暗号化しないFTPでも繋ぐ場合は、NOです。

<追記>
vsftpd 2.1.0以上(CentOS6など)の場合は、以下の設定も追加が必要

require_ssl_reuse=NO

</追記>

サーバ証明書の有効期限が1年(365日)なので延ばしておきたい場合
/etc/pki/tls/certs/Makefile

#/usr/bin/openssl req $(UTF8) -newkey rsa:1024 -keyout $$PEM1 -nodes -x509 -days 365 -out $$PEM2 -set_serial $(SERIAL) ; \
/usr/bin/openssl req $(UTF8) -newkey rsa:1024 -keyout $$PEM1 -nodes -x509 -days 3650 -out $$PEM2 -set_serial $(SERIAL) ; \

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA