SELinux là một cơ chế bảo mật mạnh mẽ, cung cấp một lớp bảo vệ bổ sung cho hệ thống Linux. Bằng cách áp đặt các chính sách bảo mật chặt chẽ, SELinux giúp ngăn chặn các cuộc tấn công và bảo vệ dữ liệu khỏi bị xâm nhập. Bài viết này, mình sẽ giúp bạn hiểu rõ hơn về SELinux, ưu nhược điểm và cơ chế hoạt động của công cụ này.
Những điểm chính
- Khái niệm SELinux: Giới thiệu về SELinux, một cơ chế bảo mật nâng cao trên Linux giúp kiểm soát quyền truy cập hệ thống.
- Các chế độ phổ biến của SELinux: Trình bày các chế độ của SELinux: Enforcing, Permissive và Disabled, cùng vai trò của chúng.
- Lý do nên sử dụng SELinux: Giải thích tầm quan trọng của SELinux trong việc bảo vệ hệ thống trước các mối đe dọa.
- Sự khác nhau giữa cơ chế truyền thống và SELinux: So sánh giữa DAC (Discretionary Access Control) và MAC (Mandatory Access Control) trong quản lý quyền.
- Cách kiểm tra trạng thái SELinux trên CentOS 7: Hướng dẫn cách kiểm tra trạng thái của SELinux bằng các lệnh sestatus và getenforce.
- Trường hợp nào nên vô hiệu hóa SELinux: Đưa ra các trường hợp cụ thể khi nên cân nhắc tắt SELinux để tránh ảnh hưởng đến hiệu suất hoặc hoạt động.
- Hướng dẫn cách vô hiệu hóa SELinux: Cách vô hiệu hóa SELinux tạm thời và vô hiệu hóa vĩnh viễn để kiểm soát linh hoạt hơn.
- Biết đến Vietnix – Nhà cung cấp dịch vụ VPS toàn diện cho doanh nghiệp và cá nhân
SELinux là gì?
SELinux (Security-Enhanced Linux) là một module bảo mật mã nguồn mở được tích hợp trực tiếp vào hạt nhân (kernel) Linux trên các bản phân phối RedHat Enterprise Linux (RHEL) và CentOS. SELinux được thiết kế để nâng cao bảo mật hệ thống và đảm bảo tính toàn vẹn dữ liệu thông qua cơ chế kiểm soát truy cập dựa trên bộ quy tắc chặt chẽ.

Cụ thể SELinux triển khai nhiều chính sách bảo mật khác nhau để quản lý hành vi của các tiến trình và người dùng. Những chính sách này quy định quyền truy cập của tiến trình đến các tài nguyên hệ thống (như file, ổ đĩa, port mạng,…). Đồng thời, SELinux liên tục giám sát hoạt động của các tiến trình để phát hiện và ngăn chặn kịp thời các hành vi bất thường hoặc tấn công từ bên ngoài. Về phía người dùng, SELinux cho phép quản trị viên điều chỉnh quyền thực thi, quản lý chính sách tài nguyên và phân quyền truy cập cho người dùng, ứng dụng, dịch vụ trên hệ thống.
Các chế độ phổ biến của SELinux
SELinux có 3 trạng thái hoạt động chính là Enforcing, Permissive và Disabled, cụ thể:
- Enforcing: Đây là chế độ mặc định, lúc này SELinux sẽ được kích hoạt và thực thi toàn bộ các quy tắc bảo mật trên hệ thống, từ chối các truy cập trái phép và đồng thời ghi lại nhật ký. Chế độ này đảm bảo tính bảo mật cao, yêu cầu người dùng và ứng dụng phải tuân thủ nghiêm ngặt các quy định.
- Permissive: Khi ở chế độ này, SELinux vẫn giám sát hoạt động hệ thống nhưng không ngăn chặn các truy cập trái phép mà chỉ gửi cảnh báo cho người dùng.
- Disabled: Chế độ này vô hiệu hóa hoàn toàn SELinux. Việc tắt SELinux không được khuyến khích trừ khi bạn có hiểu biết sâu rộng về bảo mật hệ thống Linux.

