วิธีการใช้งาน sandbox


66

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


ฉันไม่เคยใช้มันดังนั้นฉันจึงไม่สามารถตอบคำถามได้ทั้งหมด แต่ AFAIK, AppArmor ( wiki.ubuntu.com/AppArmor ) ควรทำสิ่งนี้ได้
Javier Rivera

ลองใช้ Vagrant เสื้อคลุมสำหรับ VirtualBox vagrantup.comและ [บน Wikipedia] ( en.wikipedia.org/wiki/Vagrant_(software%29)และgitub
Janus Troelsen

@ JavierRivera FWIW, SELinux เช่นกัน ไม่ทราบเลยว่าจะต้องใช้งานบน Ubuntu ง่ายแค่ไหน
TC1

Apparmor ได้รับการติดตั้งโดยค่าเริ่มต้นใน Ubuntu ดังนั้นควรจะง่ายกว่า
Javier Rivera

1
ดูเหมือนว่าพวกเขามีความเป็นไปได้หลายอย่าง: การจำลองเสมือนโดยใช้บางอย่างเช่น Virtualbox (เช่น Vagrant), chroot, LXC, App Armor และ SE Linux
Flimm

คำตอบ:


26

หากพวกเขาไม่น่าเชื่อถือจริงๆและคุณต้องการให้แน่ใจว่าคุณได้ตั้งค่ากล่องแยกต่างหาก ทั้งจริงหรือจริง

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

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

หากคุณมีข้อผูกมัดกับการใช้งานบนกล่องเดียวกันคุณมีตัวเลือกนี้เช่นกัน

  • chroot. นี่เป็นตัวเลือกเริ่มต้นสำหรับการทำเช่นนี้กับผู้คนจำนวนมากและสำหรับภัยคุกคามที่ไม่เฉพาะเจาะจงมันอาจทำงานได้ แต่ไม่ใช่ตัวเลือกความปลอดภัยและสามารถแตกออกได้ค่อนข้างง่าย ฉันขอแนะนำให้ใช้สิ่งนี้ตามที่ตั้งใจไว้ไม่ใช่เพื่อความปลอดภัย

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


การรักษาความปลอดภัยจะเป็นการดีหากใช้แอพพลิเคชันที่ไม่น่าเชื่อถือบนเครื่องเสมือนจริง ฉันได้ยินเกี่ยวกับการหาประโยชน์ทางทฤษฎีซึ่งสามารถเข้าถึงระบบปฏิบัติการโฮสต์ผ่านไฮเปอร์ไวเซอร์และแพร่เชื้อได้
zuallauz

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

14

Firejailค่อนข้างใหม่และมีการพัฒนาอย่างต่อเนื่อง ง่ายต่อการใช้.

คุณสามารถ:

sudo apt-get install firejail
firejail app

ยินดีต้อนรับสู่ถาม Ubuntu! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Mark Kirby

12

นักเทียบท่าจะช่วยคุณในการตั้งค่าคอนเทนเนอร์ที่คุณสามารถเรียกใช้จากเคอร์เนลปัจจุบันของคุณ แต่ยังเก็บอยู่ห่างจากส่วนที่เหลือของระบบของคุณ ดูเหมือนว่าจะทันสมัย ​​แต่มี Ubuntu มุ่งเน้นเอกสารที่ดี


4
ฉันคิดว่านี่เป็นตัวเลือกที่ดีสำหรับกรณีส่วนใหญ่ อย่างไรก็ตามส่วน "ไม่น่าเชื่อถือ" ของคำถามเดิมจะทำให้ฉันกังวลเล็กน้อย มีแฮ็กสาธิตที่พร้อมใช้งานที่สามารถอนุญาตให้แอปพลิเคชัน "แยก" ออกจากคอนเทนเนอร์ และเนื่องจากคอนเทนเนอร์ของนักเทียบท่าทำงานที่การเข้าถึงรูทสิ่งนี้อาจเป็นอันตรายได้หากเป้าหมายของคุณคือการแซนด์บ็อกซ์แอปพลิเคชันจากกันและกัน
Cris Holdorph

@ ChrisHoldorph ถูกต้องแม้ว่า Docker เริ่มดีขึ้นและฉันคิดว่าทุกวันนี้มีความเป็นไปได้ที่จะเรียกใช้นักเทียบท่าที่ไม่มีสิทธิพิเศษ (ไม่ใช่ root) นี่เป็นความจริงอย่างแน่นอนในตอนนี้สำหรับ LXC และ LXD (บางครั้งเรียกว่า LXC daemon) สามารถลดความซับซ้อนของการสร้างคอนเทนเนอร์ดังกล่าวได้อย่างมาก ดังนั้นตู้คอนเทนเนอร์ที่ไม่มีผู้ด้อยโอกาสที่ทันสมัยจึงถือได้ว่าเป็นการปรับปรุงด้านความปลอดภัยมากกว่า chroot แต่พวกเขาไม่ใช่อุปสรรคที่ยอมรับไม่ได้!
Huygens

นักเทียบท่าไม่ใช่เครื่องมือรักษาความปลอดภัย!
Federico

10

การจำลองเสมือนเต็ม / การจำลอง (VirtualBox)

ทางออกหนึ่งที่เป็นไปได้คือซอฟต์แวร์การจำลองเสมือนเช่น VirtualBox ซึ่งคุณสามารถค้นหาได้ในศูนย์ซอฟต์แวร์

  • ติดตั้งกล่องเสมือน
  • สร้างเครื่องเสมือนโดยเปิดใช้งานเครือข่าย
  • ติดตั้ง Ubuntu หรือเดสก์ท็อปที่เบากว่าเช่น Lubuntu
  • อัปเดตระบบปฏิบัติการที่ติดตั้งอย่างสมบูรณ์ (ภายในกล่องเสมือน)
  • ปิดการใช้งานเครือข่ายบนเครื่องเสมือน
  • ถ่ายภาพ

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

มันอาจทิ้งเครื่องเสมือนของคุณ แต่ถ้าคุณสามารถกู้คืนจากสแน็ปช็อตของคุณได้

อาจมีวิธีอื่นเพื่อ จำกัด พลังการทำลายล้างของซอฟต์แวร์ที่ไม่น่าเชื่อถือ แต่นี่เป็นวิธีที่แข็งแกร่งที่สุดที่ฉันสามารถนึกได้

การจำลองเสมือนแบบคอนเทนเนอร์ (Docker / LXC)

ตัวเลือกอื่นอาจเป็นLXCข้อมูลเพิ่มเติมที่นี่

LXC เป็นแพ็คเกจควบคุมผู้ใช้สำหรับ Linux Containers ซึ่งเป็นกลไกระบบเสมือนที่บางเบาซึ่งบางครั้งเรียกว่า“ chroot on steroids”

LXC สร้างขึ้นจาก chroot เพื่อใช้ระบบเสมือนที่สมบูรณ์เพิ่มการจัดการทรัพยากรและกลไกการแยกไปยังโครงสร้างพื้นฐานการจัดการกระบวนการที่มีอยู่ของ Linux

มีอยู่ในศูนย์ซอฟต์แวร์ อย่างไรก็ตามฉันไม่มีประสบการณ์


1
มันไม่สะดวก สร้างเครื่องเสมือนทั้งหมดเพื่อเรียกใช้เกม !! นั่นไม่ใช่ทางออกที่ดีมาก คุณไม่คิดว่าการตั้งค่า GID ของกระบวนการและโพสต์จะWAYง่ายกว่านี้หรือไม่?
Jack Mayerz

จริง ๆ แล้วฉันคิดว่าการตั้งค่ากล่องเสมือนเป็นเรื่องง่ายพอที่ฉันอาจจะไม่รำคาญกับการถ่ายภาพ ถ้ามันทำให้เครื่องเสมือนของฉันล้มเหลวฉันสามารถทิ้งมันไปได้
emory

Downvote: การใช้เหตุผลที่ไม่ถูกต้องตามความเป็นจริงแม้ว่าการแก้ปัญหาจะมีความเข้มงวด โปรแกรมไม่จำเป็นต้องมีสิทธิ์แบบเดียวกับที่ผู้ใช้เรียกใช้ Linux และ Ubuntu ให้การสนับสนุน MAC มานานหลายปี Ubuntu ใช้ AppArmos สำหรับสิ่งนี้และคุณสามารถมีโปรแกรมไว้ในไดเรกทอรีได้อย่างง่ายดาย
Javier Rivera

@JavierRivera "ง่ายดาย" ไม่ใช่คำที่ถูกต้องหรือโปรไฟล์ AppArmor และนโยบาย SELinux สำหรับ Firefox จะถูกจัดส่งตามค่าเริ่มต้นในทุก distro และไม่ใช่กรณีนี้ Ubuntu จัดส่งโปรไฟล์ดังกล่าว แต่ไม่ได้เปิดใช้งานตามค่าเริ่มต้นเนื่องจากคุณสมบัติ Firefox "ยอดนิยม" ไม่กี่ตัว มีนโยบาย SELinux ไม่มากนักสำหรับแอพ GUI ส่วนใหญ่แอพดังกล่าวต้องการการอนุญาตที่มากเกินไปที่จะยังคงถูกเรียกว่าแซนด์บ็อกซ์ หากคุณไม่เห็นด้วยกรุณาโพสต์ลิงค์ที่นี่ไปยัง sandbox Firefox อย่างปลอดภัยโดยใช้ AppArmor หรือ SELinux! หากคุณสามารถฉันจะมีความสุขจริงๆ :-)
Huygens

