web-dev-qa-db-ja.com

ソフトウェアが/ dev / urandomを使用するようにするには、何を設定する必要がありますか?

サーバーをセットアップするときに、すべてのソフトウェアが/dev/urandomではなく/dev/randomを使用するようにするには、どのような構成変更が必要ですか?

一部のサーバーは、エントロピープール(VPSなど)に多くのエントロピーを持っていません。ソフトウェアコンポーネントが/dev/randomを使用している場合、それがブロックされ、サーバーが不思議なほど遅くなることがあります。デフォルトで/dev/randomを使用してすぐに使用できるソフトウェアはありますか?その場合、/dev/urandomを使用するように強制するにはどうすればよいですか?新しいVPS環境をセットアップするときに、構成設定のチェックリストを用意しておくと便利です。

28
D.W.

一般的なアドバイス

Javaで書かれたプログラム

追加

-Djava.security.egd=file:///dev/urandom switch

または

-Djava.security.egd=file:/dev/./urandom

Javaプロセスを開始するために使用されるコマンドライン呼び出しに追加します。(これがない場合、Javaは/dev/randomを使用してSecureRandom classをシードしますJavaコードが予期せずブロックする可能性があります。)

または、$Java_HOME/jre/lib/security/Java.security構成ファイルに次の行を追加します

securerandom.source=file:/dev/./urandom

脚注:上記の例では、クレイジーなファイル名、たとえば、追加の/./を使用して、Javaをだましてファイル名を受け入れるようにします。 /dev/urandomを使用するだけで、Javaは、それが本当に意味していないと判断し、書き込んだ内容を/dev/randomに置き換えます。クレイジーです!

Chroot

Chroot環境でサービスを開始する場合は、chrootディレクトリ内に/dev/urandomデバイスを作成することを忘れないでください。

特定のソフトウェア

Apache mod_ssl

使用する

SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect file:/dev/urandom 512

mod_ssl構成ファイル内。 SSLRandomSeedfile:/dev/randomを使用しないでください。

Cyrus POP3、IMAPD、およびSASL

Cyrus SASL(libsasl)を構成フラグ--with-devrandom=/dev/urandomでコンパイルします。

デフォルトでは、Cyrus POP3は/dev/randomから読み取ります。これを変更するための構成設定が見つかりませんでした。再コンパイルが必要です。

OpenLDAP

追加

TLSRandFile /dev/urandom

slapd.conf構成ファイルに。 (これがデフォルトであるべきですが、ガイドによっては/dev/randomの使用を誤解を招く可能性があるため、再確認することをお勧めします。)

Postfix

使用する

tls_random_source = dev:/dev/urandom

main.cf構成ファイル内、または

Sudo postconf -e 'tls_random_source = dev:/dev/urandom'

コマンドラインから。

25
D.W.

すべて:

rootとして、次のようにします。

rm /dev/random
mknod /dev/random c 1 9

これで/dev/randomは実際には/dev/urandomと同じ基本ロジックにアクセスします。

この変更後、/dev/random/dev/urandomの両方が非ブロッキングプールから取得されます。非ブロッキングプールは、システムが引き続き満たすブロッキングプールから取得されます。

19
David Schwartz

D.W.による素晴らしいイニシアチブさまざまなソフトウェア構成を一覧表示します(私はすでにD.W.の熱狂的なファンです)

しかし、私が 私の以前のコメント で述べたように、私のVPSサーバーでは、個人的に、すべてをスムーズに実行する単一のコンポーネント( haveged )をインストールすることを好みます。

おそらく、@ DavidSchwartzの提案は、もっと簡単にできる唯一の提案ですが、私は試していません。

根本的なエントロピープールの代わりに各コンポーネントを個別に構成することは、完全に正直であると私には少しばかげているように思えます。問題が発生したときは、根本的な原因を解決し、 [〜#〜] dry [〜#〜] の原則を守ります。

8
Yoav Aner

[〜#〜] php [〜#〜]

PHPセッションの場合、/ dev/urandomを エントロピーソースとして使用できます

session.entropy_file = /dev/urandom
3
rook