SELinux là gì? Cùng Bizfly Cloud tìm hiểu tại sao bạn nên sử dụng SELinux trên máy chủ CentOS hoặc Red Hat Enterprise Linux chạy trên phần cứng IBM?
SELinux là một từ viết tắt của Security-enhanced Linux (tạm dịch: Linux tăng cường bảo mật). Nó là một tính năng bảo mật của Linux kernel, được thiết kế để bảo vệ máy chủ chống lại cấu hình sai và/hoặc các compromised daemons. Nó đặt các giới hạn và chỉ thị cho server và các chương trình: những file nào user có thể truy cập và những hành động nào user có thể thực hiện bằng cách đưa ra một chính sách bảo mật.
DAC: Cơ chế bảo mật Unix/Linux truyền thống
DAC là từ viết tắt của Discretionary Access Control (tạm dịch: Điều khiển truy cập tùy ý). Đây là cơ chế bảo mật OS tiêu chuẩn cho Linux, *BSD, Apple OSX và Unix. Theo DAC, mỗi tiến trình sẽ chạy dưới một user và một group. Ví dụ: httpd process hoạt động với một người dùng và một nhóm được liên kết gọi là apache. Httpd process có quyền truy cập vào tất cả các tệp và thư mục mà apache có thể truy cập. Nếu httpd process bị bẻ khóa, nó có thể tạo ra một số vấn đề về bảo mật. Hacked httpd process có thể truy cập, sửa đổi và phá hủy tất cả các files thuộc về người dùng apache. Nó có thể truy cập các thư mục tạm thời (/tmp/ hoặc /var/tmp) và các tệp có thể đọc được trên thế giới. Các /tmp hoặc /var/tmp hoặc bất kỳ thư mục hợp pháp khác như thư mục bộ nhớ đệm có thể được sử dụng để cài đặt backdoor và kiểm soát hoàn toàn hệ thống Linux của bạn. Một cgi hoặc php script với quyền truy cập không mong muốn có thể thực hiện bất cứ điều gì đối với các tập tin thuộc sở hữu của apache user. Nó có thể thực hiện bất kỳ thao tác nào trên các tệp trong apache group. Kẻ tấn công có thể sử dụng misocofigured cgi/php script hoặc broken apache server để chiếm quyền truy cập cấp độ root. Điều này sẽ cung cấp quyền truy cập superuser trên hệ thống Linux. Sau khi root, kẻ tấn công có thể ăn cắp dữ liệu cá nhân hoặc truy cập các phần khác của mạng LAN.
MAC: Cơ chế bảo mật thông qua SELinux
MAC là từ viết tắt của Mandatory Access Control (MAC). SELinux là một thực thi của cơ chế bảo mật MAC. Nó được xây dựng trong Linux kernel và được kích hoạt mặc định trên Fedora, CentOS, RHEL và một vài bản phân phối Linux khác. SELinux cho phép quản trị viên máy chủ xác định các quyền khác nhau cho tất cả quy trình. Nó xác định cách tất cả các tiến trình có thể tương tác với các phần khác của máy chủ như:
– Pipes
– Files
– Network ports
– Sockets
– Directories
– Quá trình khác
SELinux đặt các hạn chế đối với từng đối tượng trên theo chính sách. Ví dụ, một người dùng apache với sự cho phép đầy đủ chỉ có thể truy cập thư mục /var/www/html, nhưng không thể chạm vào các phần khác của hệ thống như thư mục /etc. Nếu có thể chiếm quyền truy cập vào sendmail mail hoặc bind dns hoặc apache web server, thì kẻ tấn công này cũng chỉ có quyền truy cập vào máy chủ bị khai thác đó và các tệp trong máy chủ này. Kẻ tấn công không thể truy cập vào các phần khác của hệ thống hoặc mạng nội bộ. Nói cách khác, thiệt hại sẽ được hạn chế đối trong phạm vi máy chủ và các files cụ thể. Các cracker cài cắm được shell lên trên máy chủ của bạn thông qua daemon phổ biến như Apache/BIND/Sendmail khi SELinux cung cấp các tính năng bảo mật sau đây:
– Bảo vệ dữ liệu của người dùng khỏi bị truy cập trái phép.
– Bảo vệ các daemons hoặc programs khác khỏi truy cập trái phép.
– Bảo vệ ports/ sockets/ files khỏi truy cập trái phép.
– Bảo vệ máy chủ chống lại việc khai thác.
– Tránh leo thang đặc quyền.
Hãy lưu ý rằng SELinux không phải là một viên đạn bạc, để bảo vệ máy chủ bạn vẫn cần phải tuân theo các phương thức bảo mật khác như:
– Thực hiện chính sách tường lửa.
– Giám sát máy chủ.
– Vá hệ thống kịp thời.
– Viết và bảo mật các script cgi/ php/ python/ perl.
Cách vô hiệu hóa SELinux trên CentOS
Như đã phân tích ở trên, việc bảo mật trên Linux là rất cần thiết, tuy nhiên có những trường hợp nó lại gây ra sự phiền phức khi bạn muốn cài một phần mềm mà phần mềm đó lại cần can thiệp sâu vào hệ thống Linux.
1. Vô hiệu hóa SELinux tạm thời
Việc vô hiệu hóa SELinux tạm thời sẽ có tác dụng cho đến khi bạn restart lại hệ thống. Để vô hiệu hóa tạm thời các bạn sử dụng command sau:
$ echo 0 > /selinux/enforce
Hoặc:
$ setenforce 0
Để quay trở lại trạng thái chưa bị vô hiệu hóa, các bạn sử dụng command sau:
$ echo 1 > /selinux/enforce
Hoặc:
$ setenforce 1
2. Vô hiệu hóa SELinux vĩnh viễn
Để vô hiệu hóa SELinux ta sửa file sau:
$ vi /etc/selinux/config
Thay đổi giá trị SELINUX=disabled
# 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
Sau đó restart lại để hệ thống nhận config mới.
3. Kiểm tra trạng thái của SELinux
Để xác nhận SELinux đã bị vô hiệu hóa ta thực hiện command sau:
sestatus
Nếu trạng thái SELinux là disabled thì bạn đã vô hiệu hóa thành công SELinux rồi.
Tham khảo:
https://www.cyberciti.biz/faq/what-is-selinux/
https://vinasupport.com/selinux-la-gi-cach-vo-hieu-hoa-selinux-tren-centos/
Theo Bizfly Cloud chia sẻ
>> Có thể bạn quan tâm: [Infographic] Vì sao Cloud Computing quan trọng trong lĩnh vực giáo dục?