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

Shurrican
źródło
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 !)

asdmin
źródło
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
michel-slm
źródło
ż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

Shurrican
źródło
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)
+     )
Csabka
źródło
0

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

musi być podobny w Ubuntu

GioMac
źródło