กลไกการแยกคล้ายกับ plegde และเปิดเผยกำลังได้รับการพัฒนาสำหรับ FreeBSD

มีการเสนอให้ใช้กลไกการแยกแอปพลิเคชันที่คล้ายกับระบบเรียกใช้ plegde และ unveil ที่พัฒนาโดยโครงการ OpenBSD สำหรับ FreeBSD ในระบบ plegde การแยกจะทำได้โดยการปิดใช้งานระบบเรียกใช้ที่ไม่ใช้งาน ในขณะที่ในระบบ unveil จะทำได้โดยการเปิดการเข้าถึงเฉพาะเส้นทางไฟล์ที่แอปพลิเคชันสามารถเข้าถึงได้เท่านั้น มีการสร้างรายการอนุญาต (whitelist) ของระบบเรียกใช้และเส้นทางไฟล์สำหรับแอปพลิเคชัน ในขณะที่ระบบเรียกใช้และเส้นทางอื่นๆ ทั้งหมดจะถูกห้าม

ใน FreeBSD สิ่งที่เทียบเท่ากับ plegde และ unveil นั้นแตกต่างออกไปตรงที่มันมีเลเยอร์เพิ่มเติมที่ช่วยให้สามารถแยกแอปพลิเคชันได้โดยไม่ต้องเปลี่ยนแปลงโค้ดมากนักหรืออาจไม่ต้องเปลี่ยนแปลงเลย เพื่อความเข้าใจที่ถูกต้อง ใน OpenBSD นั้น plegde และ unveil ถูกออกแบบมาเพื่อการทำงานร่วมกับสภาพแวดล้อมพื้นฐานอย่างแน่นหนา และถูกนำไปใช้โดยการเพิ่มคำอธิบายประกอบพิเศษลงในโค้ดของแต่ละแอปพลิเคชัน เพื่อลดความซับซ้อนด้านความปลอดภัย ตัวกรองจะช่วยลดความจำเป็นในการกำหนดรายละเอียดในระดับการเรียกใช้ระบบแต่ละรายการ และอนุญาตให้จัดการกับคลาสการเรียกใช้ระบบ (อินพุต/เอาต์พุต การอ่านไฟล์ การเขียนไฟล์ ซ็อกเก็ต ioctl sysctl การเริ่มต้นกระบวนการ ฯลฯ) ฟังก์ชันการจำกัดการเข้าถึงสามารถเรียกใช้ได้ในโค้ดของแอปพลิเคชันเมื่อมีการดำเนินการเฉพาะ ตัวอย่างเช่น การเข้าถึงซ็อกเก็ตและไฟล์สามารถปิดได้หลังจากเปิดไฟล์ที่ต้องการและสร้างการเชื่อมต่อเครือข่ายแล้ว

ผู้เขียนโปรแกรม plegde และ unveil สำหรับ FreeBSD มีเจตนาที่จะให้ผู้ใช้สามารถแยกแอปพลิเคชันต่างๆ ออกจากกันได้ เพื่อบรรลุเป้าหมายนี้ พวกเขาจึงเสนอโปรแกรม curtain ซึ่งอนุญาตให้ใช้กฎที่กำหนดไว้ในไฟล์แยกต่างหากกับแอปพลิเคชันต่างๆ การกำหนดค่าที่เสนอนั้นประกอบด้วยไฟล์ที่มีการตั้งค่าพื้นฐานซึ่งกำหนดคลาสการเรียกใช้ระบบและเส้นทางไฟล์ทั่วไปเฉพาะสำหรับแอปพลิเคชันบางอย่าง (เสียง เครือข่าย การบันทึกข้อมูล ฯลฯ) รวมถึงไฟล์ที่มีกฎการเข้าถึงเฉพาะแอปพลิเคชันด้วย

ยูทิลิตี้ Curtain สามารถใช้เพื่อแยกยูทิลิตี้ส่วนใหญ่ที่ไม่ได้แก้ไข กระบวนการเซิร์ฟเวอร์ แอปพลิเคชันกราฟิก และแม้แต่เซสชันเดสก์ท็อปทั้งหมดได้ สามารถใช้ร่วมกับกลไกการแยกที่จัดให้โดยระบบย่อย Jail และ Capsicum ได้ การแยกแบบซ้อนกันก็เป็นไปได้เช่นกัน โดยที่แอปพลิเคชันที่กำลังทำงานอยู่จะสืบทอดกฎที่กำหนดโดยแอปพลิเคชันแม่ และเสริมด้วยข้อจำกัดเฉพาะบุคคล การทำงานของเคอร์เนลบางอย่าง (เครื่องมือดีบัก, POSIX/SysV IPC, PTYs) ยังได้รับการปกป้องเพิ่มเติมโดยใช้กลไก Barrier ที่ป้องกันการเข้าถึงอ็อบเจ็กต์เคอร์เนลที่ไม่ได้สร้างโดยกระบวนการปัจจุบันหรือกระบวนการแม่

กระบวนการสามารถกำหนดค่าการแยกตัวของตัวเองได้โดยการเรียกใช้ curtainctl หรือใช้ฟังก์ชัน plegde() และ unveil() ที่มีให้โดยไลบรารี libcurtain คล้ายกับที่มีใน OpenBSD sysctl 'security.curtain.log_level' มีไว้สำหรับติดตามการบล็อกระหว่างการทำงานของแอปพลิเคชัน การเข้าถึงโปรโตคอล X11 และ Wayland จะเปิดใช้งานแยกต่างหากโดยการระบุตัวเลือก "-X"/"-Y" และ "-W" เมื่อเริ่มต้น curtain แต่การสนับสนุนแอปพลิเคชันแบบกราฟิกยังไม่เสถียรเพียงพอและมีปัญหาที่ยังไม่ได้รับการแก้ไขอยู่หลายประการ (ปัญหาส่วนใหญ่จะปรากฏขึ้นเมื่อใช้ X11 ในขณะที่การสนับสนุน Wayland นั้นได้รับการใช้งานที่ดีกว่ามาก) ผู้ใช้สามารถเพิ่มข้อจำกัดเพิ่มเติมได้โดยการสร้างไฟล์กฎในเครื่อง (~/.curtain.conf) ตัวอย่างเช่น เพื่ออนุญาตให้เขียนจาก Firefox ไปยังไดเร็กทอรี ~/Downloads/ เท่านั้น คุณสามารถเพิ่มส่วน "[firefox]" พร้อมกับกฎ "~/Downloads/ : rw +"

การใช้งานนี้รวมถึงโมดูลเคอร์เนล mac_curtain สำหรับการควบคุมการเข้าถึงแบบบังคับ (MAC) ชุดแพตช์สำหรับเคอร์เนล FreeBSD ที่ใช้ตัวจัดการและตัวกรองที่จำเป็น ไลบรารี libcurtain สำหรับการใช้ฟังก์ชัน plegde และ unveil ในแอปพลิเคชัน ยูทิลิตี้ curtain ไฟล์การกำหนดค่าตัวอย่าง ชุดทดสอบ และแพตช์สำหรับโปรแกรมในพื้นที่ผู้ใช้บางโปรแกรม (ตัวอย่างเช่น สำหรับการใช้ $TMPDIR เพื่อกำหนดมาตรฐานการจัดการไฟล์ชั่วคราว) ผู้เขียนตั้งใจที่จะลดจำนวนการเปลี่ยนแปลงที่ต้องแก้ไขเคอร์เนลและแอปพลิเคชันให้น้อยที่สุดเท่าที่จะเป็นไปได้

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster