อะไรทำให้ systemd-nspawn ยังคง“ ไม่เหมาะสมสำหรับการตั้งค่าคอนเทนเนอร์ที่ปลอดภัย”?


21

นี่คือที่ระบุไว้ในหน้าคนสำหรับsystemd-nspawn

โปรดทราบว่าแม้ว่าข้อควรระวังเพื่อความปลอดภัยเหล่านี้จะเกิดขึ้น systemd-nspawn ไม่เหมาะสำหรับการตั้งค่าคอนเทนเนอร์ที่ปลอดภัย คุณลักษณะด้านความปลอดภัยจำนวนมากอาจถูกหลีกเลี่ยงและเป็นประโยชน์หลักในการหลีกเลี่ยงการเปลี่ยนแปลงโดยไม่ตั้งใจของระบบโฮสต์จากคอนเทนเนอร์ การใช้โปรแกรมนี้ตามวัตถุประสงค์คือการดีบักและทดสอบรวมถึงการสร้างแพ็คเกจการแจกจ่ายและซอฟต์แวร์ที่เกี่ยวข้องกับการจัดการการบูตและระบบ

คำถามนี้ถูกถามในรายชื่อผู้รับจดหมายในปี 2011แต่ดูเหมือนว่าคำตอบจะล้าสมัย

systemd-nspawn มีรหัสที่จะดำเนินการCLONE_NEWNETโดยใช้--private-networkตัวเลือกตอนนี้ ดูเหมือนว่าจะครอบคลุมAF_UNIXปัญหาเนมสเปซส่วนตัวและฉันเดาCAP_NET_RAWและCAP_NET_BINDปัญหาที่กล่าวถึง

ประเด็นปัญหายังคงอยู่ ณ จุดนี้และตัวอย่างเช่น LXC ทำนอกเหนือจากสิ่งที่systemd-nspawnสามารถทำได้ในปัจจุบัน?


AF_UNIX แยกครึ่งด้วยCLONE_NEWNET: ซ็อกเก็ตนามธรรม - แยกตาม filesytem - รวมกัน (ยกเว้นว่าไม่มีระบบไฟล์ที่แชร์ระหว่างโฮสต์และคอนเทนเนอร์) ทำให้สะดวกในการเริ่มต้นแอปพลิเคชั่น X ยกเว้นเครือข่ายสำหรับแอปพลิเคชันเฉพาะ (เนื่องจาก Xorg เปิดทั้งซ็อกเก็ต UNIX ที่เป็นนามธรรมและระบบไฟล์)
วิ

คำตอบ:


12

LXC ดีขึ้นเล็กน้อยเนื่องจากสามารถเรียกใช้คอนเทนเนอร์ในฐานะผู้ใช้ที่ไม่มีสิทธิ์ สิ่งนี้สามารถเกิดขึ้นได้กับ systemd-nspawn แต่สำหรับสถานการณ์ที่คุณต้องการผู้ใช้เพียงคนเดียว (แทนที่จะเป็นหลายคน) ซึ่งอาจทำได้ยากหรือปลอดภัยน้อยกว่าสำหรับกระบวนการหลายอย่างในสถานการณ์จำลองคอนเทนเนอร์ ถ้าคุณต้องการที่จะรู้ว่าทำไมนักเทียบท่า, LXC และ systemd-nspawn เป็นอย่างโดยเนื้อแท้ไม่ได้เป็นกลไกการรักษาความปลอดภัยที่เป็นของแข็งอ่าน: https://opensource.com/business/14/7/docker-security-selinux โดยพื้นฐานแล้วคอนเทนเนอร์ยังคงมีการเข้าถึงเคอร์เนลและเคอร์เนลใด ๆ ที่ใช้ประโยชน์จากการควบคุมของเครื่องทั้งหมด บนเคอร์เนลเสาหินเช่น Linux การหาประโยชน์จากเคอร์เนลไม่ใช่เรื่องแปลก


3
คำตอบนี้ไม่ถูกต้อง systemd-nspawn รองรับสิทธิ์การดรอปสำหรับผู้ใช้รายอื่น: freedesktop.org/software/systemd/man/systemd-nspawn.html
David Timothy Strauss

ฉันค่อนข้างมั่นใจว่าทั้งหมดนี้ใช้คอนโซล / เชลล์ในฐานะผู้ใช้ที่ไม่ได้รับสิทธิ แต่รันทุกอย่างเป็นรูท คุณสามารถดูสิ่งนั้นได้ไหม
CameronNemo

1
ตกลงฉันใช้คำสั่งสุดท้ายของฉันกลับมา อย่างไรก็ตามมันไม่ได้มีการจัดการ subuid / subgid ที่เหมาะสมผู้ใช้ที่ไม่ได้รับอนุญาตต่อหนึ่งคอนเทนเนอร์เท่านั้น
CameronNemo

2
ความสามารถในการปล่อยผู้ใช้ที่ไม่มีสิทธิพิเศษเพียงหนึ่งรายต่อหนึ่งคอนเทนเนอร์แทนที่จะรองรับการจัดการ subuid / subgid เต็มรูปแบบไม่ใช่ปัญหาด้านความปลอดภัย มันเป็นข้อ จำกัด คุณสมบัติ
David Timothy Strauss

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