¿Qué necesito configurar para asegurarme de que mi software use / dev / urandom?

27

Al configurar un servidor, ¿qué cambios de configuración necesito para asegurarme de que todo el software usa /dev/urandom en lugar de /dev/random ?

Algunos servidores no tienen mucha entropía en el grupo de entropía (por ejemplo, VPS). Si un componente de software usa /dev/random , entonces puede bloquear y hacer que el servidor se vuelva misteriosamente más lento. ¿Hay algún software que viene de fábrica usando /dev/random de forma predeterminada? Si es así, ¿cómo puedo configurarlo para forzarlo a usar /dev/urandom ? Sería bueno tener una lista de verificación de los ajustes de configuración para establecer, al configurar un nuevo entorno VPS.

    
pregunta D.W. 01.05.2012 - 00:58
fuente

4 respuestas

25

Consejo general

Cualquier programa escrito en Java

Añadir

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

o

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

a la invocación de la línea de comandos utilizada para iniciar el proceso de Java. (Sin esto, Java usa /dev/random para inicializar su SecureRandom class , lo que puede hacer que el código de Java se bloquee inesperadamente).

Alternativamente, en el archivo de configuración $JAVA_HOME/jre/lib/security/java.security , agregue la línea

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

Nota al pie: En los ejemplos anteriores, necesita el nombre de archivo de aspecto loco, por ejemplo, /./ extra, para engañar a Java para que acepte su nombre de archivo. Si solo usa /dev/urandom , Java decide que realmente no quiso decir eso y reemplaza lo que escribió con /dev/random . Locura!

Chroot

Si está iniciando algún servicio en un entorno chroot, no olvide crear el dispositivo /dev/urandom dentro de su directorio chroot.

Software específico

Apache mod_ssl

Utilizar

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

en el archivo de configuración mod_ssl. Evite utilizar file:/dev/random con SSLRandomSeed .

Cyrus POP3, IMAPD y SASL

Compile Cyrus SASL (libsasl) con el indicador de configuración --with-devrandom=/dev/urandom .

Por defecto, Cyrus POP3 lee desde /dev/random . No pude encontrar ningún ajuste de configuración para cambiar esto, a menos que se vuelva a compilar.

OpenLDAP

Añadir

TLSRandFile /dev/urandom

al archivo de configuración slapd.conf . (Es de esperar que este sea el valor predeterminado, pero algunas guías sugieren erróneamente el uso de /dev/random , por lo que es posible que desee volver a verificar).

Postfix

Utilizar

tls_random_source = dev:/dev/urandom

en el archivo de configuración main.cf , o

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

desde la línea de comando.

    
respondido por el D.W. 01.05.2012 - 01:15
fuente
18

Todo :

Como root , simplemente haga esto:

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

Ahora /dev/random realmente accederá a la misma lógica subyacente que /dev/urandom .

Después de este cambio, tanto /dev/random como /dev/urandom se extraerán del grupo de no bloqueo. El grupo de no bloqueo se extraerá del grupo de bloqueo, que el sistema seguirá llenando.

    
respondido por el David Schwartz 01.05.2012 - 08:05
fuente
7

Gran iniciativa de D.W. para enumerar diferentes configuraciones de software (ya soy un fanático de D.W.)

PERO - Como mencioné en mi comentario anterior , en mis servidores de VPS, personalmente prefiero instalar uno un solo componente ( haveged ) que hace que todo funcione sin problemas.

Quizás la sugerencia de @ DavidSchwartz es la única que podría ser incluso más fácil, pero no la he probado.

La configuración individual de cada componente en lugar del grupo de entropía subyacente me suena un poco tonta para ser perfectamente honesta. Cuando tengo un problema, trato de resolver la causa raíz y mantengo el principio DRY .

    
respondido por el Yoav Aner 01.05.2012 - 10:45
fuente
3

PHP

Para las sesiones de PHP, puede utilizar / dev / urandom como entropy fuente

session.entropy_file = /dev/urandom
    
respondido por el rook 01.05.2012 - 03:06
fuente

Lea otras preguntas en las etiquetas