Dlaczego / dev / urandom jest odczytywalny tylko przez roota od Ubuntu 12.04 i jak mogę go „naprawić”?


10

Pracowałem z szablonami Ubuntu 10.04 na wielu serwerach. Od czasu zmiany do 12.04 mam problemy, które teraz odizolowałem.

Urządzenie / dev / urandom jest dostępne tylko do rootowania.

To spowodowało, że silniki SSL, przynajmniej w PHP, na przykład file_get_contents (https: // ... zawiodły.

To także złamało czerwoną minę.

Po chmod 644 działa dobrze, ale to nie pozostaje po ponownym uruchomieniu.

Więc moje pytanie.

  1. dlaczego to? Nie widzę żadnego zagrożenia bezpieczeństwa, ponieważ ... to znaczy ... chcesz ukraść jakieś przypadkowe dane?

  2. Jak mogę to „naprawić”? Serwery są izolowane i używane tylko przez jedną aplikację, dlatego używam openvz. Myślę o czymś w rodzaju skryptu poziomu pracy ... ale jak mam to zrobić skutecznie? Maby z dpkg czy apt?

  3. To samo dotyczy vor / dev / shm. w tym przypadku całkowicie rozumiem, dlaczego nie jest dostępny, ale zakładam, że mogę to naprawić w ten sam sposób, aby naprawić / dev / urandom


Co ls -l /dev/urandompokazuje się przed zmianą uprawnień? Czy dostosowałeś któryś /etc/udev/rules.d lub /lib/udev/rules.dpliki?
David Schwartz

root@idle:~# ls -l /dev/urandom crw------- 1 root root 1, 9 May 22 14:15 /dev/urandom- nic nie ustawiłem, jest to zwykły dziewiczy serwer, nawet aktualizacja apt-get nie została jeszcze uruchomiona.
Shurrican

3
Dokumentacja wyraźnie mówi, że uprawnienia powinny być 0644. Pytanie brzmi - dlaczego nie są ?!
David Schwartz

1
FWIW, na moim świeżo zainstalowanym Precise, / dev / urandom to 0666. Podczas instalacji wybrałem „openssh server” jako jedyną opcję roli. Być może jakiś pakiet w twojej konfiguracji robi coś głupiego.
cjc

zgadzam się. moje zasady udev również mówią, że tak powinno być. myślę, że ma to coś wspólnego z wirtualizacją.
Shurrican

Odpowiedzi:


3

Przy nadmiernym odczycie z udev możesz opróżnić losową pulę, co da przewidywalne losowe liczby. Prawdopodobnie z tego powodu / dev / urandom nie jest dostępny do czytania dla wszystkich. (usunięty, ponieważ Graeme Donaldson ma rację)

Jeśli nadal chcesz zmienić uprawnienia, zajrzyj do reguł udev odpowiedzialnych za ustawianie trybów na / dev / urandom, zamiast zepsuć skrypty inicjujące.

W Debianie łatwo jest znaleźć winną zasadę:

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

W twoim przypadku MODE zdecydowanie nie jest 0666.

Jeśli chcesz, zmień go zgodnie z regułami konfiguracji udev.

Uwaga: http://lists.centos.org/pipermail/centos/2009-July/079134.html może pomóc w zmianie udev.

Zasadniczo będziesz musiał stworzyć regułę, która będzie wyglądać jak wynik grep, z wyjątkiem tego, że ma ustawiony prawidłowy tryb, i dodaj ją jako plik reguł w /etc/udev/rules.d/ (pamiętaj o możliwych różnicach w Ubuntu i Debianie !)


Jeśli / dev / urandom jest odczytywalny tylko przez root, wówczas OpenSSH i oprogramowanie łączące się z OpenSSL, GnuTLS i innymi bibliotekami kryptograficznymi musiałyby albo działać jako root, albo uruchamiać się jako root, a następnie upuszczać uprawnienia. Brzmi to jakoś znacznie gorzej.
Gerald Combs,

3
/ dev / urandom nie opiera się na puli entropii. Tylko odczyt z / dev / random powoduje wyczerpanie puli entropii.
ThatGraemeGuy

Gerald: sshd zaczyna się jako root. Na przykład, aby powiązać port 22 i suid do zalogowanego użytkownika itp.
asdmin,

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 lipca 2 12:39 / dev / urandom to naprawdę nie wygląda na błędną konfigurację, tylko na błąd, ale zostało to naprawione w nowym szablonie instalacji openvz!
Shurrican,

@ThatGraemeGuy Zdaję sobie sprawę, że jestem spóźniony na imprezę, ale to nie do końca prawda. /dev/random blokuje się, gdy oszacowanie entropii jest niskie, podczas gdy /dev/urandomnadal generuje liczby pseudolosowe, nawet gdy oszacowanie entropii jest niskie. To powiedziawszy, cała koncepcja puli entropijnej w jakiś sposób „zabrakło przypadkowości” jest myląca i pozbawiona znaczenia .
Stephen Touset

1

Jeśli chodzi o to, jak to naprawić, tymczasowa pomoc zespołu byłaby sprawiedliwa

cat "chmod 666 /dev/urandom" >> /etc/rc.local

że próbowałem, ale nie działało. teraz dodałem polecenie chmod na samym dole /etc/rc0.d/S30urandom ... który zadziałał
The Shurrican

Istnieją pewne problemy, które mogą powodować nieprawidłowe pozyskiwanie /etc/rc.local na Ubuntu - w tym jego zgodę (musi być oznaczony jako wykonywalny). patrz tutaj: bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/882254
michel-slm

wyglądał obiecująco, ale nie pomaga. także rc.local nie wydaje się zostać wykonany, próbowałem napisać prosty plik do tmp, ale to też nie zadziałało. uprawnienia są prawidłowe. Próbowałem z wykonać tylko dla roota, reszta przeczytać, a także 777 ...
The Shurrican

2
ponieważ rozwiązanie jest prawdopodobnie specyficzne dla Ubuntu, AskUbuntu jest prawdopodobnie lepszym rozwiązaniem w tym momencie. Z radością korzystam z systemd, a /etc/rc.d/rc.local po prostu działa bez usterki, tak jak to zrobiłem w skryptach systemowych inV: /
michel-slm

Pamiętaj, że powinieneś edytować /etc/rc.localplik. W moim przypadku (Ubuntu 16.04) plik zakończył się wyjściem 0, więc jeśli tylko dodasz linię, to naprawdę nie zadziała.
Alexis Wilke

1

tak naprawdę szablon openvz Ubuntu 12.04 jest teraz publiczny i naprawili uprawnienia również na uraondm, jak na urządzeniu SHM


1

Problem polegający na tym, że udevtrigger nie został uruchomiony. Spróbuj uruchomić ponownie z /etc/init.d/udevtrigger restart... a jeśli to rozwiąże problem jak dla mnie ... to zmień plik /etc/init/udevtrigger.conf:

-     and not-container)
+     )

0

W RHEL: dodaj reguły bezpieczeństwa z przesłonięciami uprawnień w /etc/security/console.perms.d/

musi być podobny w Ubuntu

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.