Làm chủ Centos 7 trong 30 ngày - Ngày 2: SELinux (Sáng)
FASTER - STRONGER - SAVER
sales@vietdata.com.vn   0914 83 55 22
Trang Chủ > Kiến thức dịch vụ > Làm chủ Centos 7 >Làm chủ Centos 7 trong 30 ngày – Ngày 2: SELinux (Sáng)

Làm chủ Centos 7 trong 30 ngày – Ngày 2: SELinux (Sáng)

SELinux trên CentOS/ RedHat

Tiếp nối ngày 1, ngày thứ 2 này ta sẽ tìm hiểu về SELinux. Trước khi đi sâu vào cơ chế bảo mật đặc biệt này, ta cần cài đầy đủ các gói sau

yum install policycoreutils policycoreutils-python selinux-policy selinuxpolicy-targeted libselinux-utils setroubleshoot-server setools setoolsconsole mcstrans 

Và thêm 02 gói dịch vụ để test SELinux:

 yum install httpd vsftpd 
 systemctl start httpd 
 systemctl start vsftpd 

SELinux Mode

Có 3 chế độ SELinux  đó là:

+ Enforcing: Ở chế độ này, SELinux áp các policy trên toàn hệ thống và đảm bảo các truy nhập bới các user và proceess không được chứng thực sẽ bị từ chối. Các truy cập bị từ chối sẽ được ghi vào Log.

+ Permissive: Ở chế độ này, SELinux không từ chối bất kì truy nhập nào, đây là chế độ tốt nhất để test các SELinux policy.

+ Disabled: Chế độ này thì SELinux bị disabled hoàn toàn và không ghi lại log 

File cấu hình của SELinux là /etc/selinux/config. Ta sẽ enable SELinux bằng setup SELINUX=permissive trong file này và reboot lại.

SELINUXTYPE trong file config cũng có 3 tùy chọn:

+ Targerted: Đây là giá trị mặc định cho phép customize và tinh chỉnh các policy

+ Minimum: Ở chế độ này, chỉ các process được chọn mới được bảo vệ

+ MLSMulti Level Security là một chế độ bảo vệ mở rộng và cần thêm các để cài đặt nó

Ta sẽ để SELINUXTYPE ở giá trị mặc định và SELinux ở chế độ “permissive”, vì chỉ ở chế độ này các lỗi và truy cập bị chặn mới được ghi vào log. Việc theo dõi liên tục log để xác định lỗi là một thao tác không thể bỏ qua:

grep 'SELinux' /var/log/messages 

SELinux Policy

Policy là một set các rules định nghĩa mối quan hệ tương tác, các tính năng bảo mật và quyền truy cập cho các đối tượng sau:

+ User: Tất cả các user thông thường được định nghĩa bới 1 hoặc nhiều SELinux user. Rất chú ý ở đây là SELinux user hoàn toàn khác một user thông thường trên Linux.

+ Role: Như là những filter định nghĩa user nào có thể truy nhập vào một process. Nó giống như cánh cổng giữa user và process. Một user chỉ có thể chạy một process cụ thể nếu role gán cho nó và user có quyền truy nhập vào role. SELinux dựa trên Role Based Access Control (RBAC).

+ Subject và Object: Subject giống như một procees hoặc một chương trinh và object là bất kỳ cái gì có thể hoạt động trên đó như một file, port , thư mục ….Các hoạt động được thực hiện bới một subject trên một object phụ thuộc vào quyền của subject.

+ Domain: Giống như wrapper quanh Subject, nó cho process biết cái nó có thể hoặc không thể làm. Chẳng hạn, domain sẽ định nghĩa thư mục, folder, file, ports và một process có thể truy nhập. Domain có liên quan đến Subject trong SELinux.

+ Type: Một file context được gọi là type. Chẳng hạn, context của một file mô tả nó chỉ có thể truy nhập vào process web server nội bộ hay đến bất cứ process nào nằm trong thư mục khác hoặc một SELinux user cụ thể nào là owner của file.Type liên quan đến object trong SELinux.
Trong SELinux, policy định nghĩa các rules cho các user truy nhập vào roles, roles truy nhập vào domain và domain truy nhập vào type.

Có 3 dạng truy nhập chính trong SELinux được định nghĩa bới SELINUXTYPE trong file config /etc/selinux/config là :  Type Enforcement (TE), Role-Based Access Control (RBAC) và Multi-Level Security (MLS)

Targeted policy được sử dụng mặc định trong SELinux. Ở đây, SELinux không thay thế DAC policy truyền thống của Linux, thay vào đó, nếu một việc truy nhập vào một file bị cấm bởi DAC, SELinux sẽ bị bỏ qua.

SELinux policy được load trong một định dạng module giống như những kernel module trong bộ nhớ và có thể xem được bằng lệnh sau:

semodule -l | more 

Lệnh semodule được sử dụng để cài đặt, xóa, reload, upgrade, enable và disable các module SELinux policy. Các file module là các file binary nằm trong thư mục /etc/selinux/targeted/modules/active/modules với đuôi .pp và chúng có liên quan đến các ứng dụng khác nhau trong Linux. Các policy module này được kết hợp vào một policy đang hoạt động và sau được load vào bộ nhớ. Policy này được đặt trong thư mục /etc/selinux/targeted/policy. Ta không thể thay đổi trực tiếp các rules này nhưng có thể quản lý được nhờ việc sử dụng lệnh semanage boolean như sau:

semanage boolean -l | less

Nào ta hãy xem trạng thái đối với ftpd services bằng câu lệnh sau:

 semanage boolean -l | grep ftpd

Từ trên ta có thể thấy, FTP user không có quyền full access, ftpd service cũng không thể chuyển sang chế độ passive mode. 

# getsebool ftpd_full_access
ftpd_full_access --> off
# getsebool ftpd_use_passive_mode
ftpd_use_passive_mode --> off

Ta cần Enable các thông số này như sau:

setsebool -P ftpd_full_access on
setsebool -P ftpd_use_passive_mode on

Và lúc này các tính năng trên sẽ hoạt động trơn tru.