SELinux là gì? Tại sao bạn nên sử dụng SELinux

1112
11-10-2018
SELinux là gì? Tại sao bạn nên sử dụng SELinux

Khi thực hiện cài đặt một số phần mềm trên Linux, bạn sẽ được yêu cầu thực hiện thao tác vô hiệu hóa SELinux. Vậy SELinux là gì? Vì sao phải vô hiệu hóa SELinux? Trong bài viết hôm nay, Bizfly Cloud sẽ giúp bạn nắm được chi tiết về khái niệm này cũng như cách vô hiệu hóa SELinux trên hệ thống CentOS.

SELinux là gì?

SELinux là từ 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, được tích hợp sẵn trong hệ thống nhằm gia tăng bảo mật (chỉ có RedHat Enterprise Linux (RHEL) và CentOS là tích hợp sẵn, được bật mặc định cho người dùng). Module này được sử dụng để thực thi các chính sách tài nguyên, giúp xác định mức độ truy cập của người dùng, chương trình và dịch vụ trên hệ điều hành.

Ở chế độ mặc định, SELinux có nhiệm vụ ngăn chặn và ghi lại các hành vi truy cập trái phép vào bất kỳ tài nguyên nào trên hệ thống. Theo đó, quản trị viên phải cung cấp chi tiết các quyền truy cập vào tệp tin, thư mục, socket,... cho người dùng và các chương trình.

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.

SELinux là gì? Tại sao bạn nên sử dụng SELinux - Ảnh 1.

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?

SHARE