Linux Security Selinux Apparmor Security

Linux Security Selinux Apparmor

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Linux Security: SELinux และ AppArmor

Linux Security: SELinux และ AppArmor คืออะไร / ทำไมถึงสำคัญ

น้องๆ เคยสงสัยไหมว่าทำไม Linux ถึงขึ้นชื่อเรื่องความปลอดภัย? หนึ่งในเคล็ดลับสำคัญก็คือกลไกอย่าง SELinux และ AppArmor นี่แหละ สมัยผมทำร้านเน็ต SiamCafe.net เมื่อนานมาแล้ว (ตั้งแต่ปี 1997 โน่น!) ความปลอดภัยของระบบเป็นเรื่องที่ต้องให้ความสำคัญอันดับต้นๆ เลยนะ เพราะข้อมูลลูกค้าสำคัญมากๆ ถ้าโดนแฮกนี่เรื่องใหญ่

SELinux (Security-Enhanced Linux) และ AppArmor เป็นเหมือน "บอดี้การ์ด" ที่คอยควบคุมว่าแต่ละโปรแกรมในระบบของเรามีสิทธิ์ทำอะไรได้บ้าง มันทำงานโดยอิงจากนโยบาย (policy) ที่เรากำหนดไว้ เช่น ห้ามโปรแกรม A เข้าถึงไฟล์ของโปรแกรม B หรือห้ามโปรแกรม C เปิดพอร์ตบางพอร์ต อะไรทำนองนี้

ทำไมต้องมีบอดี้การ์ด? ลองคิดดูว่าถ้ามีโปรแกรมที่ติดมัลแวร์ (malware) เข้ามาในระบบของเรา แล้วโปรแกรมนั้นมีสิทธิ์เข้าถึงไฟล์ทุกอย่างได้หมด มันก็จะสามารถขโมยข้อมูล แก้ไขไฟล์ หรือแม้แต่ควบคุมระบบของเราได้เลย แต่ถ้าเรามี SELinux หรือ AppArmor คอยควบคุมอยู่ มัลแวร์ตัวนั้นก็จะถูกจำกัดสิทธิ์ ไม่สามารถทำอะไรได้ตามใจชอบ

พื้นฐานที่ต้องรู้

ก่อนจะไปลงมือใช้งาน SELinux และ AppArmor เรามาทำความเข้าใจพื้นฐานกันก่อนนิดนึงนะ

Context-Based Security

SELinux ทำงานโดยอาศัยสิ่งที่เรียกว่า "context" ซึ่งเป็นเหมือนป้ายกำกับ (label) ที่ติดอยู่กับทุกสิ่งในระบบ ไม่ว่าจะเป็นไฟล์ โฟลเดอร์ โปรแกรม หรือแม้แต่ผู้ใช้ Context จะบอกว่าสิ่งนั้นคืออะไร และมีสิทธิ์อะไรบ้าง ยกตัวอย่างเช่น ไฟล์ /var/www/html/index.html อาจจะมี context เป็น httpd_sys_content_t ซึ่งหมายความว่าเป็นไฟล์ที่เว็บเซิร์ฟเวอร์ (httpd) สามารถอ่านได้

เมื่อโปรแกรมพยายามที่จะเข้าถึงไฟล์ ระบบจะตรวจสอบ context ของทั้งโปรแกรมและไฟล์ แล้วเปรียบเทียบกับนโยบายที่กำหนดไว้ ถ้า context ของโปรแกรมมีสิทธิ์ที่จะเข้าถึง context ของไฟล์ได้ ก็จะอนุญาตให้เข้าถึงได้ แต่ถ้าไม่มีสิทธิ์ ก็จะปฏิเสธการเข้าถึง

Profiles (AppArmor)

AppArmor จะทำงานโดยใช้สิ่งที่เรียกว่า "profile" ซึ่งเป็นเหมือนกฎเกณฑ์ (rules) ที่กำหนดว่าโปรแกรมแต่ละโปรแกรมมีสิทธิ์ทำอะไรได้บ้าง ยกตัวอย่างเช่น profile ของเว็บเซิร์ฟเวอร์อาจจะอนุญาตให้เว็บเซิร์ฟเวอร์อ่านไฟล์ใน /var/www/html/ ได้ แต่ไม่อนุญาตให้เขียนไฟล์ใน /etc/

AppArmor จะตรวจสอบการทำงานของโปรแกรมอยู่ตลอดเวลา ถ้าโปรแกรมพยายามทำอะไรที่ขัดกับ profile ที่กำหนดไว้ AppArmor ก็จะปฏิเสธการทำงานนั้น

