เหตุผลในการปิด / เปิดใช้งาน SELinux


36

ในบรรทัดของคำถามนี้ใน StackOverflow และฝูงชนที่แตกต่างอย่างสิ้นเชิงที่เรามีที่นี่ฉันสงสัยว่า: อะไรคือเหตุผลของคุณที่จะปิดการใช้งาน SELinux (สมมติว่าคนส่วนใหญ่ยังคงทำ)? คุณต้องการเปิดใช้งานหรือไม่ คุณเคยมีประสบการณ์ผิดปกติอะไรบ้างโดยออกจาก SELinux นอกเหนือจาก Oracle แล้วผู้ขายรายอื่น ๆ มีปัญหาในการสนับสนุนระบบที่เปิดใช้งาน SELinux หรือไม่

คำถามโบนัส: ทุกคนสามารถจัดการให้ Oracle ทำงานบน RHEL5 ด้วย SELinux ในการบังคับใช้โหมดเป้าหมายได้หรือไม่ ฉันหมายความว่าอย่างเข้มงวดจะยอดเยี่ยม แต่ฉันก็ยังทำได้ไม่ไกลนักดังนั้นให้อยู่กับเป้าหมายก่อน ;-)

คำตอบ:


25

RedHat เปิด SELinux เป็นค่าเริ่มต้นเพราะปลอดภัยกว่า ผู้ขายเกือบทุกรายที่ใช้ผลิตภัณฑ์ที่ได้จาก Redhat ปิด SELinux เพราะพวกเขาไม่ต้องการให้ทันเวลา (ดังนั้นจึงต้องใช้เงิน) เพื่อหาสาเหตุที่ไม่สามารถใช้งานได้ คน Redhat / Fedora ใช้เวลาและความพยายามอย่างมากในการทำให้ SELinux เป็นตัวเลือกที่เป็นไปได้ใน Enterprise แต่ไม่มีองค์กรอื่น ๆ ที่สนใจเรื่องความปลอดภัยของคุณ (พวกเขาเกี่ยวกับการดูแลของพวกเขาปลอดภัยและชื่อเสียงความปลอดภัยของผลิตภัณฑ์ของพวกเขาซึ่งเป็นสิ่งที่แตกต่างกันโดยสิ้นเชิง.)

หากคุณสามารถทำให้มันใช้งานได้ไปเลย หากไม่สามารถทำได้อย่าคาดหวังความช่วยเหลือจากผู้ขายมากมาย คุณอาจได้รับความช่วยเหลือจากพวก Redhat / Fedora จากรายชื่อผู้รับจดหมาย selinux และช่อง #selinux บน freenode แต่จาก บริษัท อย่าง Oracle - ดี SELinux ไม่ได้คำนึงถึงแผนธุรกิจของพวกเขาอย่างแท้จริง


8
ผู้จำหน่ายซอฟต์แวร์ "enterprise" ได้รับการว่าจ้างให้ติดตั้งผลิตภัณฑ์จัดการปัญหาการอนุญาตโดยการทำ chmod -R 777 * ในแผนผังไดเรกทอรีขนาดใหญ่ พวกเขาไม่สนใจความปลอดภัยของคุณอย่างแท้จริง
— kmarsh

21

โดยทั่วไปคุณจะดีกว่าการใช้งาน SELinux ใน Permissive แทนที่จะเป็นการปิดใช้งานทั้งหมด จากนั้นคุณสามารถตรวจสอบ (ผ่านaudit2why) หลังจากผ่านไปครู่หนึ่งเพื่อดูว่าการละเมิดประเภทใดที่จะถูกปฏิเสธในระหว่างการใช้งานปกติของคุณและสร้างนโยบายที่กำหนดเองผ่านทางaudit2allowหากการละเมิดเหล่านั้นเป็นผลบวกสำหรับการตั้งค่าของคุณ

ฉันได้พบพฤติกรรมของ SELinux ในระบบที่ไม่ได้มาจาก Fedora เพื่อให้มีความประทับใจมากกว่าสิ่งที่คุณได้รับจากระบบ Fedora / RHEL ทั่วไปตามค่าเริ่มต้น

หากคุณยังไม่เคยเห็นมันมาก่อนคุณอาจพบว่าคู่มือผู้ใช้ของFedora SELinux เป็นเรื่องเกี่ยวกับการศึกษา


