Article delegate-ja/140 of [1-251] on the server localhost:7119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
[Reference:<_A139@delegate-ja.ML_>]
Newsgroups: mail-lists.delegate-ja

[DeleGate-Ja] Re: SVN (WebDAV) SSL リバースプロクシ構築時にはまった点
12 Jul 2008 13:02:43 GMT ysato@delegate.org (Yutaka Sato)
The DeleGate Project

In message <_A139@delegate-ja.ML_> on 07/12/08(19:53:23)
you Shigeharu Kondo <ppiaabrv6-mxhgu47jjwxw.ml@delegate.org> wrote:
 |近藤です。
 |
 | ブログではないので、ここに、この内容を書いて良いかわかりま
 |せんが、はまった点、問題点を書きます。

大変有益なフィードバックをありがとうございます。

 |4. はまった点
 |(1) libssl.so/libcrypto.so
 | 実行時に libssl、libcrypto をダイナミックリンク出来ないエ
 |ラーとなる。
 | CentOS 5.2 の SSL は、現状下記で構成されている。
 |    /lib/libssl.so.6 -> libssl.so.0.9.8b
 |    /lib/libcrypto.so.6 -> libcrypto.so.0.9.8b
 | DYLIB に絶対パスを設定してもなぜかうまくいかない。
 | しかたなく、cp -p /lib/libssl.so.6 $DGROOT/lib/libssl.o
 |(libcrypto も)したら OK になった。
 | (CentOS には、libssl.so がない。)

絶対パスでの動的ライブラリの指定が有効でないOSはありますね。
(MacOSXもそうです)。
もともとDYLIBは、動的ライブラリのテンプレートを記述するものなので、
この場合には、

  DYLIB="+,lib*.so.6"

あるいは、

  DYLIB="+,lib*.so.0.9.8b"

とすれば良いと思います。
<URL:http://www.delegate.org/delegate/Manual.htm#DYLIB>


 |(2) SSL 証明書の入れ先
 | 色々調べて下記がやっとわかった。
 | $DGROOT/lib/server-cert.pem
 | $DGROOT/lib/server-key.pem
 | 接続先ごとに変えることも出来る様であるが。トライしていな
 |い。
 | (自己証明なので、これでよしとした)

自身の証明書は、

  DGROOT/etc/certs/me.pem

に入れるのが、9.8.0 以降の推奨です。
<URL:http://www.delegate.org/mail-lists/delegate/13991>
<URL:http://www.delegate.org/delegate/Manual.htm?CERTDIR>


 |(3) NG, this executable is not signed
 | しばらくたって、設定変更時などで DeleGate を再起動する
 |と、NG, this executable is not signed で立ち上がらない。
 | 再度 make すれば直る。
 | これは、CentOS の問題かも。自動アップデート等で、何かが書
 |き換わったのかもしれない。
 | 再度サインできるかもしれないが、make も早いので、当面この
 |まま。(すこし不安)

"not signed" で立ち上がらないのではなくて、実行ファイルが何らかの形で
make 時から書換えられている時に、起動に失敗します。ログファイル中には
"checked integirity:ERROR ..." と記録されます。
これの起こるひとつの原因としては、DeleGateの起動時にSSLの、というかcrypt
の動的ライブラリが組み込めなかった、というのがあります。その場合には、
ログ中に "checked integrity:ERROR" に表示されるMD5の値が 0000000... に
なります。
また、以下のように実行ファイル中に組み込まれた自身のMD5を更新すれば解消
します(これがmake時に行なわれているわけです)。

  delegated -Fesign -w

<URL:http://www.delegate.org/mail-lists/delegate-en/03729>


 |(4) /repos の HTTP 認証後、パスが /bbb になってしまう
 | bbb.lan.kaisya.co.jp と repos.lan.kaisya.co.jp が、バー
 |チャルホストで、同一 IP アドレスであった。
 | 佐藤さんから、aaa、bbb、repos に相互参照がなければ、MOUNT
 |に direction=bif オプションを付ければ、OK と教えてもらった。
 | 基本的にバーチャルホスト名だけで、MOUNT 先のマッチングを出
 |来るようにしたいとのことでした。

実際この方法(direction=bif)が通用するのは、仮想サーバ間に全く
相互参照が存在しない場合で、一般的には通用しません。
9.8.2-pre46 でネームベースの仮想サーバへのMOUNTを実装しましたので、
今後はその方法 (nvservマウントオプション)を推奨します。