Ưu nhược điểm của SELinux
Giống như bất kỳ công nghệ nào, SELinux có cả ưu – nhược điểm và sẽ được mình tóm tắt nhanh trong bảng dưới đây:
Bảo mật cao: SELinux có khả năng bảo mật mạnh mẽ, kiểm soát chặt chẽ quyền truy cập, hạn chế tối đa việc xâm nhập trái phép vào dữ liệu và ứng dụng.
Ngăn chặn leo thang đặc quyền: Khi bị tấn công, SELinux có thể ngăn chặn kẻ xâm nhập leo thang quyền hạn nhằm kiểm soát toàn hệ thống.
Khó khăn khi cài đặt phần mềm: Việc triển khai SELinux có thể khiến người dùng gặp khó khăn khi cài đặt các phần mềm cần quyền truy cập sâu vào hệ thống. Lúc này, người dùng có thể phải vô hiệu hóa SELinux.
Lý do nên sử dụng SELinux
Bạn nên cân nhắc sử dụng SELinux vì những lợi ích bảo mật mà công cụ này mang lại như:
- Nâng cao khả năng bảo mật: SELinux bổ sung một lớp bảo mật, giúp hạn chế các lỗ hổng hệ thống và ngăn chặn cuộc tấn công từ bên ngoài. Mỗi tiến trình chỉ được phép tương tác với các tài nguyên được quy định trong chính sách bảo mật, đảm bảo an toàn dữ liệu.
- Theo dõi và giám sát: SELinux ghi lại chi tiết mọi hoạt động của các tiến trình trên hệ thống, giúp quản trị viên dễ dàng phát hiện những dấu hiệu bất thường hoặc hoạt động đáng ngờ.
- Kiểm soát quyền truy cập hiệu quả: SELinux quản lý quyền truy cập một cách chặt chẽ, hạn chế rủi ro từ các truy cập bất hợp pháp.
- Tương thích tốt với ứng dụng và dịch vụ: SELinux có khả năng tích hợp linh hoạt với nhiều ứng dụng và dịch vụ, đảm bảo an toàn và hoạt động ổn định cho toàn hệ thống.

Sự khác nhau giữa cơ chế truyền thống và SELinux
SELinux hoạt động dựa trên cơ chế Mandatory Access Control (MAC), hoàn toàn khác với cơ chế bảo mật DAC (Discretionary Access Control) truyền thống của Unix/Linux.
DAC (Discretionary Access Control)
DAC là cơ chế bảo mật truyền thống được sử dụng trong các hệ điều hành như Linux, *BSD, macOS và Unix, Trong mô hình này, quyền truy cập được quản lý dựa trên user và group. Trong đó, mỗi tiến trình sẽ thừa hưởng quyền truy cập từ user và group mà nó chạy dưới.

Ví dụ: Tiến trình httpd thường chạy dưới một user và một group là apache thì sẽ có quyền truy cập vào thư mục, file giống như tài khoản này.
Điểm yếu của DAC là nếu tiến trình này bị tấn công, kẻ xâm nhập sẽ có toàn quyền truy cập tương ứng, có thể đọc, sửa đổi, hoặc xóa dữ liệu thuộc sở hữu của tài khoản apache, bao gồm cả dữ liệu trong các thư mục tạm thời (/tmp/, /var/tmp) và các file được chia sẻ. Điều này có thể dẫn đến việc cài đặt mã độc backdoor và chiếm quyền kiểm soát hệ thống.
Các script web (cgi, php) cũng có thể bị lợi dụng để thực thi mã độc nếu chúng có quyền truy cập quá rộng. Việc khai thác lỗ hổng trong các script này hoặc trong chính web server có thể cho phép kẻ tấn công leo thang đặc quyền lên root, từ đó nắm quyền kiểm soát hoàn toàn hệ thống, đánh cắp dữ liệu hoặc truy cập vào mạng LAN.