16

เหตุผลสำหรับ:

  • ระดับความปลอดภัยที่สูงขึ้นผ่านการควบคุมการเข้าใช้
  • คุณต้องการเหตุผลที่สูงกว่าระดับความปลอดภัยหรือไม่ :-)

เหตุผลต่อ:

  • ยากที่จะเข้าใจ
  • จัดการยาก
  • แก้ไขปัญหาได้ยาก

ที่กล่าวว่าถ้าคุณกำลังพิจารณา SELinux ผมขอแนะนำหนังสือSELinux โดยตัวอย่าง

ฉันทำงานให้กับบริษัทที่เปิดใช้งาน SELinux ในโหมดบังคับใช้ในทุกระบบ กุญแจสำคัญสำหรับเราคือการทำความเข้าใจและใช้โปรแกรม audit2allow ซึ่งสามารถใช้เพื่อสร้างกฎบริบทใหม่

อันดับแรกเราจะสร้างเทมเพลตที่มี audit2allow จากนั้นใช้สคริปต์เพื่อสร้างมันเช่นนี้

export NAME="my_serviced"
sudo audit2allow -m "${NAME}" -i /var/log/audit/audit.log > ${NAME}.te
sudo setup_semodule ${NAME}

สคริปต์ setup_semodule:

#!/bin/sh

# Where to store selinux related files
SOURCE=/etc/selinux/local
BUILD=/etc/selinux/local
NAME=$1

/usr/bin/checkmodule -M -m -o ${BUILD}/${NAME}.mod ${SOURCE}/${NAME}.te
/usr/bin/semodule_package -o ${BUILD}/${NAME}.pp -m ${BUILD}/${NAME}.mod
/usr/sbin/semodule -i ${BUILD}/${NAME}.pp

/bin/rm ${BUILD}/${NAME}.mod ${BUILD}/${NAME}.pp

สิ่งนี้จะสร้างโมดูลจากเทมเพลต (ไฟล์ .te) สร้างแพ็คเกจและโหลดโมดูล

เราใช้ Puppet สำหรับระบบการจัดการการกำหนดค่าของเราและเราเขียนการกำหนดค่าสำหรับ Puppet เพื่อจัดการทั้งหมดนี้

โมดูลหุ่นกระบอก SELinux:


2
+1 ข้อมูลที่มีประโยชน์มาก
— DCookie

10

เหตุผลที่ปิดเครื่องเนื่องจากอาจเป็นความเจ็บปวดในการแก้ไขข้อบกพร่อง

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

ตอนนี้การดีบักง่ายขึ้นโดยเฉพาะถ้าคุณทำให้ตัวเองเป็นครอบครัวด้วย audit2allow คุณไม่จำเป็นต้องเข้าใจมันด้วย audit2allow แต่บางครั้งคุณสามารถเปิด thins ได้กว้างกว่าที่คุณคิดด้วย audit2allow ต้องบอกว่า SELinux บางตัวดีกว่าไม่มีเลย

ฉันไม่เคยเป็นผู้เชี่ยวชาญของ SELinux มาก่อนและได้ใช้งานมาสองสามปีแล้วเท่านั้น ฉันยังไม่เข้าใจพื้นฐานจริง ๆ แต่ฉันรู้พอที่จะทำให้แอพทำงานได้ btoh ที่รวมอยู่ใน distro และอุปกรณ์สุ่มที่รวบรวมจาก 'net

สิ่งสำคัญที่ฉันเคยใช้เป็นls -lZ(บริบท selinux แสดง), audit2allow, chcon, semodule, getenforce, setenforceและบูลี ด้วยเครื่องมือเหล่านั้นที่ฉันจัดการเพื่อให้ได้ทุกแอพฉันต้องทำงานภายใต้ SELinux

ฉันพบว่าหนึ่งในปัญหาใหญ่ของเขาในการดีบักปัญหา SELinux คือเพียงแค่ทำการตรวจสอบปัญหาของ SELinux เมื่อฉันมีปัญหาอื่น ๆ ที่ไม่สามารถอธิบายได้ ปกติฉันใช้เวลาเล็กน้อยที่จะไป "h! check SELinux !!"

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


