Warum kann / dev / urandom seit Ubuntu 12.04 nur von root gelesen werden und wie kann ich das Problem beheben?

10

Ich habe auf vielen Servern mit Ubuntu 10.04-Vorlagen gearbeitet. Seit dem Wechsel zu 12.04 habe ich Probleme, die ich jetzt isoliert habe.

Auf das Gerät / dev / urandom kann nur root zugreifen.

Dies führte dazu, dass SSL-Engines, zumindest in PHP, beispielsweise file_get_contents (https: // ..., fehlschlugen.

Es brach auch Redmine.

Nach einem chmod 644 funktioniert es einwandfrei, aber das bleibt beim Neustart nicht erhalten.

Also meine Frage.

  1. warum ist das? Ich sehe kein Sicherheitsrisiko, weil ... ich meine ... willst du zufällige Daten stehlen?

  2. Wie kann ich es reparieren? Die Server sind isoliert und werden nur von einer Anwendung verwendet. Deshalb verwende ich openvz. Ich denke an so etwas wie ein Runlevel-Skript oder so ... aber wie mache ich das effizient? Maby mit dpkg oder apt?

  3. Das gleiche gilt vor / dev / shm. In diesem Fall verstehe ich vollkommen, warum es nicht zugänglich ist, aber ich gehe davon aus, dass ich es auf die gleiche Weise "reparieren" kann, um / dev / urandom zu reparieren

Der Shurrican
quelle
Was wird angezeigt ls -l /dev/urandom, bevor Sie die Berechtigungen ändern? Haben Sie eine /etc/udev/rules.d oder /lib/udev/rules.dmehrere Dateien angepasst ?
David Schwartz
root@idle:~# ls -l /dev/urandom crw------- 1 root root 1, 9 May 22 14:15 /dev/urandom- Ich habe nichts eingestellt, dies ist ein einfacher jungfräulicher Server, noch nicht einmal ein apt-get-Update ausgeführt.
Der Shurrican
3
In der Dokumentation heißt es ausdrücklich, dass die Berechtigungen sein sollten 0644. Die Frage ist - warum sind sie nicht?!
David Schwartz
1
FWIW, auf meinem frisch installierten Precise ist / dev / urandom 0666. Während der Installation habe ich "openssh server" als einzige Rollenoption ausgewählt. Vielleicht macht ein Paket in Ihrem Setup etwas Dummes.
cjc
Genau. Meine udev-Regeln sagen auch, dass es so sein sollte. Ich denke, es hat etwas mit der Virtualisierung zu tun.
Der Shurrican

Antworten:

3

Mit übermäßigem Lesen von udev können Sie den Zufallspool entleeren, was zu vorhersehbaren Zufallszahlen führt. Wahrscheinlich ist dies der Grund, warum / dev / urandom nicht für alle lesbar ist. (gelöscht, weil Graeme Donaldson Recht hat)

Falls Sie die Berechtigung dennoch ändern möchten, lesen Sie die udev-Regeln, die für das Festlegen der Modi für / dev / urandom verantwortlich sind, anstatt Ihre Init-Skripte durcheinander zu bringen.

Unter Debian ist es leicht, die Schuldregel zu finden:

$ dpkg -L udev | xargs grep urandom
/lib/udev/rules.d/91-permissions.rules:KERNEL=="urandom", MODE="0666"

In Ihrem Fall ist MODE definitiv nicht 0666.

Ändern Sie es auf Wunsch gemäß den udev-Konfigurationsregeln.

Hinweis: http://lists.centos.org/pipermail/centos/2009-July/079134.html kann beim Ändern von udev hilfreich sein.

Grundsätzlich müssen Sie eine Regel mit dem Aussehen des grep-Ergebnisses erstellen, außer dass ein korrekter Modus festgelegt ist, und diese als Regeldatei in /etc/udev/rules.d/ hinzufügen (beachten Sie die möglichen Unterschiede zwischen Ubuntu und Debian) !)

