ขอบเขตความปลอดภัยของคอนเทนเนอร์ lxc อยู่ที่ไหน


8

คำถามของฉันเกี่ยวกับความปลอดภัยของคอนเทนเนอร์ LXC

ถ้าฉันใช้หลายคอนเทนเนอร์ในกล่องของฉันและให้ผู้ใช้แยกการเข้าถึง ssh ไปยังคอนเทนเนอร์ของตนเองผู้ใช้เหล่านี้สามารถแฮ็คคอนเทนเนอร์ไปยังคอนเทนเนอร์อื่นบนกล่องนั้นหรือแม้แต่เครื่องโฮสต์ได้หรือไม่

ขอบเขตความปลอดภัยของคอนเทนเนอร์ lxc อยู่ที่ไหน


คุณรู้ว่าต้องกังวลเกี่ยวกับสิ่งนั้น AppArmor จะดูแลสิ่งนั้น
rɑːdʒɑ

คำตอบ:


8

อย่างที่ฉันได้เห็นเกี่ยวกับLXCมันเก็บข้อมูลคอนเทนเนอร์และ (พร้อมกับที่เก็บข้อมูลสำรอง) ระบบไฟล์รูทภายใต้ / var / lib / lxc เทมเพลตการสร้างคอนเทนเนอร์ยังมีแนวโน้มที่จะเก็บข้อมูลการกระจายแคชไว้ภายใต้ / var / cache / lxc

ดังนั้นโดยทั่วไปการเข้าถึงระบบไฟล์รูทอนุญาตให้ผู้ดูแลระบบเท่านั้นเว้นแต่จะมีโปรไฟล์ผู้ใช้การกำหนดค่าที่ไม่ถูกต้องหรือไม่ถูกต้องในขณะที่สร้างพวกเขา

แต่นักพัฒนา Ubuntu อาจมาถึงจุดนี้แล้วและพวกเขาได้มอบโซลูชันที่ปลอดภัยด้วยความช่วยเหลือของ AppArmor

LXC มาพร้อมกับโปรไฟล์ Apparmor ที่มีวัตถุประสงค์เพื่อปกป้องโฮสต์จากการใช้งานโดยไม่ได้ตั้งใจในสิทธิ์ ตัวอย่างเช่นคอนเทนเนอร์จะไม่สามารถเขียนไปยัง/proc/sysrq-triggerหรือ/sysไฟล์ส่วนใหญ่

โปรไฟล์ usr.bin.lxc-start ถูกป้อนโดยการรัน lxc-start โปรไฟล์นี้ป้องกัน lxc-start เป็นหลักจากการติดตั้งระบบไฟล์ใหม่นอกระบบไฟล์รูทของคอนเทนเนอร์ ก่อนดำเนินการ init ของคอนเทนเนอร์ LXC ร้องขอสวิตช์ไปยังโปรไฟล์ของคอนเทนเนอร์ โดยค่าเริ่มต้นโปรไฟล์นี้เป็นนโยบาย LXC /etc/apparmor.d/lxc/lxc-defaultภาชนะเริ่มต้นที่กำหนดไว้ใน โปรไฟล์นี้ป้องกันไม่ให้คอนเทนเนอร์เข้าถึงเส้นทางที่อันตรายมากมายและจากการติดตั้งระบบไฟล์ส่วนใหญ่

หากคุณพบว่า lxc-start ล้มเหลวเนื่องจากการเข้าถึงที่ถูกต้องตามกฎหมายซึ่งถูกปฏิเสธโดยนโยบาย Apparmor คุณสามารถปิดใช้งานโปรไฟล์ lxc-start ได้โดยทำดังนี้:

sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/

สิ่งนี้จะทำให้ lxc-start รัน unconfined แต่ยังคง จำกัด คอนเทนเนอร์เอง หากคุณต้องการปิดการใช้งานการ จำกัด ของคอนเทนเนอร์นอกจากจะปิดใช้งานusr.bin.lxc-startโปรไฟล์แล้วคุณต้องเพิ่ม:

lxc.aa_profile = unconfined

ไปยังไฟล์การกำหนดค่าของคอนเทนเนอร์ /etc/apparmor.d/lxc/หากคุณต้องการที่จะเรียกใช้ภาชนะในรายละเอียดที่กำหนดเองที่คุณสามารถสร้างโปรไฟล์ใหม่ภายใต้ ชื่อต้องเริ่มต้นด้วย lxc- เพื่อให้ lxc-start ได้รับอนุญาตให้เปลี่ยนไปใช้โปรไฟล์นั้น หลังจากสร้างนโยบายให้โหลดโดยใช้:

sudo apparmor_parser -r /etc/apparmor.d/lxc-containers

/etc/apparmor.d/lxc-containersรายละเอียดจะโหลดโดยอัตโนมัติหลังจากรีบูตเพราะมันมีที่มาจากแฟ้ม สุดท้ายเพื่อให้คอนเทนเนอร์ CN ใช้สิ่งนี้ใหม่lxc-CN-profileเพิ่มบรรทัดต่อไปนี้ลงในไฟล์กำหนดค่า:

lxc.aa_profile = lxc-CN-profile

lxc-execute ไม่ได้ป้อนโปรไฟล์ Apparmor แต่คอนเทนเนอร์ที่วางไข่จะถูก จำกัด


ขอบคุณมากสำหรับคำตอบของคุณ ดังนั้นคุณจะบอกว่ามันปลอดภัยถ้าฉันใช้ AppArmor?
iCode

@iCode, ใช่ appArmor ที่ออกแบบมาเพื่อปกป้องแอปพลิเคชัน Ubuntu และ LXC ยังได้รับการสนับสนุนที่ดีในด้านความปลอดภัยหากคุณใช้ AppArmor
rɑːdʒɑ

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