ในบทช่วยสอนนี้คุณเรียนรู้ว่า Selinux คืออะไรและวิธีแก้ข้อผิดพลาด “ไม่สามารถโหลดนโยบาย Selinux ได้” ซึ่งปรากฏบนระบบปฏิบัติการ CentOS
ก่อนอื่น เรามาอธิบายโหมดความปลอดภัยของ SELinux กันก่อน SELinux คืออะไร และมีบทบาทอย่างไรบนระบบปฏิบัติการ Linux?
SELinux เป็นโมดูลความปลอดภัยของเคอร์เนลที่ควบคุมซอฟต์แวร์และการเข้าถึงระบบปฏิบัติการของผู้ใช้ SELinux เปิดตัวในช่วงกลางทศวรรษ 2000 และมีการนำเสนอบน Linux มากขึ้นเรื่อยๆ ในช่วงหลายปีที่ผ่านมา
กิจกรรมของโมดูลนี้ประกอบด้วยการกระจายและการควบคุมนโยบายความปลอดภัยในระบบ โดยจำกัดการเข้าถึงแอปพลิเคชันในระดับของระบบย่อยหลักของเคอร์เนล
กลไกการรักษาความปลอดภัยนี้ทำงานโดยไม่ขึ้นอยู่กับระบบควบคุมและการบล็อกแบบดั้งเดิมของกิจกรรมที่น่าสงสัยบน Linux ไม่สามารถควบคุมโดยผู้ใช้ขั้นสูงได้ “root” และไม่มีการโต้ตอบกับแอปพลิเคชันหรือสคริปต์ของบุคคลที่สาม SELinux จะมอบความเสถียรให้กับเคอร์เนล
ความปลอดภัยของระบบ Linux ที่ไม่มีโมดูล SELinux นี้จะขึ้นอยู่กับความถูกต้องของการกำหนดค่าเคอร์เนล แอปพลิเคชันที่มีสิทธิ์ใช้งาน และการกำหนดค่าโดยอัตโนมัติ ข้อผิดพลาดง่ายๆ ในองค์ประกอบที่กล่าวถึงก่อนหน้านี้อาจทำให้การทำงานที่ถูกต้องของทั้งระบบลดลง
โดยสรุป SELinux สามารถเรียกได้ว่าเป็นผู้พิทักษ์ระบบปฏิบัติการ Linux อย่างแท้จริง โดยรับประกันความสมบูรณ์ ความปลอดภัย และความเสถียร อย่าสับสนระหว่างโมดูลนี้กับโปรแกรมป้องกันไวรัสหรือไฟร์วอลล์ มันแตกต่างอย่างสิ้นเชิง
ผู้ใช้ที่ใช้ Linux สำหรับเว็บและเซิร์ฟเวอร์คลาวด์ตระหนักดีว่า SELinux อาจทำให้เกิดปัญหาเมื่อเรียกใช้แอปพลิเคชันซอฟต์แวร์สิทธิพิเศษในระดับการเข้าถึงและการควบคุมระบบ
SELinux สามารถควบคุมกิจกรรมระบบปฏิบัติการสำหรับผู้ใช้ แอปพลิเคชัน และดีมอนแต่ละราย และบังคับใช้นโยบายและข้อจำกัดด้านความปลอดภัยที่แม่นยำ ซึ่งมักจะเป็นปัญหาสำหรับเว็บเซิร์ฟเวอร์ ซึ่งกระบวนการซอฟต์แวร์เฉพาะส่วนใหญ่มีสิทธิ์และโต้ตอบกับเคอร์เนลของระบบปฏิบัติการ
ผู้ที่ตัดสินใจปิดการใช้งานโมดูลเคอร์เนลนี้มักจะทำผิดพลาดในการแก้ไขคำสั่งซึ่งทำให้ไม่สามารถโหลด SELinux ได้เมื่อรีสตาร์ทระบบปฏิบัติการ “Failed to load SELinux policy“-

ฉันแสดงให้เห็นใน บทความวิธีปิดการใช้งาน SELinuxเพื่อป้องกันการขัดจังหวะกระบวนการที่ทำโดยบริการ NGINX บนเว็บเซิร์ฟเวอร์
# This file controls the state of SELinux on the system.
 # SELINUX= can take one of these three values:
 # enforcing - SELinux security policy is enforced.
 # permissive - SELinux prints warnings instead of enforcing.
 # disabled - No SELinux policy is loaded.
 SELINUX=permissive
 # SELINUXTYPE= can take one of three two values:
 # targeted - Targeted processes are protected,
 # minimum - Modification of targeted policy. Only selected processes are protected.
 # mls - Multi Level Security protection.
 SELINUXTYPE=disabled (WRONG)ข้อผิดพลาดที่เราทำโดยไม่ตั้งใจ และเนื่องจากเป็นเซิร์ฟเวอร์ระยะไกล วิธีแก้ไขจึงเป็นเช่นนั้น การติดตั้งระบบปฏิบัติการใหม่โดยสมบูรณ์-
หากคุณโชคดีกว่าเล็กน้อย คุณสามารถแก้ไข SELinux ได้ก็ต่อเมื่อคุณมี DVD ในมือ หรือสามารถบูตอิมเมจ ISO ของระบบปฏิบัติการได้ “rescue“-
Failed to load SELinux Policy พบได้โดยเฉพาะในเวอร์ชัน CentOS 6, CentOS 7, RHEL 7.x.
 
			
ขอบคุณสำหรับบทความ คุณได้รับสาเหตุที่แท้จริง แต่พลาดวิธีแก้ปัญหาไปหนึ่งข้อ: จริง ๆ แล้วเพิ่ม selinux=0 ในรายการระบบปฏิบัติการที่เสนอโดย grub ก็เพียงพอที่จะปิดการใช้งาน selinux และทำให้ระบบปฏิบัติการสามารถบูตได้อีกครั้ง
ขอบคุณสำหรับวิธีแก้ปัญหานี้!
selinux=0ฉันคิดว่าในขณะที่ฉันเขียนบทความ ตัวเลือกนี้ไม่สามารถใช้ได้ ฉันอาจจะคิดผิด ขอบคุณสำหรับการแก้ปัญหา!