初めまして。当方、DebianOS上にFTPサーバー(ProFTPD)を構築中です。
SSLにとても興味がありましたので、こちらのサイトを大いに参考にさせて頂き何とかSSL化できました。
テストしてみると当然ですが暗号化すると速度が落ちてしまいますね。通常の1/3〜1/5といったところでしょうか。
ファイルの転送だけでなくフォルダを切り替えたりする場合も全て反応が遅くなってしまうのは少々残念です。
そこでログイン時のみSSLで行い、一度繋がるとそれ以降のデータ転送は平文で通信する方法を検討しています。
恐らくProFTPDではそういった設定はできないと思いますが、vsftpdとかで実現する方法はありますでしょうか。
またデータ転送を平文で行うというのであればSSLを使う意味自体が無いのでしょうか。
皆様のご意見をお聞かせ願えると幸いです。どうぞよろしくお願いいたします。
> テストしてみると当然ですが暗号化すると速度が落ちてしまいますね。通常の1/3〜1/5といったところでしょうか。
> ファイルの転送だけでなくフォルダを切り替えたりする場合も全て反応が遅くなってしまうのは少々残念です。
>
> そこでログイン時のみSSLで行い、一度繋がるとそれ以降のデータ転送は平文で通信する方法を検討しています。
> 恐らくProFTPDではそういった設定はできないと思いますが、vsftpdとかで実現する方法はありますでしょうか。
> またデータ転送を平文で行うというのであればSSLを使う意味自体が無いのでしょうか。
データ自体に特段機密性がないなら、これもありではないでしょうか?
因みに、データコネクションも暗号化するかどうかはHPでも最後に少し記述してあるとおり、サーバ側の機能ではなくクライアント側の機能なので、クライアント側でデータコネクションも暗号化するかどうか設定すればいいだけです。おやじがHPで紹介している、GetIt FTPやSmartFTPはデータコネクションの暗号化の要否を設定できますが、FileZillaはSSLを使うかどうかしか設定できないなど、違いがあるので、使用するクライアントを選んでください。
> データ自体に特段機密性がないなら、これもありではないでしょうか?
> 因みに、データコネクションも暗号化するかどうかはHPでも最後に少し記述してあるとおり、サーバ側の機能ではなくクライアント側の機能なので、クライアント側でデータコネクションも暗号化するかどうか設定すればいいだけです。おやじがHPで紹介している、GetIt FTPやSmartFTPはデータコネクションの暗号化の要否を設定できますが、FileZillaはSSLを使うかどうかしか設定できないなど、違いがあるので、使用するクライアントを選んでください。
早速のお返事、ありがとうございます。
ログインだけでも暗号化するのは、やはりしないよりいいですよね。
それにしてもクライアントによって暗号の要否が設定できるなんて全く目から鱗でした。
ProFTPDでは一度サーバーでSSL使用に設定してしまうとSSL化していないクライアントからは接続できなくなりますが、これは少なくともログイン時はSSLでないと駄目ということなのでしょうね。
使っているのはI-OデータのGlanTankというハードウェアなのですが、こちらのDebianOSの文字コードがUTF-8であるため対応しているクライアントが限られます。UTF-8対応はNextFTPとSmartFTPくらいだと思ってましたが、初めて名前を聞くGetIt FTPはUTF-8に対応しているのでしょうか。少し調べてもよく分かりません。
とりあえずはSSLの切り替えの出来るSmartFTPを使ってみようと思います。ただこのFTPは前に少し試したときに文字コードの問題が、うまく解決しなかったのですが再度挑戦してみることにします。
またその後の報告の書き込みをさせて下さい。宜しくお願いいたします。
> ログインだけでも暗号化するのは、やはりしないよりいいですよね。
はるかにマシと思います。
> それにしてもクライアントによって暗号の要否が設定できるなんて全く目から鱗でした。
> ProFTPDでは一度サーバーでSSL使用に設定してしまうとSSL化していないクライアントからは接続できなくなりますが、これは少なくともログイン時はSSLでないと駄目ということなのでしょうね。
「TLSRequired off」なら、ユーザがSSL接続してくればSSLで対応するし、普通のFTPで接続してくればFTPで動きます。おやじはanonymousも動かしているので、このモードです。
これをonにすると、SSL以外でつながらなくなります。
> 使っているのはI-OデータのGlanTankというハードウェアなのですが、こちらのDebianOSの文字コードがUTF-8であるため対応しているクライアントが限られます。UTF-8対応はNextFTPとSmartFTPくらいだと思ってましたが、初めて名前を聞くGetIt FTPはUTF-8に対応しているのでしょうか。少し調べてもよく分かりません。
おやじが使用しているSuSE9.3もUTF-8ですが、普通にFFFTPでsjisのまま使ってますが・・・。 クライアント側がUTF-8なのですか? サーバ側で見るとsjisファイルを送ると確かにバケますが、No.5521関連でも書きましたが、Proftpdなら「nkf -w」すればいいだけなので、特段不都合はないですが・・・。
> とりあえずはSSLの切り替えの出来るSmartFTPを使ってみようと思います。ただこのFTPは前に少し試したときに文字コードの問題が、うまく解決しなかったのですが再度挑戦してみることにします。
> 「TLSRequired off」なら、ユーザがSSL接続してくればSSLで対応するし、普通のFTPで接続してくればFTPで動きます。おやじはanonymousも動かしているので、このモードです。
> これをonにすると、SSL以外でつながらなくなります。
おおっ!!なんと素晴らしい! というか単に勉強不足なのでしょうが、これは嬉しいことを聞いてしまいました。
> おやじが使用しているSuSE9.3もUTF-8ですが、普通にFFFTPでsjisのまま使ってますが・・・。 クライアント側がUTF-8なのですか? サーバ側で見るとsjisファイルを送ると確かにバケますが、No.5521関連でも書きましたが、Proftpdなら「nkf -w」すればいいだけなので、特段不都合はないですが・・・。
クライアントの設定をUTF-8にしないと日本語がまともに見えないのでFFFTPは使えないと思っているのでが・・・この問題は後ほどゆっくり検討してみます。
NextFTPだと問題なく日本語表示できております。そしてこのクライアントでは出来ないと思っていたSSLログイン+平文データ通信が設定可能なことに今日気づきました。試してみるとうまくいって、ほっとしました。
ところが、しっかり問題が残っておりました。
proftpdの通常設定からSSL化するために
# </SSLの設定>
# <IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd-tls.log
TLSProtocol SSLv23
TLSCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
TLSRequired on (← 今回offに書換)
TLSRSACertificateFile /usr/local/certs/server.crt
TLSRSACertificateKeyFile /usr/local/certs/server.key
TLSVerifyClient off
# </IfModule>
を追記するとログイン自体はSSLでできるようになったのですが中身が見えません。
そこで、よく分からないなりに下記を追記して、ルーターを転送設定しました。
MasqueradeAddress ***.***.*** (Dnsアドレス)
PassivePorts 8055 8060
こうすると何とかSSLで通信可能になりました(嬉)
ところがこの設定でSSLでなく平文接続をしようとするとルーターが固まります。
最後に追記した2行をコメントアウトすると平文でならOKなのですが。
ルーターは メルコのBBR-4HGなのですが、どこか根本的に理解できていないように思います。
まるで手取りになってしまって申し訳ないのですが、何かアドバイスを頂けると大変ありがたいです。
どうぞ、よろしくお願いいたしますm(_ _)m
> > 「TLSRequired off」なら、ユーザがSSL接続してくればSSLで対応するし、普通のFTPで接続してくればFTPで動きます。おやじはanonymousも動かしているので、このモードです。
> > これをonにすると、SSL以外でつながらなくなります。
>
> おおっ!!なんと素晴らしい! というか単に勉強不足なのでしょうが、これは嬉しいことを聞いてしまいました。
書いてあることは、できればしっかり見てほしいですね。わかりにくいならなるべくわかりやすくしたいので、具体的に指摘していただくと嬉しいのですが?
> > おやじが使用しているSuSE9.3もUTF-8ですが、普通にFFFTPでsjisのまま使ってますが・・・。 クライアント側がUTF-8なのですか? サーバ側で見るとsjisファイルを送ると確かにバケますが、No.5521関連でも書きましたが、Proftpdなら「nkf -w」すればいいだけなので、特段不都合はないですが・・・。
> クライアントの設定をUTF-8にしないと日本語がまともに見えないのでFFFTPは使えないと思っているのでが・・・この問題は後ほどゆっくり検討してみます。
まともに見えないというのは、どこから何を見たときですか? FFFTPでアップロード・ダウンロードしているだけなら何も問題ありません。問題は、そのファイルをサーバ機で見るときです。サーバ機上で移動したりしないのであれば、nkfを使えばいいだけです。
動かすとなるとファイル名を指定しなければならず、それはできないので駄目ですが・・。というより、いろいろ問題がでるので、基本的には日本語名をやめたほうが良いのですが・・・。
> NextFTPだと問題なく日本語表示できております。そしてこのクライアントでは出来ないと思っていたSSLログイン+平文データ通信が設定可能なことに今日気づきました。試してみるとうまくいって、ほっとしました。
>
> ところが、しっかり問題が残っておりました。
> proftpdの通常設定からSSL化するために
>
> # </SSLの設定>
> # <IfModule mod_tls.c>
> TLSEngine on
> TLSLog /var/log/proftpd-tls.log
> TLSProtocol SSLv23
> TLSCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
> TLSRequired on (← 今回offに書換)
> TLSRSACertificateFile /usr/local/certs/server.crt
> TLSRSACertificateKeyFile /usr/local/certs/server.key
> TLSVerifyClient off
> # </IfModule>
>
> を追記するとログイン自体はSSLでできるようになったのですが中身が見えません。
> そこで、よく分からないなりに下記を追記して、ルーターを転送設定しました。
>
> MasqueradeAddress ***.***.*** (Dnsアドレス)
> PassivePorts 8055 8060
>
> こうすると何とかSSLで通信可能になりました(嬉)
> ところがこの設定でSSLでなく平文接続をしようとするとルーターが固まります。
> 最後に追記した2行をコメントアウトすると平文でならOKなのですが。
> ルーターは メルコのBBR-4HGなのですが、どこか根本的に理解できていないように思います。
このあたりがすんなりわかるようなら、ネットワークを含めてFTP通信の仕組みが全て理解できているということと思います。
結論から言えば、Loboさんがルータを変えないかぎり、SSLと非SSLを同時にサポートすることはできません。
状況証拠的には、、MasqueradeAddressとPassivePortsの設定をせず、平文ならはうまくいくということから歴然です。メルコのBBR-4HGはFTPサーバを家庭内で構築した時に、外部にPASVモードで公開するためFTP通信(21番ポート)をモニタしていて、サーバがPassiveコマンドの応答でクライアントに返送するサーバのプライベートアドレスを自動的にWAN側のグローバルアドレスに変換して、ユーザが意識しなくてもPASVモードでのサーバ公開ができるよにする機能が動作しています。
下記の2つをよく読んでみてください。
http://www.aconus.com/~oyaji/router/ftp.htm
http://www.aconus.com/~oyaji/router/pasv.htm
まったくお恥ずかしい限りです。
せっかく分かりやすく書いて下さっているのに精読もせず調子にのって質問ばかりしておりました。
それにしてもこちらでは誠に有益な情報に加え、おやじさんの暖かい人柄が身にしみましてございます。
問題点については非常にスッキリと致しました。重ねて御礼申し上げます。
今後ともどうぞよろしくお願いいたします。