Wie kann ich /dev/random auf /dev/urandom verweisen

Ich habe einen Server, der nicht genug Entropie erzeugen kann, um /dev/random zu unterstützen. Die spezielle Software mit Problemen kann nicht für die Verwendung von /dev/urandom konfiguriert werden.

Ich habe versucht, /dev/random nach /dev/realrandom und Symlink /dev/random nach /dev/urandom zu verschieben, aber lsof /dev/realrandom zeigt immer noch Prozesse an, die es verwenden.

In Hat 'urandom' die gleiche Entropie von 'zufällig'?, der Vorschlag ist, mknod /dev/random 1 9 zu verwenden. Wird dies über Neustarts halten? Sollte ich udev irgendwie verwenden?

 6
Author: Community, 2011-07-12

6 answers

Sie müssen lediglich etwas wie /etc/udev/rules.d/70-disable-random-entropy-estimation.rules mit folgendem Inhalt erstellen:

# /etc/udev/rules.d/70-disable-random-entropy-estimation.rules
# Disables /dev/random entropy estimation (it's mostly snake oil anyway).
#
# udevd will warn that the kernel-provided name 'random' and NAME= 'eerandom'
# disagree.  You can ignore this warning.

# Use /dev/eerandom instead of /dev/random for the entropy-estimating RNG.
KERNEL=="random", NAME="eerandom"

# Remove any existing /dev/random, then create symlink /dev/random pointing to
# /dev/urandom
KERNEL=="urandom", PROGRAM+="/bin/rm -f /dev/random", SYMLINK+="random"
 19
Author: dlitz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-03-10 23:19:07

Sie sollten in Betracht ziehen, mehr Entropie hinzuzufügen, anstatt Ihr System zu kompromittieren.

 7
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-07-12 20:48:39

Ich habe egd verwendet, um dieses Problem zu lösen. Ich wette, Sie verwenden dies mit gpg. Ich musste gpg aus der Quelle kompilieren, damit es mit egd funktioniert, aber sobald ich es getan habe, hat es sehr gut funktioniert.

Ein weiterer Vorschlag: Melden Sie sich für ein Konto hier und laden Sie eine gob von Zufallszahlen. Ich denke, Sie können Entropie mit einem einfachen cat file_with_random_numbers > /dev/random hinzufügen. Es gibt auch ein Dienstprogramm auf dieser Site namens qrand (muss kompiliert werden IIRC), das vom Dienst heruntergeladen und /dev/random gesetzt wird für dich.

 1
Author: LawrenceC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-07-12 21:57:48

Sie können einen Symlink einrichten

ln -s /dev/urandom /dev/random

Bevor Sie dies tun, kann es ratsam sein, das ursprüngliche Zufallszeichen an eine andere Stelle zu senden, wenn Sie es erneut benötigen:

mv /dev/random /dev/chaos

Nach einem Neustart sind die Änderungen weg, aber Sie können udev-Regeln einrichten, um es zu einer dauerhaften Sache zu machen. Siehe https://n0tablog.wordpress.com/2007/11/24/running-out-of-entropy-in-debian-etch/

 1
Author: Kent Munthe Caspersen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-07-13 11:51:57

Spätere Versionen von udev können Kernel-Geräteknoten nicht umbenennen, siehe https://unix.stackexchange.com/a/120272. Als Problemumgehung können Sie diese Regel verwenden (Dateiname könnte sein /etc/udev/rules.d/70-random-is-urandom.rules):

KERNEL=="random", RUN+="/bin/ln -sf /dev/urandom /dev/random"

Es ist wahrscheinlich sicherer, KERNEL==random als KERNEL=urandom zu verwenden, da diese Version zwischen der Erstellung der Geräteknoten random und urandom frei von Rennbedingungen ist. Um beide Geräteknoten zu behalten, verwenden Sie Folgendes:

KERNEL=="random", RUN+="/bin/mv /dev/random /dev/eerandom", RUN+="/bin/ln -s /dev/urandom /dev/random"

 1
Author: Gabor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-03-16 10:03:05

Implementierung von @Kent 's Idee, dies sollte es tun:

printf '#!/bin/sh\nmv /dev/random /dev/random_original\nln -s /dev/urandom /dev/random' > /etc/init.d/random_noblock.sh
chmod +x /etc/init.d/random_noblock.sh
update-rc.d random_noblock.sh defaults 100
/etc/init.d/random_noblock.sh
 0
Author: hanshenrik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-09-19 21:57:49