asdmin
quelle
Wenn / dev / urandom nur von root gelesen werden kann, müssen OpenSSH und Software, die mit OpenSSL, GnuTLS und anderen Kryptografie-Bibliotheken verknüpft ist, entweder als root ausgeführt oder als root gestartet werden und dann Berechtigungen löschen. Irgendwie klingt das viel schlimmer.
Gerald Combs
3
/ dev / urandom ist nicht auf den Entropiepool angewiesen. Nur Lesevorgänge aus / dev / random führen zu einer Erschöpfung des Entropiepools.
ThatGraemeGuy
Gerald: sshd beginnt als root. Zum Beispiel, um Port 22 zu binden und an den angemeldeten Benutzer usw. zu
senden
root @ redmine: ~ # dpkg -L udev | xargs grep urandom /lib/udev/rules.d/50-udev-default.rules:KERNEL=="null|zero|full|random|urandom ", MODE =" 0666 "root @ redmine: ~ # ls -lha / dev / urandom crw ------- 1 root root 1, 9 Jul 2 12:39 / dev / urandom es sieht wirklich nach keiner Fehlkonfiguration aus, sondern nach einem Fehler, der jedoch in der neuen openvz-Installationsvorlage behoben ist!
The Shurrican
@ThatGraemeGuy Mir ist klar, dass ich zu spät zur Party komme, aber das ist nicht ganz richtig. /dev/random blockiert, wenn die Entropieschätzung niedrig ist, während /dev/urandomweiterhin Pseudozufallszahlen erzeugt werden, selbst wenn die Entropieschätzung niedrig ist. Das gesamte Konzept des Entropiepools ist jedoch irreführend und bedeutungslos .
Stephen Touset
1

Wie man es reparieren kann, wäre ein vorübergehendes Pflaster zu einfach

cat "chmod 666 /dev/urandom" >> /etc/rc.local
michel-slm
quelle
dass ich versucht habe, aber nicht funktioniert hat. Jetzt habe ich den Befehl chmod ganz unten in /etc/rc0.d/S30urandom hinzugefügt ... das hat funktioniert
The Shurrican
Es gibt einige Probleme, die dazu führen können, dass /etc/rc.local unter Ubuntu nicht ordnungsgemäß bezogen wird - einschließlich seiner Berechtigung (es muss als ausführbar markiert werden). siehe hier: bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/882254
michel-slm
sah vielversprechend aus, hilft aber nicht. Auch die rc.local scheint nicht ausgeführt zu werden. Ich habe versucht, eine einfache Datei in tmp zu schreiben, aber das hat auch nicht funktioniert. Die Berechtigungen sind korrekt. Ich versuchte mit Execute nur für Root, Rest lesen und auch 777 ...
The Shurrican
2
Da die Lösung wahrscheinlich Ubuntu-spezifisch ist, ist AskUbuntu derzeit wahrscheinlich die bessere Wahl. Ich benutze selig systemd und /etc/rc.d/rc.local funktioniert einfach ohne einen Fehler wie unter systemV initscripts: /
michel-slm
Beachten Sie, dass Sie die /etc/rc.localDatei bearbeiten sollten . In meinem Fall (Ubuntu 16.04) endete die Datei mit dem Exit 0. Wenn Sie also nur eine Zeile anhängen, würde dies in der Tat nicht funktionieren.
Alexis Wilke
1

Tatsächlich ist die Ubuntu 12.04 OpenVZ-Vorlage jetzt öffentlich und sie hat die Berechtigungen sowohl auf dem Uraondm als auch auf dem SHM-Gerät korrigiert

Der Shurrican
quelle
1

Das Problem, dass udevtrigger nicht gestartet wurde. Versuchen Sie neu zu starten mit /etc/init.d/udevtrigger restart... und wenn es das Problem wie für mich löst ... dann ändern Sie die Datei /etc/init/udevtrigger.conf:

-     and not-container)
+     )
Csabka
quelle
0

In RHEL: Fügen Sie Sicherheitsregeln mit Berechtigungsüberschreibungen in /etc/security/console.perms.d/ hinzu.

muss in Ubuntu ähnlich sein

GioMac
quelle