เรื่องชื่อแฟนซีใช้ที่นี่ไม่มีทั้งเป็นแนวทางในการแก้ปัญหาที่เฉพาะเจาะจง: วิธีการแก้ปัญหาการแยกจากกันดีกว่า Unix คลาสสิกchroot การทำเวอร์ชวลไลเซชันระดับระบบปฏิบัติการคอนเทนเนอร์โซนหรือแม้แต่ "chroot with เตียรอยด์" เป็นชื่อหรือชื่อทางการค้าที่กำหนดแนวคิดเดียวกันของการแยก userpace แต่มีคุณสมบัติแตกต่างกัน
Chroot เปิดตัวเมื่อวันที่ 18 มีนาคม 2525 หลายเดือนก่อนการเปิดตัว4.2 BSDเป็นเครื่องมือในการทดสอบการติดตั้งและสร้างระบบ แต่วันนี้มันยังมีข้อบกพร่อง เนื่องจากวัตถุประสงค์แรกของ chroot เป็นเพียงการจัดหาเส้นทางnewrootเท่านั้นด้านอื่น ๆ ของระบบที่จำเป็นต้องแยกหรือควบคุมได้ถูกเปิดเผย (เครือข่ายมุมมองกระบวนการ, ปริมาณงาน I / O) นี่คือตำแหน่งที่คอนเทนเนอร์แรก (การจำลองเสมือนระดับผู้ใช้) ปรากฏขึ้น
เทคโนโลยีทั้งสอง (FreeBSD Jails และ LXC) ใช้ประโยชน์จากการแยกพื้นที่ผู้ใช้เพื่อมอบความปลอดภัยอีกชั้น การจัดแบ่งประเภทนี้จะทำให้มั่นใจได้ว่ากระบวนการที่กำหนดจะสื่อสารกับกระบวนการอื่น ๆ ในภาชนะเดียวกันบนโฮสต์เดียวกันและหากใช้ทรัพยากรเครือข่ายใด ๆ เพื่อให้เกิดการสื่อสาร "นอกโลก" ทั้งหมดจะถูกส่งต่อไปยังอินเตอร์เฟส / ช่องที่กำหนด มี
คุณสมบัติ
FreeBSD Jails:
- ถือว่าเป็นเทคโนโลยีที่มีความเสถียรเนื่องจากเป็นฟีเจอร์ภายใน FreeBSD ตั้งแต่ 4.0;
- ใช้เวลาอย่างดีที่สุดของระบบไฟล์ ZFS ณ จุดที่คุณสามารถโคลนคุกและสร้างแม่แบบคุกเพื่อปรับใช้คุกได้ง่ายขึ้น ความบ้าคลั่งของ ZFSเพิ่มเติม;
- เอกสารที่ดีและการพัฒนา ;
- ลำดับขั้นของคุกอนุญาตให้คุณสร้างคุกในคุกได้ (เราจำเป็นต้องเจาะลึกลงไป!) ใช้ร่วมกับ
allow.mount.zfs
เพื่อให้ได้พลังงานมากขึ้นและตัวแปรอื่น ๆ เช่นchildren.max
กำหนดคุกเด็กสูงสุด
- rctl (8)จะจัดการข้อ จำกัด ทรัพยากรของคุก (หน่วยความจำ, CPU, ดิสก์, ... );
- FreeBSD jails จัดการกับ Linux userspace ;
- การแยกเครือข่ายด้วย
vnet
ทำให้แต่ละคุกมีสแต็กเครือข่ายของตัวเองอินเตอร์เฟสการกำหนดแอดเดรสและตารางการเราต์
nullfs
เพื่อช่วยในการลิงก์โฟลเดอร์กับโฟลเดอร์ที่อยู่บนเซิร์ฟเวอร์จริงไปยังภายในคุก
- ยูทิลิตี้ezjailเพื่อช่วยในการปรับใช้จำนวนมากและการจัดการคุก;
- เคอร์เนลที่ปรับได้จำนวนมาก (
sysctl
) security.jail.allow.*
พารามิเตอร์จะ จำกัด การกระทำของผู้ใช้รูทของคุกนั้น
- บางทีคุก FreeBSD จะขยายฟีเจอร์โปรเจ็กต์ VPS บางส่วนเช่นการย้ายข้อมูลสดในอนาคตอันใกล้
- มีความพยายามบางอย่างในการทำงานร่วมกับ ZFS และ Docker ยังคงทดลอง
- FreeBSD 12รองรับ bhyve ในคุกและ pf ในคุกสร้างความโดดเดี่ยวให้กับเครื่องมือเหล่านั้น
- เครื่องมือที่น่าสนใจมากมายได้รับการพัฒนาในช่วงปีที่ผ่านมา บางคนถูกจัดทำดัชนีในโพสต์บล็อกนี้
- ทางเลือก: โครงการ FreeBSD VPS
ตู้คอนเทนเนอร์ Linux (LXC):
- ใหม่ "ในเคอร์เนล" เทคโนโลยี แต่ถูกรับรองโดยคนใหญ่ (Canonical พิเศษ);
- คอนเทนเนอร์ที่ไม่มีสิทธิใช้งานเริ่มต้นจาก LXC 1.0 ทำให้เป็นก้าวสำคัญสู่ความปลอดภัยภายในตู้คอนเทนเนอร์
- การแม็พ UID และ GID ภายในคอนเทนเนอร์
- Kernel namespaces เพื่อแยก IPC, mount, pid, เครือข่ายและผู้ใช้ เนมสเปซเหล่านี้สามารถจัดการได้ในลักษณะแยกออกซึ่งกระบวนการที่ใช้เนมสเปซเครือข่ายที่แตกต่างกันนั้นไม่จำเป็นต้องแยกออกจากส่วนอื่น ๆ เช่นที่เก็บข้อมูล
- กลุ่มควบคุม (กลุ่ม cg) เพื่อจัดการทรัพยากรและจัดกลุ่มพวกเขา CGManagerเป็นคนที่ประสบความสำเร็จ
- โปรไฟล์ Apparmor / SELinux และความสามารถของเคอร์เนลเพื่อการบังคับใช้คุณสมบัติของเคอร์เนลที่เข้าถึงได้ง่ายขึ้นโดยคอนเทนเนอร์ Seccomp ยังมีอยู่ในคอนเทนเนอร์ lxc เพื่อกรองการเรียกระบบ ด้านการรักษาความปลอดภัยอื่น ๆที่นี่
ฟังก์ชั่นการโยกย้ายสดการพัฒนา มันเป็นเรื่องยากที่จะบอกว่าเมื่อมันจะพร้อมสำหรับการใช้การผลิตเนื่องจากนักเทียบท่า / LXC จะมีการจัดการกับการหยุดกระบวนการ userspace, ภาพรวมโยกย้ายและรวม - ref1 , REF2การโยกย้ายแบบสดกำลังทำงานกับคอนเทนเนอร์พื้นฐาน (ไม่มีอุปกรณ์ผ่านบริการเครือข่ายที่ซับซ้อนหรือการกำหนดค่าการจัดเก็บพิเศษ)
- API การเชื่อมโยงเพื่อเปิดใช้งานการพัฒนาใน python3 และ 2, lua, Go, Ruby และ Haskell
- ส่วนกลางพื้นที่ "มีอะไรใหม่" ค่อนข้างมีประโยชน์ทุกครั้งที่คุณต้องตรวจสอบว่าบั๊กบางตัวได้รับการแก้ไขหรือมีคุณสมบัติใหม่เกิดขึ้น ที่นี่
- ทางเลือกที่น่าสนใจอาจเป็นlxdซึ่งภายใต้ประทุนใช้งานได้กับ lxc แต่มีคุณสมบัติที่ดีเช่น REST api, การรวม OpenStack เป็นต้น
- อีกสิ่งที่น่าสนใจคือ Ubuntu ดูเหมือนว่าจะมีการจัดส่งสินค้า ZFS เป็นระบบแฟ้มเริ่มต้นสำหรับบรรจุใน16.04 เพื่อให้โครงการชิด LXD เปิดตัวมันเป็นรุ่น 2.0 และบางส่วนของคุณสมบัติที่มีZFS ที่เกี่ยวข้อง
- ทางเลือก : OpenVZ , Docker
- นักเทียบท่า โปรดทราบที่นี่ว่านักเทียบท่าใช้เนมสเปซโดยเฉพาะการสร้างกลุ่ม "ต่อแอพ" / "ต่อซอฟต์แวร์" แตกต่างที่สำคัญที่นี่ ในขณะที่ LXC สร้างคอนเทนเนอร์ที่มีหลายกระบวนการ แต่นักเทียบท่าจะลดคอนเทนเนอร์ให้มากที่สุดเท่าที่เป็นไปได้สำหรับกระบวนการเดียวจากนั้นจัดการผ่าน Docker
- ความพยายามในการรวมนักเทียบท่ากับ SELinux และลดความสามารถภายในคอนเทนเนอร์เพื่อให้ปลอดภัยยิ่งขึ้น - นักเทียบท่าและ SELinux, Dan Walsh
- ความแตกต่างระหว่าง Docker, LXD และ LXC คืออะไร
นักเทียบท่าไม่ใช้ lxc อีกต่อไป ตอนนี้พวกเขามี lib เฉพาะที่เรียกว่าlibcontainerที่จัดการการรวมกับ Kernel namespace ระดับต่ำและคุณสมบัติกลุ่ม cg โดยตรง
เทคโนโลยีทั้งสองเป็นยาครอบจักรวาลด้านความปลอดภัย แต่ทั้งคู่เป็นวิธีที่ดีในการแยกสภาพแวดล้อมที่ไม่ต้องการการจำลองเสมือนแบบเต็มเนื่องจากโครงสร้างพื้นฐานของระบบปฏิบัติการแบบผสม การรักษาความปลอดภัยจะเกิดขึ้นหลังจากการอ่านเอกสารจำนวนมากและการใช้งานเคอร์เนลที่ปรับได้, MAC และการแยกที่คุณสมบัติระดับ OS นั้นเสนอให้คุณ
ดูสิ่งนี้ด้วย: