从Ubuntu 12.04开始,为什么/ dev / urandom仅可由root读取,我如何“修复”它?


10

我曾经在许多服务器上使用Ubuntu 10.04模板。自从更改为12.04以来,我遇到了一些孤立的问题。

/ dev / urandom设备只能由root用户访问。

至少在PHP中,这导致SSL引擎失败,例如file_get_contents(https://...。

它也破坏了redmine。

在chmod 644之后,它可以正常工作,但是重新启动后不会消失。

所以我的问题。

  1. 为什么是这样?我认为没有安全风险,因为...我的意思是..想窃取一些随机数据吗?

  2. 我该如何“修复”它?服务器被隔离并且仅由一个应用程序使用,这就是为什么我使用openvz的原因。我考虑过类似运行级脚本之类的东西...但是如何有效地做到这一点?Maby用dpkg还是apt?

  3. / 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更新。
Shurrican

3
文档特别指出,权限应为0644。问题是-为什么不呢?
大卫·史瓦兹

1
FWIW,在我刚安装的Precise上,/ dev / urandom是0666。在安装过程中,我选择“ openssh服务器”作为唯一的角色选项。也许您安装程序中的某些程序包有些愚蠢。
cjc 2012年

我同意。我的udev规则也说应该。我认为这与虚拟化有关。
Shurrican'5

Answers:


3

通过从udev中大量读取,可以耗尽随机池,从而产生可预测的随机数。可能这就是为什么/ dev / urandom无法供所有人阅读的原因。 (已删除,因为Graeme Donaldson是正确的)

如果您仍然想更改权限,请查看负责在/ dev / urandom上设置模式的udev规则,而不要弄乱init脚本。

在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身份启动,然后放弃特权。不知怎的,那声音糟糕。
Gerald Combs 2012年

3
/ dev / urandom不依赖于熵池。仅从/ dev / random中读取会导致熵池耗尽。
ThatGraemeGuy 2012年

Gerald:sshd以root身份启动。例如,将端口22绑定和uid到已登录的用户等
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'7

@ThatGraemeGuy我知道我参加聚会迟到了,但这并不完全正确。当熵估计值较低时,/dev/random 块会阻塞,即使熵估计值较低时,/dev/urandom仍会继续生成伪随机数。就是说,熵池的整个概念以某种方式“超出了随机性”是令人误解且毫无意义的
Stephen Touset 2014年

1

至于如何解决它,临时的创可贴将是

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

我尝试过但没有工作。现在,我将chmod命令添加到/etc/rc0.d/S30urandom的底部...起作用了
Shurrican 2012年

有一些问题可能会导致/etc/rc.local在Ubuntu上无法正确获取-包括其权限(必须标记为可执行)。看到这里:bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/882254
michel-slm

看起来很有希望,但没有帮助。也rc.local似乎没有被执行,我试图向tmp写一个简单的文件,但这也没有用。权限是正确的。我试过只为root执行,休息阅读,也为777 ...
Shurrican 2012年

2
由于该解决方案可能是特定于Ubuntu的,因此AskUbuntu可能是目前更好的选择。我很乐意使用systemd,/ etc / rc.d / rc.local就像在systemV初始化脚本下一样,不会出现故障:/
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中必须相似

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.