SELinux (Security Enhanced Linux) là các phiên bản Linux có gia cố thêm hệ thống bảo mật của hệ điều hành. Nó là một phần của hệ thống bảo mật trên Linux đƣợc xây dựng trong nhân Linux. Nghĩa là nó vẫn là một phiên bản linux bình thƣờng nhƣ Redhat, Fedora Core… nhƣng có cài đặt thêm hệ thống Security Enhanced. SELinux xây dựng cơ chế ràng buộc chặt chẽ hơn, thông qua hệ thống chính sách bảo mật đƣợc định nghĩa dựa trên các khái niệm của các mô hình điều khiển truy cập. Một số cơ chế điều kiển truy cập trong SELinux nhƣ:
Phƣơng thức kiểm soát việc truy cập tài nguyên theo kiểu tùy quyền – DAC (Dicretionary Access Control): Điều khiển truy cập tùy quyền – DAC là một chính sách truy cập mà chủ nhân của tập tin hay ngƣời chủ của một tài nguyên nào đấy tự định đoạt. Chủ nhân của nó quyết định ai là ngƣời đƣợc phép truy cập tập tinvà những đặc quyền nào là những đặc quyền mà ngƣời đó đƣợc phép thi hành. Hai khái niệm quan trọng trong truy cập tùy quyền là :
- Quyền sở hữu tập tin và dữ liệu: Bất cứ một đối tƣợng nào trong một hệ thống cũng phải có một chủ nhân là ngƣời sở hữu nó. Chính sách truy cập các đối tƣợng là do chủ nhân tài nguyên quyết định – những tài nguyên bao gồm: các tập tin, các thƣ mục, dữ liệu, các tài nguyên của hệ thống … Theo lý thuyết, đối tƣợng nào không có chủ sở hữu thì đối tƣợng đó bị bỏ, không đƣợc bảo vệ. Thông thƣờng thì chủ nhân của tài nguyên chính là ngƣời đã kiến tạo nên tài nguyên.
- Các quyền và phép truy cập: Đây là những quyền khống chế những thực thể tài nguyên mà chủ nhân của tài nguyên chỉ định cho mỗi một ngƣời hoặc mỗi một nhóm ngƣời dùng.
Phƣơng thức kiểm soát việc truy cập tài nguyên theo kiểu phân định quyền do hệ thống áp đặt – MAC (Mandatory Access Control): SELinux tăng cƣờng thêm cho cơ chế DAC với phƣơng thức kiểm soát việc truy cập tài nguyên do hệ thống áp đặt (MAC). Theo phƣơng thức này mỗi tiến trình hay chƣơng trình đang chạy bị ép vào một khu vực giới hạn và sẽ không thể nào đi ra ngoài giới hạn đó đƣợc.
Nhƣ vậy khi một tiến trình hay chƣơng trình bị khai thác lỗi và bị đoạt quyền kiểm soát thì nó chỉ bị ảnh hƣởng trong giới hạn biệt lập đó thôi chứ toàn bộ hệ thống sẽ không bị ảnh hƣởng. Các đặc điểm cơ bản của MAC khi tăng cƣờng cho DAC nhƣ sau:
- MAC phân định quyền truy cập tài nguyên ngay cả đến mức tiến trình hay chƣơng trình. So với DAC chỉ áp đặt quyền truy cập tài nguyên dựa vào quyền hạn hay chức năng của ngƣời dùng.
- Nếu MAC đã áp đặt vào một tài nguyên nào đó thì ngay cả chủ sở hữu của tài nguyên đó cũng không thể gạt bỏ nó đi đƣợc.
Nhƣ vậy, nhờ cơ chế này nếu một tiến trình hay một chƣơng trình nào đó chạy dƣới quyền root mà bị khai thác lỗi và bị đoạt quyền kiểm soát thì ngƣời tấn công chỉ kiểm soát đƣợc những gì mà MAC áp đặt cho khu vực giới hạn của chƣơng trình hay tiến trình đó đang chạy mà không thể đụng chạm sang các khu vực khác đƣợc, qua đó giảm thiểu đƣợc tác hại lên toàn hệ thống. Hai khái niệm quan trọng trong cơ chế MAC là:
- Nhãn hiệu nhạy cảm (sensitivity label): Trong hệ thống dùng điều khiển truy cập bắt buộc, hệ thống chỉ định một nhãn hiệu cho mỗi chủ thể và mỗi đối tƣợng trong hệ thống. Nhãn hiệu nhạy cảm của một chủ thể xác định mức tin cẩn cần thiết để truy cập.
- Xuất và nhập dữ liệu (Data import and export): Điều khiển việc nhập dữ liệu từ một hệ thống khác và xuất dữ liệu sang các hệ thống khác là một chức năng trọng yếu trong các hệ thống sử dụng điều khiển truy cập bắt buộc. Nhiệm vụ của việc xuất dữ liệu là phải đảm bảo các nhãn hiệu nhạy cảm đƣợc giữ gìn một cách đúng đắn và nhiệm vụ này phải đƣợc thực hiện sao cho các thông tin nhạy cảm phải đƣợc bảo vệ trong bất kỳ tình huống nào.
Phƣơng thức kiểm soát việc truy cập tài nguyên trên cơ sở vai trò – RBAC (Role Based Access Control): Trong việc đảm bảo an ninh đối với các hệ thống máy tính, điều khiển truy cập trên cơ sở vai trò là một trong số cá phƣơng pháp điều khiển và đảm bảo quyền sử dụng cho ngƣời dùng. RBAC khác với MAC và DAC truyền thống.
Một số lợi ích của việc sử dụng SELinux có thể chỉ ra nhƣ:
- Tất cả các tiến trình và tệp tin đƣợc gán nhãn với một kiểu. Mỗi kiểu định nghĩa một tên miền cho các tiến trình, và một kiểu cho các tệp. Các tiến trình đƣợc tách riêng bằng cách chạy trên các tên miền của mỗi tiến trình. Và các luật của SELinux định nghĩa các tiến trình tƣơng tác với tệp, cũng nhƣ cách thức các tiến trình tƣơng tác với nhau. Truy cập chỉ đƣợc phép
nếu tồn tại một luật trong chính sách bảo mật của SELinux mà đặc biệt cho phép nó truy cập.
- SELinux có thể đƣợc sử dụng để thực thi dữ liệu bảo mật và tính toàn vẹn, cũng nhƣ bảo vệ các quá trình từ đầu vào không đáng tin cậy.
- SELinux nhƣ một thủ tục hành chính, đƣợc thi hành trên toàn bộ hệ thống và không đƣợc thiết lập theo ý ngƣời dùng.
- Giảm bớt thiệt hại bởi các cuộc tấn công đặc quyền gây ra.