Trong quá trình sử dụng Linux, khi bạn cài đặt một phần mềm nào đó, chúng sẽ yêu cầu bạn vô hiệu hóa SELinux. Vậy, SELinux là gì? Tắt SELinux có an toàn hay không? Cách tắt SELinux như thế nào? Cách sử dụng SELinux ra sao? Tất cả câu hỏi sẽ được Tino Group giải đáp trong bài viết này.
Tìm hiểu về SELinux
SELinux là gì?
SELinux là viết tắt của Security Enhanced Linux, một module bảo mật Linux kernel của hệ điều hành Linux nhằm gia tăng khả năng bảo mật cho hệ thống được tích hợp sẵn trong hệ thống (chỉ có RedHat Enterprise Linux (RHEL) và CentOS là tích hợp sẵn, bật sẵn giúp người dùng). Module này dùng để thực thi các chính sách tài nguyên xác định mức độ truy cập của user, chương trình và dịch vụ trên hệ thống của hệ điều hành.
Trong chế độ mặc định, SELinux sẽ ngăn chặn và ghi nhật ký tất cả những hành vi truy cập trái phép vào bất kỳ tài nguyên nào của hệ thống. Với phương pháp bảo mật này, người quản trị hệ thống phải cung cấp rõ ràng các quyền truy cập vào: tệp, thư mục, socket và các dịch vụ khác cho user và các chương trình.
SELinux có những chế độ nào?
SELinux chạy ở 3 chế độ khác nhau bao gồm:
“Enforcing“, “Permissive” và “Disabled“.
Enforcing – Thi hành
Trong chế độ Enforcing này, hệ thống sẽ thi hành các chính sách bảo mật một cách khắc khe, cưỡng chế các ứng dụng, người dùng phải tuân theo.
Permissive – Cho phép
Ở chế độ Permissive, SELinux sẽ mô phỏng chính sách Enforcing bằng cách tạo ra các cảnh báo. Tuy nhiên, chế độ Permissive sẽ không thực thi bất kỳ chính sách bảo mật nào, chỉ đưa ra các cảnh báo cho người dùng.
Disabled – Tắt
Trong chế độ Disabled, đúng như cái tên của mình, SELinux sẽ tắt chính sách bảo mật và không ép buộc các phần mềm, người dùng thực hiện theo – đây là chế độ không được khuyến khích nếu bạn không biết cách bảo mật hệ thống Linux của mình.
Nhưng các chính sách DAC – Discretionary Access Control dùng để kiểm soát các user vẫn hoạt động như thông thường.
Cách vô hiệu hóa SELinux
Cách kiểm tra trạng thái của SELinux
Để kiểm tra trạng thái của SELinux, thông thường, ta sẽ sử dụng lệnh “sestatus” trong command line để kiểm tra đầy đủ thông tin.
Ví dụ khi chạy lệnh “sestatus”, hệ thống sẽ trả lại cho bạn thông tin như sau:
# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: default
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 30
Sau khi kiểm tra, bạn có thể quyết định bật hoặc tắt SELinux nếu chế độ của SELinux là Enforcing.
Một số điểm lưu ý trước khi tắt SELinux:
- SELinux là hệ thống “phòng thủ” tránh những sự xâm phạm của user hoặc chương trình vào hệ thống. Do đó, khi tắt SELinux bạn sẽ gặp những nguy cơ về an toàn hệ thống của bạn.
- Tino Group chỉ hướng dẫn cách tắt, việc thực hiện hay không do bạn quyết định. Nếu hệ thống của bạn gặp phải các tấn công ngoài ý muốn, trách nhiệm sẽ do bạn tự giải quyết. Chúng tôi sẽ không hỗ trợ sửa chữa hay chịu trách nhiệm về những lỗi này.
Cách vô hiệu hóa SELinux tạm thời
Để tạm thời vô hiệu hóa SELinux, bạn sử dụng 1 trong 2 lệnh sau:
$ echo 0 > /selinux/enforce
$ setenforce 0
Đối với cách này, toàn bộ chính sách bảo mật của SELinux sẽ tạm thời vô hiệu hoá cho đến khi bạn khởi động lại hệ thống. Trong trường hợp bạn đã cài đặt xong phần mềm, bạn thực hiện lệnh sau để mở lại SELinux:
$ echo 1 > /selinux/enforce
$ setenforce 1
Cách vô hiệu hóa SELinux vô thời hạn
Tino Group không khuyến khích thực hiện nếu bạn không có nhiều kiến thức khi sử dụng Linux và kiến thức về bảo mật nhằm tránh tình trạng bị tấn công bất ngờ.
Để vô hiệu hoá SELinux vô thời hạn, chúng ta sẽ sửa file config trong SELinux.
Bước 1: truy cập vào file config bằng lệnh:
$ vi /etc/selinux/config
Bước 2: thay đổi dòng SELINUX=enforcing thành SELINUX=disabled và lưu lại.
# 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=disabled
Bước 3: sau khi lưu lại, bạn khởi động lại toàn bộ hệ thống để áp dụng cài đặt mới.
Tương tự, khi bạn đã vô hiệu hóa SELinux tạm thời, bạn có thể mở lại SELinux bằng cách đổi SELINUX=disabled thành SELINUX=enforcing trong file config.
Kiểm tra hệ thống đã vô hiệu hoá SELinux hay chưa
Bạn có thể sử dụng lệnh “getenforce” để hiển thị nhanh trạng thái của SELinux. Tuy nhiên, lệnh “getenforce” chỉ hiển thị duy nhất thông tin trạng thái của SELinux là “Enforcing”, “Permissive” hoặc “Disabled”.
Hệ thống hiển thị Disabled đồng nghĩa với việc bạn đã vô hiệu hóa SELinux thành công.
Cách kiểm tra và cài đặt SELinux
Kiểm tra các gói SELinux đã cài đặt
Hiện tại, có 2 hệ điều hành Linux thường được cài đặt sẵn SELinux là RedHat Enterprise Linux (RHEL) và CentOS. Để kiểm tra hệ thống cài đặt sẵn cho bạn gói SELinux nào, bạn chạy lệnh như sau:
rpm -qa | grep -i selinux
Sau khi chạy, hệ thống sẽ trả lại thông tin gói SELinux đã cài đặt trong hệ thống:
# rpm -qa | grep -i selinux
selinux-policy-targeted-3.14.3-67.el8.noarch
libselinux-utils-2.9-5.el8.x86_64
rpm-plugin-selinux-4.14.3-13.el8.x86_64
flatpak-selinux-1.8.5-3.el8.noarch
container-selinux-2.158.0-1.module_el8.4.0+781+acf4c33b.noarch
python3-libselinux-2.9-5.el8.x86_64
selinux-policy-3.14.3-67.el8.noarch
libselinux-2.9-5.el8.x86_64
Cách cài đặt SELinux
Nếu bạn sử dụng những hệ điều hành là các phiên bản phân phối khác của Linux như: Ubuntu hay Debian, những hệ điều hành này sẽ không được cài đặt sẵn SELinux.
Cách 1: sử dụng atp
Cả 2 phiên bản phân phối Linux là Ubuntu và Debian, bạn chạy code như sau để cài đặt SELinux:
$ apt-get install selinux-basics selinux-policy-default auditd
Cách 2: tải và cài đặt thông thường trên Ubuntu
Nếu bạn sử dụng Ubuntu, bạn thực hiện như sau:
Bước 1: tải gói load_selinux_policy về thiết bị
Bước 2: copy và dán vào: /usr/share/initramfs-tools/scripts/init-bottom/
Bước 3: bạn chạy lệnh sau trong terminal để khởi động gói:
update-initramfs -u
Cuối cùng, bạn chạy lại lệnh “getenforce” để kiểm tra xem hệ thống đã cài đặt SELinux hay chưa.
Nếu SELinux đã được cài đặt, bạn có thể khởi động lại SELinux bằng cách dùng lệnh như sau:
# selinux-activate
# reboot
Sau khi reboot, trạng thái của SELinux sẽ là “Permissive”.
Vậy là chúng ta đã tìm hiểu SELinux là gì, cũng như cách vô hiệu hóa SELinux để bạn cài đặt một số phần mềm cho Linux hoặc các phiên bản phân phối của Linux. Tino Group hi vọng rằng, những kiến thức này sẽ giúp bạn khai thác SELinux tốt hơn để bảo vệ hệ thống của mình.
FAQs về hướng dẫn cách tắt SELinux
Có nên tắt SELinux hay không?
Câu trả lời sẽ tùy thuộc vào bạn. Nếu bạn cần cài đặt một số phần mềm và chúng yêu cầu bạn phải tắt SELinux để có thể cài đặt, bạn nên xem xét việc tắt hay không. Vì nhiệm vụ chính của SELinux là bảo vệ hệ thống của bạn.
Cách kiểm tra nhanh trạng thái hoạt động của SELinux ra sao?
Để kiểm tra trạng thái hoạt động hiện tại của SELinux trong vòng “1 nốt nhạc”, bạn có thể sử dụng lệnH “getenforce”. Ví dụ như sau:
- # getenforce
- Enforcing
Enforcing hiển thị, đồng nghĩa với việc SELinux đang thực thi.
Booleans trong SELinux là gì?
Booleans là chức năng bật/ tắt cài đặt của SELinux. Về cơ bản, bạn sẽ hiểu là bật và tắt. Nhưng trong thực tế, có đến hàng trăm cài đặt riêng biệt để bạn quản lý SELinux một cách hiệu quả nhất theo mục đích sử dụng của bạn.
Tài liệu để quản lý và sử dụng SELinux trên CentOS 7 ở đâu?
Nếu bạn muốn tìm kiếm tài liệu để quản lý và sử dụng SELinux trên CentOS 7 một cách đầy đủ và hiệu quả, DigitalOcean có sẵn 1 bộ tài liệu: Introduction to SELinux on CentOS 7 với 3 phần chính bao gồm:
- Giới thiệu cơ bản
- Tệp và Quy trình
- User
Sau khi học và thực hiện hết trong tài liệu này, bạn sẽ có một hệ thống CentOS 7 với các cài đặt SELinux hoàn chỉnh và kích hoạt, cũng như setting 4 người dùng với 4 cấp độ khác nhau.