เหตุผลในการปิด / เปิดใช้งาน 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.