3

chroot jail内からssl接続を確立しようとすると、次のエラーが発生します。

twisted.internet.error.ConnectionLost: Connection to the other side was lost in a non-clean fashion.

私はopenssl0.9.6とpyopensslを使用してssl接続を確立し、Linux(centos 5.5)上のpython2.4用のツイストpythonライブラリを使用しています。

いくつかのトラブルシューティングの結果、opensslが/ dev / randomファイルを読み取ろうとしているために失敗し、chroot内に/ dev/randomがないために失敗していることがわかりました。chroot内に/dev/ randomファイルを作成すると、接続が成功することを確認しました。

  • chroot内に/dev/ randomファイルを含むdevfsファイルシステムをマウントすることを考えましたが、私のアプリとそのsysadminには、最初にすべてをアンマウントせずにchrootのルートを削除するという悪い習慣があります。
  • chrootを実行する前に/dev/ randomファイルから読み取ることを考えましたが、現在の設定では、バイナリが開始される前にchrootを呼び出すようになっています。また、chrootが発生する場所を変更すると、アプリの変更が大きくなりすぎます。いつ、どのようにそれができるのかわかりません。
  • / dev / randomから読み取り、/ jail / dev / randomという名前のファイルパイプに書き込むプログラムをchrootjailの外部で実行することを考えましたが、chrootjailの内部からアクセスできます。ランダム性のソースにアクセスするためだけに、別のプロセスを実行します。また、opensslを初期化するだけでは非常に複雑に見えます。

プログラムから/dev/ randomにアクセスできない場合、opensslを初期化する正しい方法は何ですか?

4

3 に答える 3

4

コマンドラインopensslなど、opensslのランダムを偽造できます。

[root@quilt /]# openssl s_client -h
usage: s_client args
...
 -rand file:file:...
...

とにかく、openssl にはランダム性のソースが必要です。たとえばウィキペディアから、ランダムな nonce なしでは安全ではありません。

安全な接続に使用されるセッション キーを生成するために、クライアントはサーバーの公開キーで乱数を暗号化し、その結果をサーバーに送信します。サーバーのみが秘密鍵を使用して復号化できる必要があります。

ランダム性のソースがなければ、SSL/TLS は簡単にハッキングされる可能性があります。

chroot/dev/削除できるか心配な場合は、 dev全体をマウントするだけchroot/dev/random、またはマウントする代わりに作成してみませんか?chroot/dev/urandom

[root@quilt /]# mknod /dev/random c 1 8
[root@quilt /]# mknod /dev/urandom c 1 9

ところで、システムの /etc/resolv.conf と、場合によっては他のホスト、サービス、ether などもコピーする必要があります...

于 2012-03-20T06:29:36.707 に答える
3

おそらくより良い方法は、次のようにデバイス ファイルをバインド マウントすることです。

# touch chroot/dev/random
# mount --bind /dev/random chroot/dev/random

urandom についても同様です。

于 2014-12-27T11:57:39.217 に答える