SELinux là gì?

linux

1. Khái niệm SELinux: 

Tăng cường bảo mật Linux (Security-Enhanced Linux) là một cơ chế kiểm soát truy cập (access control) bắt buộc . Cơ chế này nằm trong kernel Linux, kiểm tra các hoạt động truy cập theo chuẩn MAC (mandatory access control).

Để hiểu được lợi ích của việc kiểm soát truy cập bắt buộc (MAC) đối với điều khiển truy cập tùy ý (DAC), trước tiên bạn cần hiểu những hạn chế của DAC.

Theo DAC, quyền sở hữu của một file object cung cấp khả năng làm tê liệt hoặc kiểm soát rủi ro object. Người dùng có thể để lộ ra file hoặc folder với sự vi phạm bảo mật hoặc bảo mật bằng lệnh chmod bị định cấu hình sai và xảy ra quyền truy cập không mong muốn. Một quá trình được bắt đầu bởi người dùng đó, chẳng hạn như một CGI script, có thể thực hiện bất kỳ thứ gì mà nó muốn với các file do user sở hữu. Máy chủ Apache HTTP bị xâm nhập có thể thực hiện bất kỳ thao tác nào trên các file trong Web Group. Phần mềm độc hại hoặc phá hoại có thể có quyền truy cập cấp gốc (root) vào toàn bộ hệ thống, hoặc bằng cách chạy dưới dạng tiến trình gốc (root) hoặc sử dụng setuid hoặc setgid.

Theo DAC, thực sự chỉ có hai loại người dùng chính, administrators và non-administrators. Để các services và programs có thể chạy với bất kỳ cấp độ privilege nâng cao nào, các lựa chọn này rất ít và dĩ nhiên cần, và thường giải quyết để chỉ cấp quyền truy cập đầy đủ cho administrator. Các giải pháp như ACL (access control lists) có thể cung cấp một số bảo mật bổ sung cho phép các non-administrators mở rộng đặc quyền, nhưng đối với hầu hết các privileges, tài khoản gốc (root) có toàn quyền quyết định đối với file system.

Một MAC hoặc non-discretionary cho phép bạn định nghĩa các điều khoản cho tất cả các tiến trình (gọi là Subject) tương tác với các phần khác của hệ thống như files, devices, sockets, ports và các tiến trình khác (được gọi là các objects trong SELinux). Điều này được thực hiện thông qua một chính sách bảo mật administratively-defined trên tất cả các quy trình và đối tượng. Các quy trình và đối tượng này được điều khiển thông qua kernel và các bảo mật được thực hiện trên tất cả các thông tin có sẵn thay vì chỉ là nhận dạng người dùng. Với mô hình này, một process có thể chỉ được cấp các permissions mà nó cần để hoạt động. Điều này tuân theo nguyên tắc permissions tối thiểu. Ví dụ, trong MAC, người dùng đã phơi bày ra dữ liệu của họ bằng cách sử dụng chmod. dữ liệu là loại chỉ được liên kết với home directories của user và quy trình hạn chế không thể chạm vào các tệp đó khi chưa được phép và mục đích được ghi vào chính sách.

SELinux được thực hiện trong Linux kernel bằng cách sử dụng LSM (Linux Security Modules). Đây chỉ là sự triển khai mới nhất của một project đang vận hành. Để hỗ trợ kiểm soát truy cập chi tiết, SELinux triển khai hai công nghệ: Enforcement (TE) và role-based access control (RBAC).

Loại Enforcement liên quan đến việc xác định một type cho mọi subject, that is, process, và object trên hệ thống. Các loại này được định nghĩa bởi chính sách SELinux và được chứa trong nhãn bảo mật trên chính các file, được lưu trữ trong thuộc tính mở rộng (xattrs) của file. Khi một type được liên kết với một tiến trình, type được gọi là domain, như trong “httpd nằm trong miền của httpd_t.” Đây là một sự khác biệt về thuật ngữ còn sót lại từ các mô hình khác khi các domain và các type được xử lý riêng biệt.

Tất cả các tương tác giữa các subjects và objects không được phép theo mặc định trên hệ thống SELinux. Chính sách cụ thể cho phép một số hoạt động nhất định. Để biết những gì cho phép, TE sử dụng một ma trận domains và các object types bắt nguồn từ chính sách. Ma trận có nguồn gốc từ các quy tắc chính sách. Ví dụ, cho phép httpd_t net_conf_t: file {read getattr lock ioctl}; cung cấp cho domain liên kết với httpd các quyền để đọc dữ liệu từ các tệp cấu hình mạng cụ thể như /etc/resolv.conf. Ma trận xác định rõ ràng tất cả các tương tác của các quá trình và các mục tiêu hoạt động của chúng.

2. Tóm lược các chế độ SELinux:

SELinux có 3 chế độ hoạt động cơ bản, trong đó Enforcing là chế độ mặc định khi cài đặt. Tuy nhiên, có một bộ định tính bổ sung của các mục tiêu hoặc các ml kiểm soát cách các quy tắc SELinux phổ biến được áp dụng, với mục tiêu là mức độ ít nghiêm ngặt hơn.

  • Enforcing: Chế độ mặc định sẽ cho phép và thực thi chính sách bảo mật SELinux trên hệ thống, từ chối các hành động truy cập và ghi nhật ký
  • Permissive: Trong chế độ Permissive, SELinux được kích hoạt nhưng sẽ không thực thi chính sách bảo mật, chỉ cảnh báo và ghi lại các hành động. Chế độ Permissive hữu ích cho việc khắc phục sự cố SELinux
  • Disabled: SELinux bị vô hiệu hóa hoặc bị tắt đi.

 

Tham khảo và dịch từ: Red Hat