ประโยชน์และข้อเสียของภาชนะบรรจุที่ไม่มีสิทธิประโยชน์คืออะไร


16

คำอธิบายทางเทคนิคของสิ่งที่ไม่ได้รับสิทธิพิเศษค่อนข้างดี อย่างไรก็ตามไม่ใช่สำหรับผู้ใช้พีซีทั่วไป มีคำตอบง่ายๆเมื่อใดและเพราะเหตุใดผู้คนจึงควรใช้ภาชนะที่ไม่ได้รับสิทธิพิเศษและประโยชน์และข้อเสียของพวกเขาคืออะไร?

คำตอบ:


14

การรันคอนเทนเนอร์ที่ไม่มีสิทธิใช้งานเป็นวิธีที่ปลอดภัยที่สุดในการรันคอนเทนเนอร์ในสภาวะแวดล้อมการใช้งานจริง ภาชนะบรรจุได้รับการเผยแพร่ที่ไม่ดีเมื่อพูดถึงเรื่องความปลอดภัยและหนึ่งในเหตุผลคือผู้ใช้บางคนพบว่าหากผู้ใช้ได้รับรูทในภาชนะก็มีความเป็นไปได้ที่จะได้รับรูทบนโฮสต์เช่นกัน โดยพื้นฐานแล้วสิ่งที่คอนเทนเนอร์ที่ไม่ได้รับสิทธิพิเศษนั้นจะปิดบัง userid จากโฮสต์ ด้วยคอนเทนเนอร์ที่ไม่มีสิทธิใช้งานผู้ใช้ที่ไม่ใช่รูทสามารถสร้างคอนเทนเนอร์และจะมีและปรากฏในคอนเทนเนอร์เป็นรูท แต่จะปรากฏเป็นหมายเลขผู้ใช้ 10,000 ตัวอย่างเช่นบนโฮสต์ (สิ่งที่คุณแมปผู้ใช้เป็น) ฉันเพิ่งเขียนโพสต์บล็อกตามชุดบล็อก Stephane Graber ของ LXC (หนึ่งในนักพัฒนาที่ยอดเยี่ยม / เป็นผู้นำในการพัฒนาของ LXC และผู้ที่ติดตามอย่างแน่นอน) ฉันพูดอีกครั้งยอดเยี่ยมมาก

จากบล็อกของฉัน:

จากภาชนะบรรจุ:

lxc-attach -n ubuntu-unprived
root@ubuntu-unprived:/# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 04:48 ?        00:00:00 /sbin/init
root       157     1  0 04:48 ?        00:00:00 upstart-udev-bridge --daemon
root       189     1  0 04:48 ?        00:00:00 /lib/systemd/systemd-udevd --daemon
root       244     1  0 04:48 ?        00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid
syslog     290     1  0 04:48 ?        00:00:00 rsyslogd
root       343     1  0 04:48 tty4     00:00:00 /sbin/getty -8 38400 tty4
root       345     1  0 04:48 tty2     00:00:00 /sbin/getty -8 38400 tty2
root       346     1  0 04:48 tty3     00:00:00 /sbin/getty -8 38400 tty3
root       359     1  0 04:48 ?        00:00:00 cron
root       386     1  0 04:48 console  00:00:00 /sbin/getty -8 38400 console
root       389     1  0 04:48 tty1     00:00:00 /sbin/getty -8 38400 tty1
root       408     1  0 04:48 ?        00:00:00 upstart-socket-bridge --daemon
root       409     1  0 04:48 ?        00:00:00 upstart-file-bridge --daemon
root       431     0  0 05:06 ?        00:00:00 /bin/bash
root       434   431  0 05:06 ?        00:00:00 ps -ef

จากโฮสต์:

lxc-info -Ssip --name ubuntu-unprived
State:          RUNNING
PID:            3104
IP:             10.1.0.107
CPU use:        2.27 seconds
BlkIO use:      680.00 KiB
Memory use:     7.24 MiB
Link:           vethJ1Y7TG
TX bytes:      7.30 KiB
RX bytes:      46.21 KiB
Total bytes:   53.51 KiB

ps -ef | grep 3104
100000    3104  3067  0 Nov11 ?        00:00:00 /sbin/init
100000    3330  3104  0 Nov11 ?        00:00:00 upstart-udev-bridge --daemon
100000    3362  3104  0 Nov11 ?        00:00:00 /lib/systemd/systemd-udevd --daemon
100000    3417  3104  0 Nov11 ?        00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
100102    3463  3104  0 Nov11 ?        00:00:00 rsyslogd
100000    3516  3104  0 Nov11 pts/8    00:00:00 /sbin/getty -8 38400 tty4
100000    3518  3104  0 Nov11 pts/6    00:00:00 /sbin/getty -8 38400 tty2
100000    3519  3104  0 Nov11 pts/7    00:00:00 /sbin/getty -8 38400 tty3
100000    3532  3104  0 Nov11 ?        00:00:00 cron
100000    3559  3104  0 Nov11 pts/9    00:00:00 /sbin/getty -8 38400 console
100000    3562  3104  0 Nov11 pts/5    00:00:00 /sbin/getty -8 38400 tty1
100000    3581  3104  0 Nov11 ?        00:00:00 upstart-socket-bridge --daemon
100000    3582  3104  0 Nov11 ?        00:00:00 upstart-file-bridge --daemon
lxc       3780  1518  0 00:10 pts/4    00:00:00 grep --color=auto 3104

