ทำไม / dev / urandom อ่านได้โดยรูทเท่านั้นตั้งแต่ Ubuntu 12.04 และฉันจะ“ แก้ไข” ได้อย่างไร?


10

ฉันเคยทำงานกับ Ubuntu 10.04 แม่แบบบนเซิร์ฟเวอร์จำนวนมาก ตั้งแต่เปลี่ยนเป็น 12.04 ฉันมีปัญหาที่ตอนนี้ฉันโดดเดี่ยว

อุปกรณ์ / dev / urandom นั้นสามารถเข้าถึงได้โดยรูทเท่านั้น

สิ่งนี้ทำให้เอ็นจิน SSL อย่างน้อยเป็น PHP เช่น file_get_contents (https: // ... ล้มเหลว

นอกจากนี้ยังทำลาย redmine

หลังจาก chmod 644 มันใช้งานได้ดี แต่นั่นก็ไม่ได้อยู่ในการรีบูต

ดังนั้นคำถามของฉัน

  1. ทำไมนี้ ฉันไม่เห็นความเสี่ยงด้านความปลอดภัยเพราะ ... ฉันหมายถึง .. อยากขโมยข้อมูลแบบสุ่มบ้างไหม?

  2. ฉันจะ "แก้ไข" มันได้อย่างไร? เซิร์ฟเวอร์ถูกแยกและใช้งานโดยแอปพลิเคชันเดียวเท่านั้นนั่นคือเหตุผลที่ฉันใช้ openvz ฉันคิดถึงบางอย่างเช่นสคริปต์ระดับ runlevel หรือ ... แต่ฉันจะทำอย่างมีประสิทธิภาพได้อย่างไร Maby กับ dpkg หรือ apt?

  3. vor / dev / shm ก็เช่นเดียวกัน ในกรณีนี้ฉันเข้าใจว่าทำไมมันถึงไม่สามารถเข้าถึงได้ทั้งหมด แต่ฉันคิดว่าฉันสามารถ "แก้ไข" มันเป็นวิธีเดียวกับที่จะแก้ไข / dev / urandom


อะไรจะls -l /dev/urandomแสดงก่อนที่คุณจะเปลี่ยนการอนุญาต คุณปรับแต่งใด ๆ /etc/udev/rules.dหรือ/lib/udev/rules.dไฟล์?
David Schwartz

root@idle:~# ls -l /dev/urandom crw------- 1 root root 1, 9 May 22 14:15 /dev/urandom- ฉันยังไม่ได้ตั้งค่าใด ๆ นี่เป็นเซิร์ฟเวอร์เวอร์จิ้นธรรมดาไม่ได้มีการอัพเดทที่ฉลาด -
The Shurrican

3
เอกสาร0644โดยเฉพาะกล่าวว่าสิทธิ์ที่ควรจะเป็น คำถามคือ - ทำไมพวกเขาไม่ได้!
David Schwartz

1
FWIW บน Precise ที่ติดตั้งใหม่ของฉัน / dev / urandom คือ 0666 ในระหว่างการติดตั้งฉันเลือก "openssh server" เป็นตัวเลือกบทบาทเท่านั้น บางทีแพคเกจบางอย่างในการตั้งค่าของคุณอาจทำบางสิ่งบางอย่างเป็นใบ้
cjc

ฉันเห็นด้วย. กฎของ udev ของฉันยังบอกว่าควรจะเป็น ฉันคิดว่ามันเกี่ยวข้องกับ virtualization
The Shurrican

คำตอบ:


3

ด้วยการอ่านมากเกินไปจาก udev คุณสามารถระบายกลุ่มการสุ่มส่งผลให้ตัวเลขสุ่มที่คาดการณ์ได้ อาจเป็นเหตุผลที่ / dev / urandom ไม่สามารถอ่านได้สำหรับทุกคน (ลบเนื่องจาก Graeme Donaldson ถูกต้อง)

ในกรณีที่คุณยังต้องการเปลี่ยนการอนุญาตให้ดูที่กฎ 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 อ่านได้โดยรูทเท่านั้น OpenSSH และซอฟต์แวร์ที่เชื่อมโยงกับ OpenSSL, GnuTLS และไลบรารี่การเข้ารหัสอื่น ๆ จะต้องรันในฐานะรูทหรือเริ่มต้นเป็นรูทแล้วปล่อยสิทธิ์ อย่างใดที่เสียงมากที่เลวร้ายยิ่ง
เจอรัลด์รวงผึ้ง

3
/ dev / urandom ไม่พึ่งพาเอนโทรปีของพูล อ่านจาก / dev / random เท่านั้นทำให้การลดลงของพูลเอนโทรปี
ThatGraemeGuy

เจอรัล: sshd เริ่มเป็นรูต ตัวอย่างเช่นการผูกพอร์ต 22 และ suid กับผู้ใช้ที่เข้าสู่ระบบและอื่น ๆ
asdmin

root @ redmine: ~ # dpkg -L udev | xargs grep urandom /lib/udev/rules.d/50-udev-default.rules:KERNEL=="null|zero|fulls.random|urandom ", MODE =" 0666 "root @ redmine: ~ # ls -lha / dev / urandom crw ------- 1 รูทราก 1, 9 ก.ค. 2 12:39 / dev / urandom มันดูเหมือนไม่มีการกำหนดค่าผิดพลาด แต่เป็นข้อผิดพลาดอย่างไรก็ตามมันได้รับการแก้ไขในเทมเพลตการติดตั้ง openvz ใหม่!
Shurrican

@ThatGraemeGuy ฉันรู้ว่าฉันมางานปาร์ตี้ช้า แต่ก็ไม่ถูกต้องทั้งหมด /dev/random บล็อกเมื่อค่าประมาณของเอนโทรปีมีค่าต่ำในขณะที่/dev/urandomยังคงผลิตหมายเลขเทียมเทียมต่อไปแม้ว่าค่าประมาณค่าพลังงานแบบเอนโทรปีจะต่ำ ที่กล่าวว่าแนวคิดทั้งหมดของสระว่ายน้ำเอนโทรปีอย่างใด "วิ่งออกมาจากการสุ่ม" จะทำให้เข้าใจผิดและความหมาย
Stephen Touset

1

สำหรับวิธีที่คุณสามารถแก้ไขมันได้วงช่วยเหลือชั่วคราวจะเป็นเพียงแค่

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

ที่ฉันพยายาม แต่ไม่ได้ทำงาน ตอนนี้ฉันเพิ่มคำสั่ง chmod ที่ด้านล่างของ /etc/rc0.d/S30urandom ... ที่ใช้งานได้
The Shurrican

มีปัญหาบางอย่างที่อาจทำให้ /etc/rc.local ไม่ถูกต้องบนอูบุนตูอย่างถูกต้อง - รวมถึงการอนุญาต (ต้องมีการทำเครื่องหมายปฏิบัติการ) ดูที่นี่: bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/882254
michel-slm

ดูมีแนวโน้ม แต่ไม่ช่วย ยัง rc.local ดูเหมือนจะไม่ได้รับการดำเนินการฉันพยายามที่จะเขียนไฟล์ง่าย ๆ เพื่อ tmp แต่ก็ไม่ได้ทำงานเกินไป สิทธิ์ถูกต้อง ฉันพยายามดำเนินการกับรากเท่านั้นส่วนที่เหลือยังอ่านและ 777 ...
Shurrican

2
เนื่องจากโซลูชันนี้มีเฉพาะ Ubuntu เท่านั้น AskUbuntu อาจเป็นทางออกที่ดีกว่าในตอนนี้ ฉันมีความสุขกับการใช้ systemd และ /etc/rc.d/rc.local ทำงานได้โดยไม่ผิดพลาดเหมือนที่มันทำภายใต้ systemV initscripts: /
michel-slm

โปรดทราบว่าคุณควรแก้ไข/etc/rc.localไฟล์ ในกรณีของฉัน (Ubuntu 16.04) ไฟล์สิ้นสุดด้วย exit 0 ดังนั้นหากคุณต่อท้ายบรรทัดมันจะไม่ทำงานแน่นอน
Alexis Wilke

1

อันที่จริงอูบุนตู 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.