วิธีใช้งาน / เริ่มต้นยังไง

เอาล่ะ ทีนี้เรามาดูวิธีการใช้งาน SELinux และ AppArmor กันบ้าง

ขั้นตอนปฏิบัติจริง

SELinux: ตรวจสอบสถานะและโหมด

ก่อนอื่นเลย เราต้องตรวจสอบก่อนว่า SELinux เปิดใช้งานอยู่หรือไม่ และอยู่ในโหมดไหน โดยใช้คำสั่ง sestatus

sestatus

ผลลัพธ์ที่ได้จะบอกสถานะของ SELinux (enabled/disabled) และโหมด (enforcing/permissive/disabled)

โดยทั่วไป เราจะเริ่มต้นด้วยโหมด Permissive ก่อน เพื่อดูว่ามีโปรแกรมไหนที่ทำงานผิดปกติหรือไม่ แล้วค่อยเปลี่ยนเป็นโหมด Enforcing เมื่อแน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้อง

AppArmor: การสร้าง Profile

AppArmor จะเน้นการสร้าง profile ให้กับแต่ละโปรแกรม ซึ่งเราสามารถใช้เครื่องมือ aa-genprof เพื่อช่วยสร้าง profile ได้

sudo aa-genprof /usr/sbin/apache2

คำสั่งนี้จะเริ่มกระบวนการสร้าง profile สำหรับโปรแกรม Apache2 จากนั้นเราก็ใช้งานโปรแกรม Apache2 ตามปกติ เมื่อ AppArmor ตรวจพบการกระทำที่ยังไม่มีใน profile มันจะถามเราว่าจะอนุญาตหรือปฏิเสธการกระทำนั้น

การสร้าง profile ที่ดีต้องใช้เวลาและความเข้าใจในการทำงานของโปรแกรม แต่ผลลัพธ์ที่ได้คือระบบที่ปลอดภัยมากขึ้น

เปรียบเทียบกับทางเลือกอื่น

นอกจาก SELinux และ AppArmor แล้ว ก็ยังมีทางเลือกอื่นๆ ในการรักษาความปลอดภัยของ Linux อีก เช่น

SELinux และ AppArmor เป็นเหมือน "layer" เพิ่มเติมที่ช่วยเสริมความแข็งแกร่งให้กับระบบ Linux ของเรา

คุณสมบัติ SELinux AppArmor
Context-Based Security ใช่ ไม่ใช่
Profile-Based Security ไม่ใช่ ใช่
ความซับซ้อน สูง ปานกลาง
การตั้งค่าเริ่มต้น Red Hat, CentOS, Fedora Ubuntu, SUSE

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

หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะ ถ้ามีคำถามอะไรเพิ่มเติม ถามมาได้เลยครับ อย่าลืมแวะไปดูบทความอื่นๆ ที่ SiamCafe Blog ด้วยนะ

และถ้าอยากรู้เรื่อง Cloud Computing เพิ่มเติม ลองดูที่ SiamCafe Blog ได้เลย

Best Practices / เคล็ดลับจากประสบการณ์

สวัสดีน้องๆ วันนี้มาต่อกันเรื่อง Security บน Linux หลังจากที่เราคุยกันเรื่อง SELinux และ AppArmor ไปแล้ว คราวนี้มาดู Best Practices หรือเคล็ดลับที่พี่ใช้จริงสมัยทำร้านเน็ตกันบ้าง ขอบอกเลยว่าเรื่องพวกนี้สำคัญมาก เพราะมันช่วยลดความเสี่ยงที่เราจะโดนแฮก หรือเครื่องมีปัญหาได้เยอะเลย

สมัยก่อนร้านเน็ตพี่นี่โดนมาหมดแล้ว ตั้งแต่ไวรัสกินเครื่อง ไปจนถึงโดนแฮกเข้าระบบ ดังนั้นเรื่อง Security นี่พี่เลยให้ความสำคัญเป็นพิเศษ มาดูกันว่ามีอะไรบ้าง

3-4 เทคนิคที่ใช้ได้จริง

1. Update ระบบสม่ำเสมอ

อันนี้เบสิคมากๆ แต่สำคัญสุดๆ น้องๆ ต้องอัพเดทระบบปฏิบัติการ (OS) และโปรแกรมต่างๆ ให้เป็นเวอร์ชั่นล่าสุดอยู่เสมอ เพราะว่าพวกช่องโหว่ (Vulnerabilities) มักจะถูกแก้ไขในเวอร์ชั่นใหม่ๆ เสมอ

สมัยก่อนพี่จะตั้ง cron job ให้มันอัพเดทอัตโนมัติทุกวันเลย สะดวกดี ไม่ต้องมานั่งทำเอง


