asfasf
aaos, aosp
0 Bình luận
393 Views
17 Feb, 2025
Trong thế giới công nghệ hiện đại, bảo mật là một trong những yếu tố quan trọng nhất để bảo vệ dữ liệu và hệ thống khỏi các cuộc tấn công mạng. Một trong những công cụ mạnh mẽ giúp tăng cường bảo mật trên hệ điều hành Linux chính là SELinux (Security-Enhanced Linux). Nhưng SELinux thực sự là gì, nó hoạt động ra sao, và tại sao nó lại quan trọng đến vậy? Hãy cùng tìm hiểu chi tiết qua bài viết dưới đây, kèm theo ví dụ minh họa để dễ hiểu hơn.
SELinux là một mô-đun bảo mật được tích hợp vào nhân Linux, được thiết kế để kiểm soát quyền truy cập vào các tài nguyên hệ thống dựa trên chính sách bảo mật bắt buộc (Mandatory Access Control - MAC). Nó được phát triển bởi Cơ quan An ninh Quốc gia Hoa Kỳ (NSA) với mục tiêu ban đầu là bảo vệ hệ thống khỏi các cuộc tấn công và lạm dụng tài nguyên.
Một trong những vấn đề lớn nhất mà các hệ thống máy tính phải đối mặt là lạm dụng tài nguyên. Điều này có thể xảy ra khi một tiến trình hoặc người dùng không được kiểm soát chặt chẽ truy cập vào các tệp, thư mục, hoặc tài nguyên hệ thống. Ví dụ:
Trước khi SELinux xuất hiện, hệ thống Linux chủ yếu sử dụng mô hình Kiểm soát Truy cập Tùy ý (Discretionary Access Control - DAC) để quản lý quyền truy cập. DAC hoạt động dựa trên quyền sở hữu tệp và các quyền cơ bản như đọc (read), ghi (write), thực thi (execute).
Để khắc phục hạn chế của DAC, SELinux sử dụng mô hình Kiểm soát Truy cập Bắt buộc (Mandatory Access Control - MAC). Với MAC, quyền truy cập không chỉ dựa trên quyền sở hữu tệp mà còn dựa trên chính sách bảo mật được thiết lập bởi quản trị viên hệ thống. Các chính sách này không thể bị thay đổi bởi người dùng thông thường.
Nhờ vào các cơ chế trên, SELinux cung cấp một lớp bảo mật bổ sung, giúp bảo vệ hệ thống khỏi các mối đe dọa tiềm ẩn do thiết lập quyền truy cập không chặt chẽ của DAC.
Security Context trong SELinux là một thành phần quan trọng giúp xác định và kiểm soát quyền truy cập của các tiến trình và tệp trong hệ thống. Mỗi đối tượng (tệp, tiến trình, socket, v.v.) trong hệ thống được gán một Security Context.
Đối tượng được chia thành Subject và Target:
Security Context bao gồm:
Security Context format: [user]: [role]: [type]:[level]
Giả sử bạn có một hệ thống Linux với SELinux được kích hoạt, và bạn đang chạy một tiến trình helloworld, tiến trình này sẽ ghi nội dung "hello SELinux" vào file selinux.txt.
Security Context của helloworld và selinux.txt: u:object_r:system_data_file:s0
User: u thường là system_u (người dùng hệ thống), biểu thị các đối tượng không thuộc về người dùng cụ thể nào.
Role: object_r thường được dùng cho các đối tượng như file, thư mục, socket, hoặc các thiết bị hệ thống.
Type: system_data_file xác định rằng đây là một file dữ liệu được sử dụng bởi hệ thống.
Level: s0 (security level), ở mức cơ bản nhất.
Tiến trình helloworld được coi là một Subject vì nó thực hiện hành động ghi nội dung "hello SELinux" xuống file (sử dụng tài nguyên là file - chủ động).
Tệp selinux.txt là một Target vì nó là đối tượng của hành động ghi (ghi bởi helloworld).
| Loại tra cứu | Cú pháp | Mô tả | Ví dụ |
|---|---|---|---|
| Tra cứu Process (Tiến trình) | ps -Z |
Hiển thị security context của tất cả tiến trình đang chạy. | ps -Z |
ps -Z [PID] |
Hiển thị security context của một tiến trình cụ thể với ID tiến trình (PID). | ps -Z 1234 |
|
id -Z |
Hiển thị security context của người dùng hiện tại (subject). | id -Z |
|
| Tra cứu User (Người dùng) | id -Z |
Hiển thị security context của người dùng hiện tại. | id -Z |
| Tra cứu File hoặc Thư mục | ls -Z [file_or_directory] |
Hiển thị security context của tệp hoặc thư mục. | ls -Z /etc/passwd |
Đây là thành phần chịu trách nhiệm phân tích và xử lý các yêu cầu truy cập dựa trên các chính sách bảo mật đã được định nghĩa.
SELinux Security Server tham chiếu đến Policy Database (cơ sở dữ liệu chính sách) để xác định xem yêu cầu truy cập có phù hợp với các quy tắc bảo mật hay không. Policy Database chứa các quy tắc chi tiết về quyền truy cập, xác định những gì các đối tượng có thể làm với các tài nguyên.
asfasf
0 Bình luận