คุณควรกำหนด "ปลอดภัย" สำหรับคำตอบที่มีความหมาย แต่นโยบาย Firefox เริ่มต้นใน Ubuntu ค่อนข้างสมเหตุสมผลสำหรับฉัน แน่นอนว่ามันแบ่งสิ่งต่าง ๆ ไม่เป็นมิตรกับผู้ใช้เหมือนไม่มีอะไรเลย แต่มันก็ยังใช้งานง่ายกว่าเครื่องเสมือนเต็มรูปแบบสำหรับฉัน
Javier Rivera

9

mbox

Mbox เป็นกลไก sandbox ที่มีน้ำหนักเบาซึ่งผู้ใช้สามารถใช้โดยไม่มีสิทธิ์พิเศษในระบบปฏิบัติการชุดสินค้า

ฉันใช้มันสองสามอย่างเชื่อถือได้


4

subuser

คุณสามารถใช้ subuser เพื่อแซนด์บ็อกซ์แอปพลิเคชันของคุณด้วย Docker สิ่งนี้ช่วยให้คุณทำสิ่งต่าง ๆ เช่นแอป sandbox GUI ซึ่งไม่สะดวกในการใช้ Docker โดยตรง

sudo apt install subuser

1

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


2
สิ่งนี้ไม่ได้ป้องกันระบบจากซอฟต์แวร์ที่เป็นอันตรายที่อาจยังคงได้รับการติดตั้งหรือเรียกใช้ - มันยังไม่ใช่การทดลองแบบ sandboxing ในลักษณะที่คำถามนี้หมายถึง
Ward Ward โธมัส Ward

1

DoSH - นักเทียบท่าเปลือก

ในกรณีที่คุณเพียงต้องการ sandbox กิจกรรมของผู้ใช้คุณสามารถใช้ "DoSH"

DoSH (ซึ่งย่อมาจาก Docker SHell) เป็นการพัฒนาเพื่อสร้างคอนเทนเนอร์ Docker เมื่อผู้ใช้ล็อกอินในระบบ Linux และรันเชลล์ลงในพวกเขาแทนที่จะสร้างเชลล์อย่างสมมาตร

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