ในขณะที่คุณสามารถดูกระบวนการกำลังทำงานอยู่ภายในภาชนะที่เป็นราก แต่ไม่ปรากฏเป็นราก แต่เป็น 100000 จากโฮสต์

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


3
ดังนั้นถ้าฉันเข้าใจมันอย่างถูกต้องภาชนะจะไม่ปลอดภัย 100% ด้วยตัวเอง ไม่ว่าคุณจะวิ่งตู้คอนเทนเนอร์แบบใดมีโอกาสที่สัตว์ร้ายจะหลบหนีได้ และเป็นเพียงที่นี่เมื่อประเภทของภาชนะบรรจุกลายเป็นสิ่งสำคัญ สำหรับภาชนะที่ได้รับการยกเว้นสัตว์ร้ายจะถูกเรียกใช้ภายใต้รูทการปลูกรูทคิทและการเคี้ยวคีย์ SSL ที่มีค่า สำหรับผู้ด้อยโอกาสมันจะถูก จำกัด เฉพาะบัญชีผู้ใช้ที่สร้างตู้คอนเทนเนอร์ใช่ไหม การขโมยกุญแจ SSH ของเขา ฯลฯ มันปลอดภัยกว่านี้จริงเหรอ? สามารถอธิบายด้วยรูปภาพสี่กล่องซ้อนกันได้หรือไม่?
Anatoly techtonik

2
กล่าวโดยสรุปคือภาชนะบรรจุที่ออกมานอกกล่องไม่ปลอดภัยสำหรับการใช้งานจริง รักษาสภาพแวดล้อม LXC ของคุณเช่นเดียวกับสภาพแวดล้อม Linux อื่น ๆ คุณจะไม่เปิดกล่อง Linux ให้เปิดเลยใช่มั้ย! ใช่คอนเทนเนอร์ของคุณจะถูก จำกัด เฉพาะที่บัญชีผู้ใช้ถูกแมป ตรวจสอบการโพสต์ของ Graber เกี่ยวกับผู้ที่ไม่ได้ทำโกลาหล: ฉันคิดว่าปัญหาที่ใหญ่ที่สุดคือความสามารถในการใช้ประโยชน์จากเคอร์เนลและ syscalls เพราะคอนเทนเนอร์ทุกตู้แชร์เคอร์เนลเดียวกัน มีหลายวิธีในการเพิ่มความปลอดภัยผ่านกลุ่ม cg และแอพพลิเคชั่นอื่น ๆ เช่น selinux, apparmor และ seccomp และอีกมากมาย
geekbass


ดังนั้นสร้างผู้ใช้ที่ จำกัด แยกต่างหากสำหรับการเรียกใช้คอนเทนเนอร์ ดูเหมือนว่ายุติธรรม ฉันยอมรับสิ่งนี้เป็นคำตอบ ขอบคุณ
Anatoly techtonik

4

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

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

สำหรับผู้ใช้ที่ "ธรรมดา" คุณสามารถใช้คอนเทนเนอร์เพื่อใช้เครื่องเดียวสำหรับสองคนในขณะที่เก็บไว้ราวกับว่าพวกเขาอยู่ในเครื่องที่แตกต่างกันโดยสิ้นเชิง ตัวอย่างเช่นเพื่อนร่วมห้อง


3
ในขณะที่รายละเอียดของมนุษย์ที่ดีเกี่ยวกับสิ่งที่ภาชนะบรรจุสำหรับนี้ยังคงไม่อธิบายความแตกต่างระหว่างคนที่มีสิทธิพิเศษและผู้ด้อยโอกาส
Anatoly techtonik

1

ด้วยเคอร์เนลที่ใช้ร่วมกันแม้ว่ามันจะเพิ่มข้อกำหนดของฝ่ายตรงข้ามที่จะหลุดพ้นในบางวิธี (หรือมากกว่านั้นมันช่วย จำกัด พื้นผิวการโจมตี) แต่คอนเทนเนอร์ที่ไม่มีสิทธิถูกแยกออกจากแฮ็กตรงที่ได้รับโฮสต์ราก .

ด้วยเหตุผลดังกล่าวจึงเป็นข้อสันนิษฐาน / การเรียกร้องที่ไม่ถูกต้อง ต้องบอกว่าระดับความถนัดทางเทคนิคในผู้ใช้หลายคนผ่านทางอินเทอร์เน็ตจะยังคงให้บริการ inet ในหลากหลายวิธีที่พวกเขาไม่สามารถใช้เทคนิคได้จริงๆเฮ้ :)

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