MAC (Mandatory Access Control)
MAC (Điều khiển truy cập bắt buộc) là một cơ chế bảo mật được tích hợp trong kernel Linux và triển khai thông qua SELinux để khắc phục những hạn chế của DAC. SELinux sẽ được kích hoạt sẵn trên nhiều bản phân phối như Fedora, CentOS, RHEL,… cho phép quản trị viên thiết lập chính sách truy cập chi tiết cho từng tiến trình cũng như kiểm soát chặt chẽ cách chúng tương tác với các thành phần hệ thống như: pipes, filesn network ports, sockets, directories, tiến trình khác.
Chính sách SELinux giới hạn quyền truy cập của từng đối tượng. Ví dụ, người dùng apache có thể truy cập vào thư mục /var/www/html nhưng bị cấm truy cập vào các thư mục hệ thống khác như /etc. Do đó, ngay cả khi kẻ tấn công chiếm được quyền truy cập vào các dịch vụ như sendmail, bind, hoặc apache thì chúng cũng sẽ bị giới hạn trong phạm vi máy chủ và các file liên quan, giảm thiểu thiệt hại lan rộng.
Những lợi ích bảo mật mà SElinux mang lại bao gồm:
- Ngăn chặn truy cập trái phép vào dữ liệu người dùng.
- Bảo vệ các daemons hoặc programs hệ thống khỏi bị xâm nhập.
- Kiểm soát truy cập vào ports, sockets và files.
- Tăng cường khả năng chống lại các cuộc tấn công khai thác lỗ hổng.
- Phòng ngừa nguy cơ leo thang đặc quyền.
Tuy nhiên, cần lưu ý rằng SELinux không phải là giải pháp bảo mật toàn diện. Để đảm bảo an ninh hệ thống, bạn cần kết hợp SELinux với các biện pháp khác như tường lửa, giám sát hệ thống, cập nhật vá lỗi thường xuyên và bảo mật cho các script cgi/php/python/perl.
Cách kiểm tra trạng thái SELinux trên Centos 7
Để kiểm tra trạng thái của SELinux trên CentOS 7, bạn có thể sử dụng 1 trong 2 lệnh sau:
Sử dụng lệnh sestatus
Lệnh này sẽ hiển thị thông tin chi tiết hơn về trạng thái SELinux, bao gồm trạng thái hiện tại, đường dẫn mount, thư mục gốc,… Bạn mở terminal và nhập:
sestatus
Nếu kết quả hiển thị SELinux status: enabled và SELinux mode: enforcing thì SELinux đang hoạt động. Ngược lại, nếu SELinux bị tắt, thì thông báo SELinux status: disabled sẽ xuất hiện.

Sử dụng lệnh getenforce
Lệnh này sẽ hiển thị nhanh trạng thái của SELinux, ngoài ra không còn thêm thông tin nào khác:
getenforce
Nếu SELinux đang được kích hoạt, bạn sẽ thấy dòng chữ Enforcing. Ngược lại, nếu SELinux không hoạt động, bạn sẽ thấy Permissive hoặc Disabled.

