Почему / dev / urandom доступен для чтения только пользователю root после Ubuntu 12.04 и как я могу это исправить?


10

Раньше я работал с шаблонами Ubuntu 10.04 на многих серверах. После перехода на 12.04 у меня есть проблемы, которые я сейчас изолировал.

Устройство / dev / urandom доступно только для пользователя root.

Это приводило к тому, что механизмы SSL, по крайней мере в PHP, например file_get_contents (https: // ..., не работали.

Это также сломало красную мину.

После chmod 644 он работает нормально, но не перезагружается.

Итак, мой вопрос.

  1. почему это? Я не вижу угрозы безопасности, потому что ... я имею в виду ... хочешь украсть случайные данные?

  2. Как я могу это исправить? Серверы изолированы и используются только одним приложением, поэтому я использую openvz. Я думаю о чем-то вроде сценария уровня запуска или около того ... но как мне сделать это эффективно? Маби с дпкг или апт?

  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- Я ничего не установил, это простой девственный сервер, даже не запущено обновление apt-get.
The Shurrican

3
В документации конкретно говорится, что разрешения должны быть 0644. Вопрос в том, почему они не ?!
Дэвид Шварц

1
FWIW, на моем недавно установленном Precise / dev / urandom равен 0666. Во время установки я выбрал «openssh server» в качестве единственного параметра роли. Возможно, какой-то пакет в вашей настройке делает что-то глупое.
CJC

Я согласен. Мои правила Udev также говорят, что так и должно быть. Я думаю, что это как-то связано с виртуализацией.
Шуррик

Ответы:


3

При чрезмерном чтении из udev вы можете использовать случайный пул, что приведет к предсказуемым случайным числам. Вероятно, это причина того, что / dev / urandom не доступен для чтения всем. (удалено, потому что Грэм Дональдсон прав)

Если вы все еще хотите изменить разрешение, загляните в правила udev, отвечающие за настройку режимов в / dev / urandom, вместо того, чтобы испортить ваши скрипты инициализации.

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

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

В вашем случае, MODE определенно не 0666.

Измените его в соответствии с правилами конфигурации udev, если хотите.

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

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


Если / dev / urandom доступен для чтения только пользователю root, тогда OpenSSH и программное обеспечение, связанное с OpenSSL, GnuTLS и другими криптографическими библиотеками, должны будут либо работать от имени пользователя root, либо запускаться от имени пользователя root, а затем удалять привилегии. Как-то это звучит намного хуже.
Джеральд Комбс

3
/ dev / urandom не полагается на пул энтропии. Только чтение из / dev / random приводит к истощению энтропийного пула.
ThatGraemeGuy

Джеральд: sshd начинается с прав root. Например, связать порт 22 и suid для вошедшего в систему пользователя и т. Д.
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 Jul 2 12:39 / dev / urandom действительно выглядит не как неправильная конфигурация, а как ошибка, однако это исправлено в новом установочном шаблоне openvz!
The Shurrican

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

1

Что касается того, как вы можете это исправить, временный лейкопластырь будет просто

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

что я пытался, но не сработало. теперь я добавил команду chmod в конец /etc/rc0.d/S30urandom ... это сработало
The Shurrican

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

выглядело многообещающе, но не помогает. Кроме того, rc.local, кажется, не выполняется, я пытался записать простой файл в TMP, но это тоже не сработало. разрешения правильные. я попытался выполнить только для root, остальные чтения, а также 777 ...
Shurrican

2
поскольку решение, скорее всего, зависит от Ubuntu, на данном этапе, вероятно, лучше использовать AskUbuntu. Я блаженно использую systemd, и /etc/rc.d/rc.local просто работает без сбоев, как это было в incricripts systemV: /
michel-slm

Обратите внимание, что вы должны отредактировать /etc/rc.localфайл. В моем случае (Ubuntu 16.04) файл завершился с выходом 0, поэтому, если вы просто добавите строку, он действительно не будет работать.
Алексис

1

на самом деле шаблон openvz для ubuntu 12.04 теперь общедоступен, и они также установили права на 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.