Чому / dev / urandom читається тільки коренем з Ubuntu 12.04 і як я можу це "виправити"?


10

Раніше я працював із шаблонами Ubuntu 10.04 на багатьох серверах. З моменту зміни до 12.04 у мене виникли проблеми, які я зараз ізолював.

Пристрій / dev / urandom доступний лише для root.

Це спричинило збій двигунів SSL, принаймні в PHP, наприклад file_get_contents (https: // ...).

Це також зламало redmine.

Після chmod 644 він працює добре, але це не залишається при перезавантаженні.

Тож моє запитання.

  1. чому це? Я не бачу ризику для безпеки, тому що ... я маю на увазі .. хочете вкрасти якісь випадкові дані?

  2. Як я можу це "виправити"? Сервери ізольовані та використовуються лише одним додатком, тому я використовую openvz. Я думаю про щось на кшталт сценарію з пробігом або про таке ... але як це зробити ефективно? Maby з dpkg або apt?

  3. Те саме стосується vor / dev / shm. в цьому випадку я повністю розумію, чому його недоступно, але я припускаю, що можу "виправити" це саме тим самим способом виправити / dev / urandom


Що ls -l /dev/urandomвідображається перед тим, як змінити дозволи? Ви налаштували будь-які файли /etc/udev/rules.dчи /lib/udev/rules.dфайли?
Девід Шварц

root@idle:~# ls -l /dev/urandom crw------- 1 root root 1, 9 May 22 14:15 /dev/urandom- Я нічого не встановлював, це звичайний сервер незайманих, навіть не вдалося отримати оновлення.
Шурик

3
У документації конкретно зазначено, що дозволи повинні бути 0644. Питання - чому вони ?!
Девід Шварц

1
FWIW, на моєму щойно встановленому Precision, / dev / urandom є 0666. Під час встановлення я вибрав "openssh server" як єдиний варіант ролі. Можливо, якийсь пакунок у вашій установці робить щось німим.
cjc

я згоден. мої правила udev також кажуть, що так і має бути. я думаю, це має щось спільне з віртуалізацією.
Шуррікан

Відповіді:


3

При надмірному зчитуванні з udev, ви можете злити випадковий пул, в результаті чого можна передбачити випадкові числа. Ймовірно, це причина, чому / dev / urandom доступний не для читання для всіх. (видалено, оскільки Граме Дональдсон має рацію)

Якщо ви все-таки хочете змінити дозвіл, загляньте в правила udev, що відповідають за встановлення режимів на / dev / urandom, замість того, щоб зіпсувати свої сценарії init.

У Debian легко знайти правило провини:

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

У вашому випадку РЕЖИМ точно не є 0666.

За бажанням змініть його відповідно до правил конфігурації udev.

Примітка: http://lists.centos.org/pipermail/centos/2009-July/079134.html може допомогти змінити udev.

В основному вам потрібно буде створити правило з таким виглядом, як результат grep, за винятком того, що має правильний режим режиму, і додати його як файл правил у /etc/udev/rules.d/ (майте на увазі можливі відмінності в Ubuntu та Debian !)


Якщо / dev / urandom читається тільки коренем, то OpenSSH та програмне забезпечення, яке пов'язує з OpenSSL, GnuTLS та іншими бібліотеками криптовалют, потрібно буде або запускати як root, або запускати як root, а потім скидати привілеї. Якось це звучить набагато гірше.
Джеральд Гребінь

3
/ dev / urandom не покладається на пул ентропії. Лише зчитування з / dev / random викликає виснаження пулу ентропії.
ThatGraemeGuy

Джеральд: sshd починається як корінь. Наприклад, прив’язати порт 22 та подати заяву на користувача, який увійшов у систему тощо.
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 липня 12:39 / dev / urandom це насправді виглядає не як неправильна конфігурація, а помилка, однак вона зафіксована у новому шаблоні установки openvz!
Шурікський

@ThatGraemeGuy Я розумію, що я спізнююсь на вечірку, але це не зовсім правильно. /dev/random блокує, коли оцінка ентропії низька, а /dev/urandomпродовжує видавати псевдовипадкові числа, навіть коли оцінка ентропії низька. Однак, вся концепція пулу ентропії якось "закінчується випадковістю" є оманливою і безглуздою .
Стівен Тузет

1

Що стосується того, як ви можете це виправити, тимчасова допомога буде просто

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

що я намагався, але не працював. тепер я додав команду chmod просто внизу /etc/rc0.d/S30urandom ..., що спрацювало
шуррик

Існують деякі проблеми, які можуть спричинити неправильне отримання /etc/rc.local Ubuntu - включаючи його дозвіл (він повинен бути позначений як виконуваний). дивіться тут: bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/882254
michel-slm

виглядав багатообіцяючим, але не допомагає. також rc.local, здається, не виконується, я намагався написати простий файл в tmp, але це теж не працювало. дозволи правильні. Я намагався виконати лише для root, відпочинок читати, а також 777 ...
Шурик

2
оскільки рішення, ймовірно, є специфічним для Ubuntu, AskUbuntu, ймовірно, є кращою ставкою на даний момент. Я з блаженством використовую systemd, і /etc/rc.d/rc.local просто працює без збоїв, як це робилося під systemV initscripts: /
michel-slm

Зауважте, що ви повинні відредагувати /etc/rc.localфайл. У моєму випадку (Ubuntu 16.04) файл закінчився виходом 0, тож якщо ви просто додасте рядок, він справді не працює.
Алексіс Вілке

1

насправді шаблон ubuntu 12.04 openvz тепер відкритий, і вони фіксували дозволи також на uraondm, як на пристрої shm


1

Проблема, що udevtrigger не була запущена. Спробуйте перезапустити з /etc/init.d/udevtrigger restart... і якщо це вирішить проблему як для мене ... тоді змініть файл /etc/init/udevtrigger.conf:

-     and not-container)
+     )

0

В RHEL: додайте правила безпеки з відмінами дозволу в /etc/security/console.perms.d/

повинні бути схожими в ubuntu

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.