我需要配置什么,以确保我的软件使用 /dev/urandom?

信息安全 linux 虚拟化 随机的 配置
2021-08-17 02:09:54

设置服务器时,我需要进行哪些配置更改以确保所有软件都使用/dev/urandom而不是/dev/random

一些服务器在熵池中没有太多的熵(例如,VPS)。如果软件组件使用/dev/random,那么它可能会阻塞并导致服务器变得异常缓慢。/dev/random有没有默认使用的开箱即用的软件?如果是这样,我该如何配置它以强制它使用/dev/urandom在设置新的 VPS 环境时,最好有一个要设置的配置设置清单。

4个回答

一般建议

任何用 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

脚注:在上面的示例中,您需要看起来很疯狂的文件名,例如 extra /./,以欺骗 Java 接受您的文件名。如果您只是使用/dev/urandom,Java 会认为您不是认真的,并将您编写的内容替换为/dev/random. 疯狂!

如果您在 chroot 环境中启动某些服务,请不要忘记/dev/urandom在 chroot 目录中创建设备。

特定软件

Apache mod_ssl

利用

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

在 mod_ssl 配置文件中。避免使用file:/dev/randomwith SSLRandomSeed

Cyrus POP3、IMAPD 和 SASL

使用配置标志编译 Cyrus SASL (libsasl) --with-devrandom=/dev/urandom

默认情况下,Cyrus POP3 从/dev/random. 除了重新编译之外,我找不到任何配置设置来更改它。

开放式LDAP

添加

TLSRandFile /dev/urandom

slapd.conf配置文件。(希望这应该是默认设置,但一些指南误导性地建议使用/dev/random,因此您可能需要仔细检查。)

后缀

利用

tls_random_source = dev:/dev/urandom

main.cf配置文件中,或

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

从命令行。

一切:

作为root,只需这样做:

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

现在/dev/random实际上将访问与/dev/urandom.

在此更改之后,两者都/dev/random将从/dev/urandom非阻塞池中提取。非阻塞池将从阻塞池中提取,系统仍将填充该池。

DW 的伟大举措,列出了不同的软件配置(我已经是 DW 的死忠粉了)

但是 - 正如我在之前的评论中提到的,在我的 VPS 服务器上,我个人仍然更喜欢安装一个单一的组件 ( haveged ),它可以让一切顺利运行。

也许@DavidSchwartz 的建议是唯一一个更容易的建议,但我还没有尝试过。

老实说,单独配置每个组件而不是底层熵池对我来说听起来有点傻。当我遇到问题时,我会尝试解决根本原因并保持DRY原则。

PHP

对于 PHP 会话,您可以使用 /dev/urandom 作为熵源

session.entropy_file = /dev/urandom