Trường hợp nào nên vô hiệu hóa SELinux
Mặc dù SELinux giúp tăng cường khả năng bảo mật cho Linux nhưng đôi khi việc tạm thời vô hiệu hóa công cụ này là điều cần thiết. Dưới đây là một vài trường hợp cụ thể:
- Cài đặt phần mềm từ bên ngoài: Bạn có thể cần tạm thời vô hiệu hóa SELinux nếu muốn cài đặt và sử dụng một số phần mềm không tương thích với công cụ này.
- Thử nghiệm phần mềm: Khi phát triển hoặc kiểm thử ứng dụng, đôi khi bạn cần vô hiệu hóa SELinux để có thể truy cập vào các tài nguyên hệ thống hay thực hiện tác vụ mà không bị hạn chế.
- Xử lý file: SELinux đôi khi ngăn chặn việc giải nén hoặc truy xuất một số file nhất định nên bạn cần tạm thời vô hiệu hóa công cụ này.
Tuy nhiên, cần nhớ rằng tắt SELinux đồng nghĩa với việc làm giảm khả năng phòng thủ của hệ thống. Bạn chỉ nên vô hiệu hóa khi thực sự cần thiết và nhớ kích hoạt lại ngay sau khi hoàn thành công việc.

Hướng dẫn cách vô hiệu hóa SELinux
Bạn có thể lựa chọn vô hiệu hóa SELinux tạm thời hoặc vĩnh viễn theo các bước dưới đây:
Cách vô hiệu hóa SELinux tạm thời
Để tạm thời vô hiệu hóa SELinux cho đến khi khởi động lại hệ thống, bạn chạy 1 trong 2 lệnh sau trong terminal:
$ echo 0 > /selinux/enforce
hoặc
$ setenforce 0

Để kích hoạt lại SELinux sau khi vô hiệu hóa tạm thời, bạn sử dụng 1 trong 2 lệnh sau:
$ echo 1 > /selinux/enforce
hoặc
$ setenforce 1
Cách vô hiệu hóa SELinux vĩnh viễn
Để vô hiệu hóa SELinux hoàn toàn, đầu tiên bạn cần mở file config SELinux bằng một trình soạn thảo (ví dụ như vi):
# vi /etc/selinux/config
Sau đó bạn tìm dòng SELINUX=enforcing và sửa thành SELINUX=disabled và lưu file lại. Nội dung file sẽ tương tự như hình dưới. Cuối cùng, bạn khởi động lại hệ thống để áp dụng thay đổi.

Vietnix – Nhà cung cấp dịch vụ VPS toàn diện cho doanh nghiệp và cá nhân
Vietnix tự hào cung cấp dịch vụ VPS với hiệu suất ổn định và độ tin cậy cao, đáp ứng mọi nhu cầu từ cá nhân đến doanh nghiệp. Hệ thống được vận hành theo tiêu chuẩn quốc tế, đạt chứng nhận ISO 27001:2022 về bảo mật thông tin và ISO 9001:2015 về quản lý chất lượng. Với cam kết uptime 99,9%, Vietnix mang đến trải nghiệm liền mạch, giúp khách hàng yên tâm vận hành hệ thống. Quá trình kích hoạt và nâng cấp hoàn toàn tự động, cho phép bạn nhanh chóng triển khai hoặc mở rộng dịch vụ chỉ với vài thao tác đơn giản.
Để đáp ứng nhu cầu về tốc độ xử lý và hiệu năng cao, Vietnix cung cấp dịch vụ VPS NVMe sử dụng 100% ổ cứng NVMe với tốc độ truy xuất dữ liệu nhanh gấp 10 lần so với SSD thông thường. Được trang bị CPU Intel Platinum thế hệ mới và băng thông 400 Mbps, dịch vụ này giúp tăng cường khả năng xử lý đa nhiệm và cải thiện trải nghiệm người dùng vượt trội. Dữ liệu của bạn luôn được bảo vệ với chế độ backup định kỳ hàng tuần và khả năng khôi phục dễ dàng từ giao diện quản lý.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
SELinux là một công cụ mạnh mẽ, nhưng cũng đòi hỏi người dùng có kiến thức và kỹ năng nhất định để sử dụng hiệu quả. Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về SELinux và vai trò quan trọng của công cụ trong việc bảo mật hệ thống Linux. Để tìm hiểu thêm về các thủ thuật quản lý Linux hiệu quả, bạn có thể tham khảo một số bài viết dưới đây: