Mengapa / dev / urandom hanya bisa dibaca oleh root sejak Ubuntu 12.04 dan bagaimana saya bisa "memperbaikinya"?

10

Saya dulu bekerja dengan templat Ubuntu 10,04 di banyak server. Sejak beralih ke 12,04, saya memiliki masalah yang sekarang telah saya isolasi.

Perangkat / dev / urandom hanya dapat diakses untuk melakukan root.

Ini menyebabkan mesin SSL, setidaknya dalam PHP, misalnya file_get_contents (https: // ... gagal.

Itu juga mematahkan redmine.

Setelah chmod 644 berfungsi dengan baik, tetapi itu tidak tetap saat reboot.

Jadi pertanyaan saya.

  1. kenapa ini? Saya tidak melihat risiko keamanan karena ... maksud saya .. ingin mencuri beberapa data acak?

  2. Bagaimana saya bisa "memperbaikinya"? Server terisolasi dan digunakan hanya oleh satu aplikasi, itu sebabnya saya menggunakan openvz. Saya berpikir tentang sesuatu seperti skrip runlevel atau lebih ... tetapi bagaimana saya melakukannya dengan efisien? Maby dengan dpkg atau apt?

  3. Hal yang sama berlaku untuk / dev / shm. dalam hal ini saya benar-benar mengerti mengapa itu tidak dapat diakses, tapi saya menganggap saya dapat "memperbaikinya" dengan cara yang sama untuk memperbaiki / dev / urandom

Shurrican
sumber
Apa yang ls -l /dev/urandomditampilkan sebelum Anda mengubah izin? Apakah Anda menyesuaikan setiap /etc/udev/rules.d atau /lib/udev/rules.dfile?
David Schwartz
root@idle:~# ls -l /dev/urandom crw------- 1 root root 1, 9 May 22 14:15 /dev/urandom- Saya tidak mengatur apa-apa, ini adalah server perawan biasa, bahkan belum menjalankan pembaruan apt-get.
The Shurrican
3
The dokumentasi khusus mengatakan izin harus 0644. Pertanyaannya adalah - mengapa mereka tidak ?!
David Schwartz
1
FWIW, pada Precise yang baru saya instal, / dev / urandom adalah 0666. Selama instalasi, saya memilih "openssh server" sebagai satu-satunya pilihan peran. Mungkin beberapa paket dalam pengaturan Anda melakukan sesuatu yang bodoh.
cjc
saya setuju. aturan udev saya juga mengatakan itu seharusnya. Saya pikir itu ada hubungannya dengan virtualisasi.
The Shurrican

Jawaban:

3

Dengan pembacaan berlebihan dari udev, Anda dapat mengalirkan kumpulan acak, menghasilkan angka acak yang dapat diprediksi. Mungkin inilah alasan mengapa / dev / urandom tidak tersedia untuk dibaca untuk semua orang. (dihapus karena Graeme Donaldson benar)

Jika Anda masih ingin mengubah izin, lihatlah aturan udev yang bertanggung jawab untuk mengatur mode pada / dev / urandom, alih-alih mengacaukan skrip init Anda.

Di bawah Debian, mudah untuk menemukan aturan yang bersalah:

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

Dalam kasus Anda, MODE jelas bukan 0666.

Ubah sesuai aturan konfigurasi udev, jika diinginkan.

Catatan: http://lists.centos.org/pipermail/centos/2009-July/079134.html dapat membantu mengubah udev.

Pada dasarnya Anda harus membuat aturan dengan tampilan seperti hasil grep, kecuali yang memiliki set mode yang benar, dan menambahkannya sebagai ruleefile di /etc/udev/rules.d/ (perhatikan perbedaan yang mungkin ada di Ubuntu dan Debian !)

asdmin
sumber
Jika / dev / urandom hanya dapat dibaca oleh root maka OpenSSH dan perangkat lunak yang terhubung dengan OpenSSL, GnuTLS dan pustaka kriptografi lainnya harus dijalankan sebagai root atau dijalankan sebagai root kemudian drop privilege. Entah bagaimana itu terdengar jauh lebih buruk.
Gerald Combs
3
/ dev / urandom tidak bergantung pada kumpulan entropi. Hanya membaca dari / dev / random yang menyebabkan penipisan kumpulan entropi.
ThatGraemeGuy
Gerald: sshd dimulai sebagai root. Misalnya, untuk mengikat port 22 dan suid ke pengguna yang login, dll.
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 sepertinya tidak ada kesalahan konfigurasi selain bug, namun sudah diperbaiki dalam templat instalasi openvz yang baru!
The Shurrican
@ThatGraemeGuy Saya sadar saya terlambat ke pesta, tapi itu tidak sepenuhnya benar. /dev/random blok ketika estimasi entropi rendah, sementara /dev/urandomterus menghasilkan angka pseudorandom bahkan ketika estimasi entropi rendah. Yang mengatakan, seluruh konsep kumpulan entropi entah bagaimana "kehabisan keacakan" adalah menyesatkan dan tidak berarti .
Stephen Touset
1

Adapun cara Anda memperbaikinya, bantuan band sementara akan adil

cat "chmod 666 /dev/urandom" >> /etc/rc.local
michel-slm
sumber
bahwa saya mencoba tetapi tidak berhasil. sekarang saya menambahkan perintah chmod hanya ke bagian bawah /etc/rc0.d/S30urandom ... yang berfungsi
The Shurrican
Ada beberapa masalah yang mungkin menyebabkan /etc/rc.local tidak bersumber dengan benar di Ubuntu - termasuk izinnya (harus ditandai dapat dieksekusi). lihat di sini: bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/882254
michel-slm
tampak menjanjikan tetapi tidak membantu. juga rc.local tampaknya tidak bisa dieksekusi, saya mencoba menulis file sederhana untuk tmp tapi itu tidak berhasil juga. izinnya benar. Saya mencoba dengan mengeksekusi untuk root saja, istirahat membaca dan juga 777 ...
The Shurrican
2
karena solusinya kemungkinan khusus untuk Ubuntu, AskUbuntu mungkin merupakan taruhan yang lebih baik saat ini. Saya bahagia menggunakan systemd, dan /etc/rc.d/rc.local hanya berfungsi tanpa kesalahan seperti di bawah skrip init systemV: /
michel-slm
Perhatikan bahwa Anda harus mengedit /etc/rc.localfile. Dalam kasus saya (Ubuntu 16.04), file berakhir dengan keluar 0 jadi jika Anda hanya menambahkan baris, memang tidak akan berfungsi.
Alexis Wilke
1

sebenarnya template openvz ubuntu 12.04 sekarang bersifat publik dan mereka memperbaiki izinnya juga pada uraondm seperti pada perangkat shm

Shurrican
sumber
1

Masalah yang udevtrigger belum dimulai. Cobalah untuk me-restart dengan /etc/init.d/udevtrigger restart... dan jika itu menyelesaikan masalah bagi saya ... kemudian ubah file /etc/init/udevtrigger.conf:

-     and not-container)
+     )
Csabka
sumber
0

Di RHEL: tambahkan aturan keamanan dengan penggantian izin di /etc/security/console.perms.d/

harus serupa di ubuntu

GioMac
sumber