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サーバでやってたような面倒なやり方なので。。現状は×かな。
今後、そいうのを作ってくれるいい人に期待です(笑)
◆クライアント
WinSCPかFileZillaあたりがどちらも対応しててフリーなので便利かな。(個人的には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) ; \
最近のコメント