毎度お世話になります 表題の件ですが Proftpd(rpm -DL) SmartFTP にてSSL環境を構築しようとしましたが
接続すると tls.logが 以下を吐き
AUTH TLS
234 AUTH TLS successful
SSH Ereor が返されます。
Mar 07 00:46:14 mod_tls/2.0.6[4002]: using default OpenSSL verification locations(see$SSL_CERT_DIR)
Mar 07 00:46:14 mod_tls/2.0.6[4003]: TLS/TLS-C requested, starting TLS handshake
all.log では
Mar 07 00:46:14 mod_tls/2.0.6[4003]: TLS/TLS-C requested, starting TLS handshake
と同じコメントが出ております?
これはルータ(サーバー側若しくは、接続クライアント側ルータの)ポートが空いていないからでしょうか?
通常のSSLを使わない通信なら出来ます。(尚、サーバーとクライアントは、外部接続です)
通常の21番ポートを使わないのでしたら ポートは、何番を開ければよいのでしょう(的が外れているかもしれません)NetGenesis SuperOPT90 と BA8000Pro 使用です サーバー側のポートは全て開けてみたのですがダメでした 御教授願えれば幸いです。
> 毎度お世話になります 表題の件ですが Proftpd(rpm -DL) SmartFTP にてSSL環境を構築しようとしましたが
> 接続すると tls.logが 以下を吐き
>
> AUTH TLS
> 234 AUTH TLS successful
> SSH Ereor が返されます。
>
> Mar 07 00:46:14 mod_tls/2.0.6[4002]: using default OpenSSL verification locations(see$SSL_CERT_DIR)
> Mar 07 00:46:14 mod_tls/2.0.6[4003]: TLS/TLS-C requested, starting TLS handshake
>
> all.log では
>
> Mar 07 00:46:14 mod_tls/2.0.6[4003]: TLS/TLS-C requested, starting TLS handshake
> と同じコメントが出ております?
>
> これはルータ(サーバー側若しくは、接続クライアント側ルータの)ポートが空いていないからでしょうか?
> 通常のSSLを使わない通信なら出来ます。(尚、サーバーとクライアントは、外部接続です)
> 通常の21番ポートを使わないのでしたら ポートは、何番を開ければよいのでしょう(的が外れているかもしれません)NetGenesis SuperOPT90 と BA8000Pro 使用です サーバー側のポートは全て開けてみたのですがダメでした 御教授願えれば幸いです。
GetIt FTP でも行ってみましたが やはり認証段階? それともタイムアウトしているようです
NATルータ越えでPASVモードでインターネット公開する場合の設定の追加
PAM認証の設定の追加
このへんを追加設定したのですが 原因が特定できません
おやじ様のページを参考に Proftpd で TLS/SSL された方で快調に稼働されている方いましたら
アドバイスお願いします。
クライアントの相性が悪いのではと思い数種類試してみましたが
同じようなところで SSH Error となります
サーバー側の(Proftpd 設定 証明書の作成)など見直しましたが
先入観に.... いるかもしれません? 打開策有りましたらお願いします。
管理者さんへ No.2756 の記事 思わずミスクリックしてしまいました お手数ですが削除願います。
> 毎度お世話になります 表題の件ですが Proftpd(rpm -DL) SmartFTP にてSSL環境を構築しようとしましたが
> 接続すると tls.logが 以下を吐き
>
> AUTH TLS
> 234 AUTH TLS successful
> SSH Ereor が返されます。
上記は、SSL Errorの誤りだと思いますが、正常なら下記のようになるはずです。(ログインからLIST取得まで) 下記は、TLS-Cでクライアント証明書ありの場合です。
220 ProFTPD 1.2.9 Server (acorn.zive.net FTP Server) [xxx.xxx.xxx.xxx]
AUTH TLS-C
234 AUTH TLS-C successful
Connected. Exchanging encryption keys...
Session Cipher: 128 bit RC4
SSL encrypted session established.
PBSZ 0
200 PBSZ 0 successful
USER oyaji
331 Password required for oyaji.
PASS (hidden)
230 User oyaji logged in.
SYST
215 UNIX Type: L8
FEAT
211-Features:
MDTM
REST STREAM
SIZE
AUTH TLS
PBSZ
PROT
211 End
PWD
257 "/" is current directory.
TYPE A
200 Type set to A
PROT P
200 Protection set to Private
PORT 192,168,xxx,xxx,12,35
200 PORT command successful
Opening data connection IP: 192.168.xxx.xxx PORT: 3107.
LIST -aL
150 Opening ASCII mode data connection for file list
Connected. Exchanging encryption keys...
Session Cipher: 128 bit RC4
SSL encrypted session established.
3166 bytes received successfully. (3.09 KB/s) (00:00:01).
226 Transfer complete.
提示されたログでは、Connected. Exchanging encryption keys...のところで、エラーになっていますので、証明書の交換のところでうまくいっていません。
従って、サーバ側の証明書の問題か?クライアント側の証明書の問題があるはずです。クライアント側の証明書に関しては、おやじのHPのとおりであれば、証明書の有無に関係なく繋がるはずです。おやじは、一応、SmartFTPはジェネレータがあるので、作成して設定していますが、Getit FTPは特に指定するところもないですが何も問題なく繋がります。従って、サーバ側の証明書が怪しいのですが、サーバ側の証明書はApache等で実績があるものですか?下の、(see$SSL_CERT_DIR)もなんとなくそのあたりの問題をうかがわせるのですが。Getit FTPでも駄目なら、まず間違いなくサーバ証明書作成に失敗している可能性が大です。
> Mar 07 00:46:14 mod_tls/2.0.6[4002]: using default OpenSSL verification locations(see$SSL_CERT_DIR)
(snip)
> これはルータ(サーバー側若しくは、接続クライアント側ルータの)ポートが空いていないからでしょうか?
> 通常のSSLを使わない通信なら出来ます。(尚、サーバーとクライアントは、外部接続です)
> 通常の21番ポートを使わないのでしたら ポートは、何番を開ければよいのでしょう(的が外れているかもしれません)NetGenesis SuperOPT90 と BA8000Pro 使用です
普通、localで試験してからというのが常識ではないですか?ネットワーク的な要素が絡んだら、仕組みが分かっていないと何がなんだかわからなくなってしまいますよね。
おやじのHPのどこかに書いたつもり(BBS?)ですが、FTPでSSLを使った場合、クライアント側がNATルータ配下にいる場合は、Activeモードでは動作できません。問題が出るのは今ここで問題となっている場所ではなくLIST取得のところなので、本件とは直接関係ありませんが、気をつけてください。この問題がでる理由は、FTP通信の仕組みとそれにNATルータがどのように関わっているかが分かれば、分かるはずです。このあたりは、おやじのHPのFTPサーバの公開を参考にしてください。簡単に、以下に示します。
理由は、単なるNATの機能だけではクライントがNATルータ越えでActiveモードで通信できないので、NATルータが21番ポートの通信をモニタし、クライアントから通知されるPORTコマンド内にあるクライアントのアドレスを、自分のWAN側のグローバルアドレスに書き換えているという特殊な処理をしているからです。SSLにしたら、ルータは通信の中身を見ることができないので書き換えができず、クライアントのプライベートアドレスがそのままサーバに伝わってしまい、結果として通信ができません。
更に言えば、OPT90はある版数から、サーバ側で使用した場合にPASVモードのサーバ側問題に対応している(先のActiveモードと同じように、Passiveコマンドの応答の中に含まれるサーバのアドレスはプライベートのため、このままでは通信できないので、ルータのグローバルアドレスに変換してくれる機能)ので、デーモン(Proftpd)でPassive対応すると逆にPassiveがうまく動作しません。従って、SSLにすると中身を変換できなくなるので、デーモン(Proftpd)でPassive対応してもうまくPassiveが動作するという変なことになります。クライアント側のルータ問題とサーバ側のルータ問題を総合的にみると、OPT90をサーバ側に使用した場合、上記問題をすり抜けられる限定的な環境を除いて、SSL対応はできないと言うことになりますので、注意してください。BA8000はこのあたりの機能はないので、デーモンで対処してあげれば大丈夫です。OPT90の機能は一見便利なのですが、使い倒そうとするとかえって邪魔な機能で、有効・無効を設定できるといいのですが。ただ、このあたりを説明書に書いても恐らくほとんどの人は理解できないので、固定化しているのだと思います。
総合的には、SSL化するならサーバ側ルータはBA8000を使用し、外部からはPassiveのみ使用する、ということになります。
こういうことがあるので、まずはlocalでやるべきです。
なお、SSL化してもポートは何も変わりませんので、既にFTPができているならルータの設定変更は一切不要です。
貴重なアドバイスありがとうございます
サーバー証明書の方は、既に動作を確認してインポートすれば正常動作します
これをアドバイス通り 今一度、作り直して再度、挑戦してみます。
現在のクライアントには、数種の ca.der ファイルが有るので
試しに別クライアント(サーバー証明書は一つも無し=自己)
から FTP-server へ 接続したら取り敢えず認証には、成功したようです
(指定しなくてもファイルを見ているのか? ca.der)
おやじさんと違うところは(手抜き)
apache 2.0.40-21.9 は、rpm からのインストール時の物 Redhat-9
mod_ssl sign.sh は、http://www.modssl.org/ から最新版を使用
(mod_ssl-2.8.16-1.3.29.tar.gz)インストールオプションで mod_ssl も
rpm で2.0.4 とバージョンが違います。
証明書の作成時 openssl dgst -md5 ../apache2/conf/* > rand.dat
は、openssl md5 * >rand.datとし ファイルを覗きましたが
乱数生成されている模様。
SmartFTP の証明書は、ca.der を指定 3度作り直してみましたが
http の方では、証明書が通常通り機能しており問題ないように見える
httpd ------rpm 2.0.40-21.9
mod_ssl ----rpm 2.0.4
mod_ssl-----tar.gz 2.8.16-1.3.29 (sign-sh サーバ用デジタル証明書 作成用)
--------
220 ProFTPD 1.2.9 Server (*** FTP Server) [xxx.xxx.xxx.xxx]
AUTH TLS
234 AUTH TLS successful
Connected. Exchanging encryption keys...
Session Cipher: 128 bit RC4
SSL encrypted session established.
PBSZ 0
200 PBSZ 0 successful
USER ***
331 Password required for oyaji.
PASS (hidden)
230 User *** logged in.
SYST
215 UNIX Type: L8
FEAT
211-Features:
MDTM
REST STREAM
SIZE
AUTH TLS
PBSZ
PROT
211 End
PWD
257 "/" is current directory.
TYPE A
200 Type set to A
PROT P
200 Protection set to Private
PORT xxx,xxx,xxx,xxx,14,25
200 PORT command successful
Opening data connection IP: xxx.xxx.xxx.xxx PORT: 1500.
LIST -aL
---------
↑
ここで server time out と出ます。
従ってファイルは見えません
(最初の一回だけ見えました でもファイル操作ができず)
その後、この時点で止まるようになってしまいました
通常のセキュアでない接続は、問題なくできます。
外部サーバーとローカルで試しましたが同じ現象です
(構成も同じ)
mod_ssl のバージョンの違い 又、proftpd も rpm からのインストールで
おやじさんの作成した rpm を rpm -Uvh でバージョンアップ
apache をソースから入れ mod_ssl もソースから proftpd は、rpm -e して
おやじさんの作った物を入れて やり直した方がよいのでしょうか?
proftpd.conf で違うところは
UseReverseDNS on です 外部接続が出来ない為
tls.log です
--------
Mar 10 21:22:48 mod_tls/2.0.6[7443]: using default OpenSSL verification locations (see $SSL_CERT_DIR)
Mar 10 22:02:03 mod_tls/2.0.6[7511]: using default OpenSSL verification locations (see $SSL_CERT_DIR)
Mar 10 22:02:03 mod_tls/2.0.6[7511]: SSL/TLS-P requested, starting TLS handshake
Mar 10 22:02:04 mod_tls/2.0.6[7511]: TLSv1/SSLv3 connection accepted, using cipher RC4-MD5 (128 bits)
Mar 10 22:02:04 mod_tls/2.0.6[7511]: set RSA blinding on
Mar 10 22:02:04 mod_tls/2.0.6[7511]: Protection set to Clear
Mar 10 22:02:36 mod_tls/2.0.6[7513]: using default OpenSSL verification locations (see $SSL_CERT_DIR)
Mar 10 22:02:36 mod_tls/2.0.6[7513]: SSL/TLS-P requested, starting TLS handshake
Mar 10 22:02:36 mod_tls/2.0.6[7513]: TLSv1/SSLv3 connection accepted, using cipher RC4-MD5 (128 bits)
Mar 10 22:02:36 mod_tls/2.0.6[7513]: set RSA blinding on
Mar 10 22:02:36 mod_tls/2.0.6[7513]: Protection set to Clear
--------
GetIt FTP でも接続できませんでした
日本語の参考になるようなサイトがほとんど無いので
問題の切り分けが出来ず再度、御教授願えればと バージョンのバラバラが関係
しているしか思い当たる節がないのですが
お気づきの点、有りましたら宜しくお願いします。
> 220 ProFTPD 1.2.9 Server (*** FTP Server) [xxx.xxx.xxx.xxx]
> AUTH TLS
> 234 AUTH TLS successful
> Connected. Exchanging encryption keys...
> Session Cipher: 128 bit RC4
> SSL encrypted session established.
> PBSZ 0
> 200 PBSZ 0 successful
> USER ***
> 331 Password required for oyaji.
> PASS (hidden)
> 230 User *** logged in.
> SYST
> 215 UNIX Type: L8
> FEAT
> 211-Features:
> MDTM
> REST STREAM
> SIZE
> AUTH TLS
> PBSZ
> PROT
> 211 End
> PWD
> 257 "/" is current directory.
> TYPE A
> 200 Type set to A
> PROT P
> 200 Protection set to Private
> PORT xxx,xxx,xxx,xxx,14,25
> 200 PORT command successful
> Opening data connection IP: xxx.xxx.xxx.xxx PORT: 1500.
> LIST -aL
> ---------
> ↑
> ここで server time out と出ます。
ここまで、来ていればSSLはうまくいってます。
LISTで止まってますが、おやじのログを見てもらえばわかりますが、この後、
150 Opening ASCII mode data connection for file list
とデータコネクションが張れたメッセージが出て、その後は、データコネクション
もSSL化するようにしてあれば認証が入り、SSL化指定の有無に関わらずその後ファイル
転送があり、
226 Transfer complete
となります。つまり、150がないのでデータコネクションが張れていないということになります。
これは、サーバとクライアントの位置関係がわからないのでなんともいえませんが、ルータが
関与していない通信なら、ファイヤウォール関係ぐらいしか思いつきません。
> 従ってファイルは見えません
> (最初の一回だけ見えました でもファイル操作ができず)
> その後、この時点で止まるようになってしまいました
> 通常のセキュアでない接続は、問題なくできます。
> 外部サーバーとローカルで試しましたが同じ現象です
> (構成も同じ)
外部サーバという意味がわかりません。どこからどこへとネットワークの環境を
示していただいたほうが分かります。
> mod_ssl のバージョンの違い 又、proftpd も rpm からのインストールで
> おやじさんの作成した rpm を rpm -Uvh でバージョンアップ
> apache をソースから入れ mod_ssl もソースから proftpd は、rpm -e して
> おやじさんの作った物を入れて やり直した方がよいのでしょうか?
そういう問題ではないでしょう。
> proftpd.conf で違うところは
> UseReverseDNS on です 外部接続が出来ない為
ここも意味がわかりません。外部接続できないとはどういうことですか?
これは、アクセスしてきたクライアントのIPアドレスからホスト名をログに
残すためのもので、接続動作には全く影響がないとおやじは認識しています。
いろいろ説明いただいてますが、いじっている過程の話が混ざって書かれており、
状態が把握できません。何をどうしたときに、どういう変化があったのか?
つまりやったことと、その影響が明確にできていないので、全体がどういう状態
なのかがおやじにはうまく把握できません。
クラサバシステムがうまく動くには、クラサバが目的とする動作をするよう
適切に設定されているか、且つその間を結ぶネットワーク(ルータやファイヤウォール等)
が適切に設定されているかによります。このいずれかに問題があれば、目的の動作は
しません。問題がどこにあるかで、症状が違います。
単純な話として、SSLしなければうまくいき、SSLしたらうまくいかないという
ご説明では、上記のログになる理由が想像つきません。この間に何かこれ以外の要素が
絡んでいるはずです。
何故なら、SSL化しただけで、他を触っていなければデータコネクションが張れなく
理由はおやじには分からないからです。
ありがとうございます
>データコネクションが張れていないということになります。
>これは、サーバとクライアントの位置関係がわからないのでなんともいえませんが、ルータが
>関与していない通信なら、ファイヤウォール関係ぐらいしか思いつきません
サーバー(OPT90)解放ポート 21.22.25.80.110.443 固定 IP
|
|
WAN
|
|
クライアント(BA8000Pro) Lan→wan は、ほぼ全てのポート解放
SmartFTP の 全般>サーバー>プロトコル> FTP over SSL Explicit の時のみ不具合が出る
通常のFTPでは、問題なく通信できる
ファイアーウォールは、クライアント 全て稼働させないでも同じ結果
サーバー側は、上記ポート以外開けていません
>ここも意味がわかりません。外部接続できないとはどういうことですか?
>これは、アクセスしてきたクライアントのIPアドレスからホスト名をログに
>残すためのもので、接続動作には全く影響がないとおやじは認識しています。
UseReverseDNS off にすると <Limit LOGIN> アクセス制限のディレクティブを
追加すると上記構成ネットワークのクライアントから
の接続が出来ません (以前、どこだか忘れましたがホームページに書いてありました)
これを on にするとアクセス制限もできるし接続も出来るという状態です。
今一度、サーバー側のポート解放など試してみようと思います
細かいアドバイスありがとうございました。
> サーバー(OPT90)解放ポート 21.22.25.80.110.443 固定 IP
> |
> |
> WAN
> |
> |
> クライアント(BA8000Pro) Lan→wan は、ほぼ全てのポート解放
>
> SmartFTP の 全般>サーバー>プロトコル> FTP over SSL Explicit の時のみ不具合が出る
> 通常のFTPでは、問題なく通信できる
>
> ファイアーウォールは、クライアント 全て稼働させないでも同じ結果
> サーバー側は、上記ポート以外開けていません
BBSの限界ですかね。No.2778の一番下に書いたことを理解していただけていないようです。
この形態では、どうあがいてもFTP over SSLの通信はできないと書いたつもりなのですが。
FTP over SSLを行おうとした場合。
1. クライアントがNATルータ配下にいる場合、ActiveモードでのFTP over SSLはPortコマンド内のクライアントアドレスの変換が暗号化されているためできないので、通信できない。
2. 従って、残る方法はPassiveモードしかないが、OPT90はサーバ側でのPassiveモード時の問題への対処(Pasvコマンドの応答メッセージ内にあるサーバのアドレス変換機能)があるため、デーモン(Proftpd)でPassive対応しなくても(しないようにしないと駄目)、PASVモードでのサーバ公開ができる。しかし、FTP over SSLするとActiveモード時のクライアント側と同様に、暗号化によりOPT90は通信の中身に関与できないのでサーバアドレスの変換をできない。結果として、クライアントにはサーバのプライベートアドレスが通知され、データコネクションを張ることができない。
以上から、FTP over SSLをどうしてもやりたいなら、OPT90をサーバ側で使用する限り以下の条件でしかできません。
a)ProftpdでPassive対応する。
b)クライアントはFTP over SSL + Paasiveのみで使用する。
c)通常モードはActiveのみで運用する。
サーバ側をBA8000にするなら、aとbの条件だけになり、c項は条件から外れます。
御教授ありがとうございました
一週間試行錯誤ようやく解決です
> 以上から、FTP over SSLをどうしてもやりたいなら、OPT90をサーバ側で使用する限り以下の条件でしかできません。
>
> a)ProftpdでPassive対応する。
> b)クライアントはFTP over SSL + Paasiveのみで使用する。
> c)通常モードはActiveのみで運用する。
>
> サーバ側をBA8000にするなら、aとbの条件だけになり、c項は条件から外れます。
こちらのアドバイスを元に OPT90 の方に データコネクション用の穴を開けて
proftpd をPASV用に設定ファイルを書き換えてSmartFTP の設定でローカルポートの範囲制限でルータの穴を指定する事で解決しました。
この様な状況になった背景には(訳が解らなくなる)クライアント1で接続すると
PC 内のサーバー証明書を自動的に読み込むらしくハンドシェークエラーになる
クライアント2は証明書なる物が(サーバーの)無いのでSSL 対応で繋がる
クライアント1がメイン機なので これが切り分けできなかった事由です
(何回も削除後再インストールをしたのですが 証明書を完全に捨てないと
いくら 証明書を使用しないに設定しても どうも上手く設定が反映されないようです。
不束者ですが今後とも宜しくお願い致します。
ウイルスバスターと干渉し(SmartFTP) Uninstall しないと SSL 通信は出来ないと思います
ウイルスバスターの機能停止では無理です。 対象 OS 確認が取れている物 Windows2000Pro,WindowsXP-Pro & Home
>この様な状況になった背景には(訳が解らなくなる)クライアント1で接続すると
>PC 内のサーバー証明書を自動的に読み込むらしくハンドシェークエラーになる
>クライアント2は証明書なる物が(サーバーの)無いのでSSL 対応で繋がる
>クライアント1がメイン機なので これが切り分けできなかった事由です
>(何回も削除後再インストールをしたのですが 証明書を完全に捨てないと
>いくら 証明書を使用しないに設定しても どうも上手く設定が反映されないようです。
↑
上記はウイルス対策ソフトによるものでまったく関係がない事が判明しました
尚、ノートンは、問題なく使えます。