2
+1 สำหรับการชี้ให้เห็นว่าคุณมักจะได้รับหน้าที่ที่ดีกว่าในการปล่อยให้ SELinux ทำงานและปิดเพื่อยืนยันว่าเป็นสาเหตุของปัญหาหรือไม่
— Ophidian

2

ฉันปิดการใช้งาน SELinux สำหรับAppArmorฉันพบว่าเป็นมิตรและดูแลรักษาได้ง่ายกว่า SELinux


น่าสนใจ คุณอยู่ที่ distro ฉันไม่เคยใช้ AppArmor แต่ฉันอยากรู้ว่า distro ตั้งค่าไว้ที่ใดและมีคุณสมบัติอย่างไร จะมองเข้าไปที่นี้ โดยส่วนตัวฉันไม่ได้มีปัญหากับ SELinux, btw แต่ใช้เวลาทำความคุ้นเคย
— wzzrd

AppArmor ได้รับการพัฒนาโดย Novell และรวมอยู่ในค่าเริ่มต้นในการกระจาย openSUSE และ SUSE Linux Enterprise ทั้งหมด โดยจะเปิดใช้งานตามค่าเริ่มต้นบน Enterprise distros และเปิดใช้งานได้ง่ายใน distros ของผู้บริโภค Ubuntu มีมาตั้งแต่ 7.04 แต่จะไม่บังคับใช้ทุกแอปพลิเคชันโดยอัตโนมัติตามค่าเริ่มต้น
— andrewd18

ฉันคิดว่าฉันจำการพูดคุยเกี่ยวกับ Novell การเลิกจ้างส่วนใหญ่ของทีม AppArmor อูบุนตูไม่ปล่อยมันจาก distro หรือเปล่า? หรือฉันได้ยินเสียงในหัวของฉันอีกครั้ง? ;-)
— wzzrd

Novell ทำ - แต่ผู้แต่งยังคงใช้งานได้ มันยังคงรองรับบน Ubuntu และสิ่งต่างๆเช่นถ้วยและ mysqld จะถูกบังคับใช้ตามค่าเริ่มต้น
— LiraNuna

ไม่เสมอไป แต่บ่อยครั้งที่เราแลกเปลี่ยนการใช้งานง่ายเพื่อความปลอดภัยและในทางกลับกัน มันเป็นการกระทำที่สมดุลและคำตอบนั้นไม่สำคัญเพราะการกำหนดความเสี่ยงและเป้าหมายด้านความปลอดภัยเป็นงานที่ยากมาก
— rev

1

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


ที่จริงแล้วมีหลายกรณีที่ SELinux สามารถรบกวนการใช้งานในโหมดที่ได้รับอนุญาต หนึ่ง: ในบางช่วงเวลามีการบังคับใช้กฎบางอย่างแม้ว่าระบบจะได้รับอนุญาต ไม่แน่ใจว่านี่เป็นกรณีนี้หรือไม่ สอง: เวลาที่ใช้ในการประมวลผลกฎอาจเพียงพอที่จะทำให้ IPC หมดสภาพ ฉันเคยเห็นสิ่งนี้กับกลุ่ม Oracle อีกครั้งในอดีตและไม่แน่ใจว่าสถานะปัจจุบันคืออะไร แต่จำไว้ว่าเกือบทุกการเรียกระบบจะมีเวลาประมวลผลเพิ่มเล็กน้อย
— Jason Tan

0

SE Linux ไม่เป็นมิตรอย่างสิ้นหวังอย่างที่เคยเป็นมาอย่างน้อยก็ไม่ได้อยู่ในร้าน distros ที่ได้รับการสนับสนุนทางการค้าอย่าง RHEL5 ส่วนใหญ่คุณสามารถทิ้งไว้ได้และมันจะดีกับทุกอย่างที่ RedHat จัดหาให้ หากมีอย่างอื่นก็สามารถเปลี่ยนแปลงได้ ปัญหาคืองานบริการระดับมืออาชีพเพื่อให้แอปพลิเคชันทำงานด้วยการเปิดใช้งาน SE Linux เป็นรายได้ที่ดีสำหรับ บริษัท เช่น RedHat และ Oracle ดังนั้นพวกเขาจึงไม่มีแรงจูงใจที่จะทำให้ทุกอย่างทำงานได้อย่างดี ootb


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