Por que o / dev / urandom é legível apenas pela raiz desde o Ubuntu 12.04 e como posso "corrigi-lo"?


10

Eu costumava trabalhar com modelos do Ubuntu 10.04 em muitos servidores. Desde a mudança para 12.04, tenho problemas que agora isolei.

O dispositivo / dev / urandom só pode ser acessado pela raiz.

Isso fez com que os mecanismos SSL, pelo menos no PHP, por exemplo, file_get_contents (https: // ...) falhassem.

Também quebrou o redmine.

Após um chmod 644, ele funciona bem, mas isso não permanece na reinicialização.

Então minha pergunta.

  1. por que é isso? Não vejo risco de segurança porque ... quero dizer ... quero roubar alguns dados aleatórios?

  2. Como posso "consertar" isso? Os servidores são isolados e usados ​​por apenas um aplicativo, é por isso que eu uso o openvz. Penso em algo como um script de nível de execução, mais ou menos ... mas como faço isso de maneira eficiente? Maby com dpkg ou apt?

  3. O mesmo vale para / dev / shm. Nesse caso, entendo perfeitamente por que não é acessível, mas presumo que posso "consertar" da mesma maneira que consertar / dev / urandom


O que é ls -l /dev/urandomexibido antes de você alterar as permissões? Será que quis personalizar qualquer /etc/udev/rules.d ou /lib/udev/rules.darquivos?
David Schwartz

root@idle:~# ls -l /dev/urandom crw------- 1 root root 1, 9 May 22 14:15 /dev/urandom- eu não configurei nada, este é um servidor virgem simples, nem mesmo o apt-get update foi executado ainda.
O Shurrican

3
A documentação diz especificamente que as permissões devem ser 0644. A questão é - por que eles não são ?!
David Schwartz

1
FWIW, no meu Precise recém-instalado, / dev / urandom é 0666. Durante a instalação, escolhi "openssh server" como a única opção de função. Talvez algum pacote em sua configuração faça algo estúpido.
Cjc 22/05/12

concordo. minhas regras do udev também dizem que deveria ser. Eu acho que tem algo a ver com a virtualização.
O Shurrican

Respostas:


3

Com leitura excessiva do udev, você pode drenar o pool aleatório, resultando em números aleatórios previsíveis. Provavelmente, essa é a razão pela qual / dev / urandom não está disponível para leitura para todos. (excluído porque Graeme Donaldson está certo)

Caso você ainda queira alterar a permissão, consulte as regras do udev responsáveis ​​por definir os modos em / dev / urandom, em vez de estragar seus scripts de inicialização.

No Debian, é fácil encontrar a regra de culpa:

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

No seu caso, MODE definitivamente não é 0666.

Altere-o de acordo com as regras de configuração do udev, se desejar.

Nota: http://lists.centos.org/pipermail/centos/2009-July/079134.html pode ajudar na alteração do udev.

Você basicamente precisará criar uma regra parecida com o resultado grep, exceto que este possui um modo correto definido, e adicioná-lo como um arquivo de regra no /etc/udev/rules.d/ (observe as possíveis diferenças no Ubuntu e Debian !)


Se o / dev / urandom for legível apenas pela raiz, o OpenSSH e o software vinculado ao OpenSSL, GnuTLS e outras bibliotecas de criptografia teriam que ser executados como root ou inicializados como root e eliminados os privilégios. De alguma forma, isso soa muito pior.
Gerald Combs

3
/ dev / urandom não depende do pool de entropia. Somente leituras de / dev / random causam esgotamento do pool de entropia.
ThatGraemeGuy

Gerald: o sshd inicia como root. Por exemplo, para ligar a porta 22 e suid ao usuário conectado, etc.
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 raiz root 1, 9 de julho de 2 12:39 / dev / urandom realmente parece não ter configuração incorreta, mas um bug, no entanto, foi corrigido no novo modelo de instalação do openvz!
O Shurrican

@ThatGraemeGuy Sei que estou atrasado para a festa, mas isso não está totalmente correto. /dev/random bloqueia quando a estimativa de entropia é baixa, enquanto /dev/urandomcontinua a produzir números pseudo-aleatórios, mesmo quando a estimativa de entropia é baixa. Dito isto, todo o conceito de pool de entropia de alguma forma "ficando sem aleatoriedade" é enganoso e sem sentido .
Stephen Touset 04/07/2014

1

Quanto à maneira de corrigi-lo, um curativo temporário seria apenas

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

que eu tentei, mas não funcionou. agora eu adicionei o comando chmod apenas para a parte inferior da /etc/rc0.d/S30urandom ... que trabalhou
O Shurrican

Existem alguns problemas que podem fazer com que o /etc/rc.local não seja originado corretamente no Ubuntu - incluindo sua permissão (ele deve ser marcado como executável). veja aqui: bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/882254
michel-slm

parecia promissor, mas não ajuda. Também o rc.local não parece ser executado, tentei escrever um arquivo simples no tmp, mas isso também não funcionou. as permissões estão corretas. i tentou o executar um de raiz única, descansar ler e também 777 ...
O Shurrican

2
como a solução provavelmente é específica do Ubuntu, o AskUbuntu provavelmente é uma aposta melhor neste momento. Estou alegremente usando systemd, e funciona /etc/rc.d/rc.local sem uma falha, como o fez sob initscripts SystemV: /
michel-SLM

Observe que você deve editar o /etc/rc.localarquivo. No meu caso (Ubuntu 16.04), o arquivo terminou com a saída 0; portanto, se você apenas adicionar uma linha, ele realmente não funcionaria.
Alexis Wilke

1

na verdade, o modelo ubuntu 12.04 openvz agora é público e eles corrigiram as permissões tanto no uraondm quanto no dispositivo shm


1

O problema que o udevtrigger não foi iniciado. Tente reiniciar com /etc/init.d/udevtrigger restart... e se resolver o problema quanto a mim ... altere o arquivo /etc/init/udevtrigger.conf:

-     and not-container)
+     )

0

No RHEL: adicione regras de segurança com substituições de permissão em /etc/security/console.perms.d/

deve ser semelhante no ubuntu

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.