Nhƣ đã trình bày trong chƣơng 2, SELinux là một bản vá cho nhân Linux nhằm tăng cƣờng tính năng bảo mật của Linux. Trong Linux chuẩn, các thuộc tính quản lý truy cập của một chủ thể chính là user và group ID kết hợp với tất cả tiến trình thông qua cấu trúc tiến trình trong hệ thống. Các thuộc tính này đƣợc bảo vệ bởi hệ thống và chỉ đƣợc thay đổi thông qua các công cụ quản trị nhƣ tiến trình login và chƣơng trình setuid. Đối với các đối tƣợng nhƣ file, inode (index node là một khái niệm để lƣu thông tin cơ bản nhƣ file type, permission, Owner,...của đối tƣợng) chứa một tập các bit về chế độ truy cập, ID của group và file user. Ngƣời dùng tập kết hợp của 3 bit read/write/excute để quản lý quyền truy cập.
Trong SELinux, các đối tƣợng quản lý truy cập luôn gồm ba phần (user,role, type). Tất cả các đối tƣợng và chủ thể trong hệ điều hành đều có một ngữ cảnh truy cập kết hợp giữa 3 thành phần này. Trong khi bản Linux chuẩn dùng ID của tiến trình dành cho từng User, group; chế độ truy cập của file và các ID cho file để cấp quyền truy cập tài nguyên hay không, bản SELinux dùng các ngữ cảnh bảo mật của một tiến trình và các đối tƣợng để cấp quyền truy cập.
Để cài đặt SELinux có thể thực hiện thông qua lệnh: sudo apt-get install selinux
Sau khi cài đặt xong hệ thống yêu cầu cần khởi động lại, chúng ta có thể sử dụng lệnh nhƣ hình minh họa dƣới đây để kiểm tra các thông tin của SELinux đƣợc cài đặt trên máy.
Hình 3.1: Xem trạng thái hiện tại của SELinux
SELinux có ba trạng thái là:
- enforcing: Trạng thái mặc định, nếu SELinux ở trạng thái này các chính sách an ninh đã thiết lập sẽ đƣợc thực thi. Sẽ không có ngƣời dùng hoặc chƣơng trình nào có thể làm bất cứ điều gì mà các thiết lập bảo mật không cho phép.
- premissive: Với trạng thái này SELinux sẽ gửi tin nhắn cảnh báo trong trƣờng hợp có vi phạm các chính sách bảo mật tuy nhiên hệ thống sẽ không thi hành các chính sách bảo mật đã đƣợc thiết lập.
- disabled: Tắt SELinux. Tất cả các chính sách bảo mật của SELinux sẽ đều bị vô hiệu hóa.
Để thay đổi các trạng thái của SELinux sử dụng lệnh setenforce. Để biết đƣợc trạng thái của SELinux hiện tại sử dụng lệnh getenforce. Dƣới đây minh họa việc thiết lập trạng thái khác nhau:
- Để thiết lập trạng thái SELinux về permissive: setenforce 0
- Để thiết lập trạng thái SELinux về enforcing: setenforce 1
Ngoài việc sử dụng lệnh setenforce để thay đổi trạng thái của SELinux chúng ta cũng có thể thực hiện bằng cách thiết lập trong tập tin cấu hình của SELinux: /etc/selinux/config nhƣ minh họa dƣới đây:
Hình 3.2: Nội dung tập tin cấu hình SELinux
Có thể sử dụng thêm tùy chọn -Z để xem các thiết lập SELinux trong các file và tiến trình nhƣ:
- ls -Z: Hiển thị thiết lập bảo mật của các đối tƣợng file hệ thống. - ps -Z: Hiển thị thiết lập bảo mật của các tiến trình trong hệ thống. - id -Z: Hiển thị thiết lập bảo mật của ngƣời dùng hiện thời.
Việc kiểm soát truy cập tài nguyên trên các hệ điều hành đƣợc dựa vào một loại thuộc tính quản lý truy cập kết hợp với các đối tƣợng (file, socket, network host) và chủ thể (application, process). Tất cả các đối tƣợng và chủ thể này đều có một ngữ cảnh bảo mật (security context) riêng kết hợp cùng. Một ngữ cảnh bảo mật có 4 thành
phần chính: Ngƣời dùng (user), vai trò (role), mã loại (type) và mức (level). Các thành phần này đƣợc ngăn cách bởi dấu “:” nhƣ minh họa dƣới đây:
Hình 3.3: Các thành phần của một security context
Để thiết lập lại ngữ cảnh bảo mật sử dụng lệnh chcon với một số tham số tùy chọn cơ bản nhƣ: -u (thay đổi user của ngữ cảnh bảo mật), -t (thay đổi type), -r (thay đổi role), --reference (tham chiếu ngữ cảnh bảo mật của một tập tin hoặc tiến trình khác). Ví dụ dƣới đây trình bày việc sử dụng chcon để thay đổi user từ unconfined_u sang system_u.
Hình 3.4: Sử dụng chcon để thay đổi security context
Ngoài việc sử dụng chcon để thiết lập lại ngữ cảnh bảo mật cho tập tin hoặc tiến trình, có thể sử dụng getsebool -a để xem danh sách tất cả các tiến trình và trạng thái bật (on), tắt (off) của selinux với chúng nhƣ minh họa dƣới đây:
Hình 3.5: Sử dụng getsebool để xem trạng thái của thiết lập của selinux
Để thay đổi lại trạng thái sử dụng lệnh setsebool. dƣới đây minh họa việc thay đổi thiết lập selinux của use_samba_home_dirs từ of sang on:
Hình 3.6: Sử dụng setsebool thiết lập lại trạng thái của selinux