Mục lục

Giới thiệu
SELinux (Security-Enhanced Linux) là một cơ chế bảo mật được tích hợp sẵn trong nhiều bản phân phối Linux như CentOS, AlmaLinux, Rocky Linux và Red Hat Enterprise Linux (RHEL). SELinux giúp tăng cường khả năng bảo vệ hệ thống bằng cách kiểm soát quyền truy cập của người dùng, tiến trình và ứng dụng theo các chính sách bảo mật nghiêm ngặt.
Mặc dù SELinux mang lại nhiều lợi ích về bảo mật, nhưng trong một số trường hợp, nó có thể ngăn chặn hoạt động của các ứng dụng hoặc dịch vụ nếu chưa được cấu hình phù hợp. Vì vậy, nhiều quản trị viên lựa chọn chuyển SELinux sang chế độ Permissive hoặc Disabled trong quá trình cài đặt và kiểm thử.
Bài viết dưới đây, Zhost sẽ giúp bạn hiểu rõ SELinux là gì, các chế độ hoạt động của SELinux và cách kiểm tra, vô hiệu hóa SELinux trên CentOS.
SELinux là gì?
SELinux (Security-Enhanced Linux) là một mô-đun bảo mật được tích hợp vào nhân Linux (Linux Kernel), cung cấp cơ chế Mandatory Access Control (MAC) nhằm kiểm soát quyền truy cập của người dùng, tiến trình và dịch vụ trên hệ thống.
Khác với cơ chế Discretionary Access Control (DAC) truyền thống chỉ dựa trên quyền của chủ sở hữu tệp, SELinux áp dụng các chính sách bảo mật để giới hạn những hành động mà một tiến trình được phép thực hiện, ngay cả khi tiến trình đó chạy với quyền
root.Nhờ đó, SELinux giúp:
- Ngăn chặn truy cập trái phép vào tài nguyên hệ thống.
- Giảm thiểu tác động khi dịch vụ bị khai thác lỗ hổng.
- Hạn chế việc leo thang đặc quyền (Privilege Escalation).
- Bảo vệ máy chủ trước nhiều hình thức tấn công.
Các chế độ hoạt động của SELinux
SELinux có ba chế độ hoạt động chính:
Enforcing
Đây là chế độ mặc định trên hầu hết các hệ điều hành Enterprise Linux.
Đặc điểm:
- SELinux được kích hoạt.
- Thực thi đầy đủ các chính sách bảo mật.
- Chặn các hành động không được phép.
- Ghi nhật ký các hành động bị từ chối.
Đây là chế độ được khuyến nghị trong môi trường vận hành thực tế (Production).
Permissive
Trong chế độ này:
- SELinux vẫn hoạt động.
- Không chặn các hành động vi phạm chính sách.
- Chỉ ghi cảnh báo vào nhật ký hệ thống.
Chế độ Permissive thường được sử dụng khi:
- Kiểm tra lỗi liên quan đến SELinux.
- Phân tích log.
- Thử nghiệm ứng dụng trước khi đưa vào môi trường Production.
Disabled
Ở chế độ này:
- SELinux bị vô hiệu hóa hoàn toàn.
- Không áp dụng bất kỳ chính sách bảo mật nào.
- Không ghi log liên quan đến SELinux.
Lưu ý: Chỉ nên sử dụng chế độ này khi thật sự cần thiết. Trong hầu hết các trường hợp, chuyển sang chế độ Permissive sẽ an toàn hơn vì vẫn cho phép ghi nhận các hành vi vi phạm để bạn có thể khắc phục.
Khi nào nên vô hiệu hóa SELinux?
Việc tắt SELinux không phải lúc nào cũng cần thiết. Bạn chỉ nên cân nhắc trong các trường hợp như:
- Ứng dụng chưa hỗ trợ SELinux.
- Phần mềm yêu cầu quyền truy cập đặc biệt và chưa có chính sách SELinux phù hợp.
- Kiểm thử hoặc phát triển ứng dụng.
- Khắc phục sự cố để xác định nguyên nhân có liên quan đến SELinux.
Trong môi trường Production, thay vì tắt hoàn toàn SELinux, bạn nên cấu hình hoặc bổ sung chính sách (Policy) phù hợp để vừa đảm bảo ứng dụng hoạt động, vừa duy trì mức độ bảo mật của hệ thống.
Kiểm tra trạng thái SELinux
Để kiểm tra SELinux đang hoạt động ở chế độ nào, chạy lệnh:
Zhost Tutorial
sestatus
Ý nghĩa:
- enabled: SELinux đang được bật.
- enforcing: Chính sách bảo mật đang được thực thi.

Vô hiệu hóa SELinux tạm thời
Nếu chỉ muốn tắt SELinux cho đến lần khởi động tiếp theo, sử dụng:
Zhost Tutorial
sudo setenforce 0
Kiểm tra lại:
Zhost Tutorial
getenforce
Kết quả:
Permissive

Lưu ý: Lệnh
setenforce 0 chỉ chuyển SELinux sang chế độ Permissive, không phải Disabled. Sau khi khởi động lại hệ thống, SELinux sẽ quay về chế độ được cấu hình trong tệp /etc/selinux/config.Nếu muốn bật lại chế độ Enforcing mà không cần khởi động lại:
Zhost Tutorial
sudo setenforce 1
Vô hiệu hóa SELinux vĩnh viễn
Mở tệp cấu hình:
Zhost Tutorial
sudo nano /etc/selinux/config
Tìm dòng:
Zhost Tutorial
SELINUX=enforcing
Thay đổi thành:
Zhost Tutorial
SELINUX=disabled
Lưu tệp và khởi động lại máy chủ:
Zhost Tutorial
sudo reboot
Vô hiệu hóa SELinux bằng lệnh
Bạn cũng có thể chỉnh sửa nhanh tệp cấu hình bằng lệnh:
Zhost Tutorial
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
Sau đó khởi động lại hệ thống:
Zhost Tutorial
sudo reboot
Kiểm tra sau khi khởi động
Sau khi máy chủ khởi động lại, kiểm tra trạng thái:
Zhost Tutorial
sestatus
Một số lưu ý khi vô hiệu hóa SELinux
- Chỉ vô hiệu hóa SELinux khi thật sự cần thiết.
- Ưu tiên sử dụng chế độ Permissive để ghi nhận các hành vi bị chặn mà không làm mất lớp bảo mật.
- Nếu ứng dụng gặp lỗi do SELinux, hãy kiểm tra nhật ký tại
/var/log/audit/audit.loghoặc sử dụng các công cụ nhưaudit2allowđể tạo chính sách phù hợp. - Sau khi khắc phục sự cố, nên chuyển SELinux trở lại chế độ Enforcing nhằm đảm bảo an toàn cho hệ thống.
Kết luận
SELinux là một thành phần bảo mật quan trọng trên các hệ điều hành Linux Enterprise, giúp kiểm soát quyền truy cập và giảm thiểu rủi ro khi hệ thống bị tấn công. Mặc dù việc vô hiệu hóa SELinux có thể giúp giải quyết nhanh một số vấn đề về tương thích phần mềm, nhưng đây không phải là giải pháp được khuyến nghị trong môi trường Production.
Nếu cần khắc phục sự cố, bạn nên ưu tiên chuyển SELinux sang chế độ Permissive để theo dõi nhật ký và điều chỉnh chính sách phù hợp. Chỉ nên sử dụng chế độ Disabled khi đã cân nhắc kỹ các rủi ro về bảo mật.
