วิธีจัดการกับ SELinux ทำได้ไม่ยาก

ขั้นแรกเราต้องการเครื่องมือสำคัญโดยการติดตั้ง setroubleshoot ผ่าน yum

# yum install -y setroubleshoot

เมื่อได้เครื่องมือแล้ว ใน /var/log จะมี folder ใหม่ชื่อ audit เกิดขึ้น โดยจะมีไฟล์ชื่อ audit.log ซึ่งบรรจุ “ปัญหาทางด้านความปลอดภัย” อยู่ภายใน ในนั้นจะรวมถึงสาเหตุของปัญหาต่างๆ ที่เกิดจาก SELinux เองด้วย การอ่านข้อมูลใน audit.log นั้น จะง่ายกว่ามากถ้าใช้คำสั่ง audit2allow

# audit2allow -a -w

ออพชั่น -w คือตัวที่ช่วยแปรภาษา SELinux มาเป็นภาษามนุษย์ครับ

ถึงแม้ว่า audit2allow จะช่วยแปลภาษา และให้คำแนะนำในการแก้ปัญหาแล้ว เรายังคงต้องลงมือแก้ปัญหาเองอยู่ดี ทีนี้ ในกรณีที่ปัญหาเกิดขึ้นเยอะมากๆ การมาไล่ทีละจุดจะเป็นงานที่ลำบากมากสำหรับ admin วิธีง่ายๆ คือ จำกัดข้อมูลใน audit.log ให้อยู่ในวงจำกัดเฉพาะที่เกี่ยวกับปัญหาของเราก่อน แล้วใช้ออพชั่นพิเศษใน audit2allow จัดทำ ‘security module’ ให้เราอีกที

ขั้นแรก เราจะ Clear Log ให้สะอาดเสียก่อนเพื่อให้มั่นใจว่าใน Log จะมีแต่เรื่องของเราเท่านั้น วิธี Clear จะใช้วิธีลบไฟล์ทิ้งตรงๆ ไม่ได้ครับ process ของ Linux จะไม่รู้จักไฟล์ใหม่ ต้องใช้วิธีต่อไปนี้

# > /var/log/audit/audit.log
# tail -f /var/log/audit/audit.log

ทีนี้ใน Log ก็จะสะอาดเอี่ยม เราก็ไปดำเนินขั้นตอนที่ทำให้เกิดปัญหากับ SELinux เพื่อให้เกิด Log Entry ครับ เช่น เปิดเวบแอพของเราในจุดที่เป็นปัญหา และคาดว่าจะเกิดจาก SELinux, ฯลฯ

เมื่อได้ข้อมูลปัญหาแล้ว ขั้นต่อไปคือการสร้าง Security Policy Module – ใช้คำสั่งต่อไปนี้ครับ

# audit2allow -M mypol /var/log/audit/audit.log
# semodule -i mypol.pp

หรือถ้าหากเราต้องการฟิลเตอร์ข้อมูลเอาเฉพาะบางส่วน จะใช้ grep ช่วยด้วยก็ได้ เช่น

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol

ไฟล์ policy (.pp) นี้สามารถลบทิ้งได้เมื่อ import เข้า SELinux ครับ

คำสั่งที่ควรรู้
# setenforce <0 - permissive| 1-enforce>