# crontab -e
0 3 * * * apt update && apt upgrade -y

2. ใช้ Firewall

Firewall นี่เหมือนยามหน้าประตูบ้าน ช่วยกรอง traffic ที่เข้ามาในเครื่องเรา ใครที่ไม่ได้ขออนุญาตก็กันออกไป

พี่แนะนำให้ใช้ ufw (Uncomplicated Firewall) ใช้งานง่ายดี


sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh

3. ปิด Services ที่ไม่ได้ใช้

Services อะไรที่เราไม่ได้ใช้ ก็ปิดมันไปเลยครับ เพราะยิ่งเราเปิด services เยอะ ก็ยิ่งมีโอกาสโดนโจมตีมากขึ้น

สมัยก่อนพี่จะไล่ดูเลยว่ามี services อะไรบ้าง แล้วปิดที่ไม่จำเป็นทิ้ง


sudo systemctl stop [service_name]
sudo systemctl disable [service_name]

4. ติดตั้ง Intrusion Detection System (IDS) / Intrusion Prevention System (IPS)

IDS/IPS พวกนี้เหมือนระบบเตือนภัย ที่จะคอยตรวจจับพฤติกรรมที่น่าสงสัยในระบบของเรา ถ้าเจออะไรผิดปกติก็จะแจ้งเตือนเรา หรือป้องกันไม่ให้เกิดเหตุการณ์ร้ายแรงได้

พี่เคยใช้ Snort อยู่พักนึง แต่หลังๆ มาใช้พวก cloud-based IDS/IPS แทน สะดวกกว่าเยอะ

FAQ คำถามที่พบบ่อย

SELinux กับ AppArmor อันไหนดีกว่ากัน?

มันตอบยากนะน้อง เพราะแต่ละตัวก็มีข้อดีข้อเสียต่างกัน แต่ถ้าให้พี่แนะนำ พี่ว่าลองศึกษาทั้งสองตัว แล้วเลือกใช้ให้เหมาะกับความต้องการของเราดีกว่า บางทีอาจจะใช้ทั้งสองตัวควบคู่กันไปเลยก็ได้

SELinux นี่มันยุ่งยากมากเลย มีวิธีใช้ง่ายๆ บ้างไหม?

SELinux มันก็ซับซ้อนจริงๆ แหละ แต่พี่แนะนำให้เริ่มจาก Mode ที่เป็น permissive ก่อน แล้วค่อยๆ ปรับไปเป็น enforcing ทีละ step จะช่วยให้เราเข้าใจการทำงานของมันได้ง่ายขึ้น

AppArmor นี่มันกระทบกับการทำงานของโปรแกรมเยอะไหม?

AppArmor ก็อาจจะมีผลกระทบบ้าง แต่ส่วนใหญ่จะไม่เยอะเท่า SELinux เพราะ AppArmor มันเน้นการจำกัดสิทธิ์การเข้าถึงไฟล์และ Network เป็นหลัก

ถ้าเครื่องโดนแฮกไปแล้ว ควรทำยังไง?

อันดับแรกเลยคือ รีบ disconnect เครื่องออกจาก Network ก่อน เพื่อป้องกันไม่ให้มันแพร่กระจายไปยังเครื่องอื่นๆ จากนั้นก็ทำการตรวจสอบ Log files เพื่อหาสาเหตุของการโดนแฮก และทำการแก้ไขช่องโหว่ที่เกิดขึ้น สุดท้ายก็ทำการ restore ระบบจาก backup (ถ้ามี)

สรุป

Security บน Linux มันเป็นเรื่องที่ไม่จบไม่สิ้น เราต้องคอยเรียนรู้และปรับตัวอยู่เสมอ เพราะว่า Hacker เขาก็พัฒนาวิธีการโจมตีอยู่ตลอดเวลา สิ่งสำคัญที่สุดคือเราต้องมีสติ และอย่าประมาท

น้องๆ ลองเอาเทคนิคที่พี่แนะนำไปปรับใช้ดูนะครับ รับรองว่าช่วยให้ระบบของเราปลอดภัยขึ้นเยอะเลย ถ้ามีคำถามอะไรเพิ่มเติมก็ถามมาได้เลยนะครับ

อย่าลืมแวะไปดูความรู้เรื่อง Forex ที่ iCafeForex นะครับ เผื่อใครสนใจลงทุน

แล้วก็เข้าไปอ่านบทความอื่นๆ ที่ SiamCafe Blog ได้เลย มีเรื่อง IT สนุกๆ อีกเยอะ