<URL:http://www.delegate.org/mail-lists/delegate/14045>


 |(5) ERROR: Unknown internal: PROPFIND
 | SVN の 2 回目の PROPFIND メソッドで、パスなしのエラーがで
 |る。
 | 最初の PROFIND が返した XML に LAN 内のパスが記述されてい
 |るが、リバース時にそのまま通した為、返したパスを使用した、2
 |回目の PROFIND がパスなしになっていた。
 |
 | 佐藤さんに URICONV=where:any を入れる様に教えてもらった
 |が、だめだった。
 | SVN サーバが返す XML は、1 行に複数のタグを記述している
 |為、その中に書かれている <D:href> を DeleGate が認識出来ず
 |に、書き換わらない部分が残ったのが原因であった。
 |
 | うちの SVN サーバのパスは、必ず /repos/XXX なので、内部 /
 |repos を 外部 /repos に MOUNT させ、XML 内のパスを書き換えな
 |い様にしたら OK になった。(URICONV=where:any を外した)
 |
 | これに関しては、src/url.c を改良すれば、直りそう。

少なくとも例のパッチ(pre46で組み込み済み)で、

  <d:src>/path</d:src>
  <lp1:x><d:src>/path</d:src></lp1:x>

は、ともに同様に書換えられることは確認していますので、何が問題
なのか不明です。。。でしたが、今近藤さんの実際の例であった
<lp1:version-controlled-configuration> というの試してみたら、
書換えが起こりませんでした(^^;
XMLのエレメント名のバッファが32バイトで、この例でではそれを越えて
いるため、スキャンが失敗していたのでした。
これは(pre48で)同封のパッチのように拡張します。

また、MOUNTによるXMLの書換えは「DeleGate/9.x のうちにはデフォルトに
する」つもりでいるのですが、まだ実行していません。
今回のような問題もありましたので、実行してなくて良かったというか、
実行してなかったので問題が発見されなかった、といいますか....

<URL:http://www.delegate.org/mail-lists/delegate/13304>


 |(6) SVN のコミットがエラー
 | SVN のコミット時の MKACTIVITY メソッドが許可されていなかっ
 |たのが原因。とりあえず HTTPCONF:method:* を追加したら OK。

よく使われるWebDAVのメソッドは9.0.3でデフォルトで通すようにしましたが、
WebDAVのどのメソッドがセキュリティ上問題になり得るかは検討していません。
MKACTIVITY も、(デフォルトで許可している)REPORT と同じく RFC3253 に
あるので、デフォルトに追加するという手もありますが、若干危なそうな
においのするメソッドではありますw
なんにしても、WebDAV以外も含めて全てのメソッドを許可してしまうのは
危険ですから、実際に必要なメソッドだけを追加するのが良いと思います。

  HTTPCONF="methods:+,MKACTIVITY"

<URL:http://www.delegate.org/mail-lists/delegate/13049>
<URL:http://www.delegate.org/delegate/Manual.htm#HTTPCONF>


 |(7) 不正使用対策
 |  佐藤さんから下記を入れるよう教えてもらった。
 |    RELAY=no    ## プロキシとしての使用を拒否する
 |    REACHABLE="*.kaisya.co.jp"  ## アクセス先を制限

このあたりは、プロキシとしての使用、リバースプロキシとしての使用、
オリジンサーバとしての使用などを指定するか、判定して、デフォルトの
アクセス制御のセットを切り替えられるようにすると良いかなと思っています。

                   9 9  
┌─┐┬┌──┬┐ //\^^ ( e ); {Do the more with the less -- B. Fuller}
├─┤│└─┐│ / 877m\_<   >_ <URL:http://www.delegate.org/delegate/>
┴ └┴──┘┴──────────────────────────────
佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人)

*** delegate9.8.2-pre47/src/url.c	Sun Jul  6 17:47:13 2008
--- delegate9.8.2-pre48/src/url.c	Sat Jul 12 21:41:28 2008
***************
*** 568,574 ****
  		    if( ch == '<' ){
  			char inattr;
  			CStr(dom,32);
! 			CStr(name,32);
  			refQStr(np,name); /**/
  			const char *nx;
  
--- 568,574 ----
  		    if( ch == '<' ){
  			char inattr;
  			CStr(dom,32);
! 			CStr(name,128);
  			refQStr(np,name); /**/
  			const char *nx;
  

  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V