Sử dụng Booleans để điều chỉnh các cài đặt SELinux policies

Chia sẻ

Cùng tìm hiểu về tính linh hoạt của khi áp dụng Booleans trong SELinux và cách sử dụng chúng

Những điều cơ bản

Cơ bản là SELinux sử dụng một cơ sở dữ liệu lưu trữ các chính sách nhằm chấp thuận hay ngăn cản một files, một ứng dụng hay một tiến trình tiếp cận một hệ thống. Ứng dụng hay tiến trình được định nghĩa là các đối tượng sẽ yêu cầu các quyền truy cập vào tệp tin. Sự quyết định có cho phép hay không được đưa ra dựa vào các chính sách & phân quyền được lưu vào AVC (access vector cache)

Một “công tắc” nhanh chóng

Điều gì xảy ra khi bạn sử dụng một service bị chặn bởi một trong các chính sách được đặt ra? Việc định nghĩa lại nội dung các chính sách này có thể không cần thiết. Đó là tại sao Booleans được nhắc tới ở đây. Booleans cơ bản như là một công tắc cho phép thay đổi nhanh chóng các chính sách của các vùng đặc biệt trên hệ thống thông qua SELinux. Các Booleans là các chuỗi số cho phép chúng ta thực hiện các thay đổi ở cấp độ nhỏ đối với một chính sách được thực thi.

Có những Booleans nào tồn tại trong hệ thống

Để xem danh sách các Booleans có sẵn, bạn sử dụng câu lệnh dưới đây

getsebool -a
[cloudzone@client ~]$ getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
antivirus_can_scan_system --> off
antivirus_use_jit --> off
auditadm_exec_content --> on
authlogin_nsswitch_use_ldap --> off
authlogin_radius --> off
authlogin_yubikey --> off
awstats_purge_apache_log_files --> off
boinc_execmem --> on
cdrecord_read_content --> off
cluster_can_network_connect --> off
cluster_manage_all_files --> off
cluster_use_execmem --> off
cobbler_anon_write --> off
cobbler_can_network_connect --> off
cobbler_use_cifs --> off
cobbler_use_nfs --> off
collectd_tcp_network_connect --> off
...Output Omitted...

Điều này có nghĩa là gì

Có rất nhiều các thông số ở đây. Như các bạn có thể thấy ở danh sách phía trên, chức năng của một vài Boolean switches thực sự không rõ ràng. Bạn có thể dùng câu lệnh sau để có thêm một chút thông tin về các Boolean

semanage boolean -l | grep tên Boolean
[cloudzone@client ~]$ sudo semanage boolean -l | grep cobbler*
cobbler_anon_write (off , off) Allow cobbler to anon write
cobbler_can_network_connect (off , off) Allow cobbler to can network connect
cobbler_use_cifs (off , off) Allow cobbler to use cifs
cobbler_use_nfs (off , off) Allow cobbler to use nfs
httpd_can_network_connect_cobbler (off , off) Allow httpd to can network connect cobbler
httpd_serve_cobbler_files (off , off) Allow httpd to serve cobbler files

Bạn có thể thấy ở trên chúng ta đang tìm kiếm tất cả các Booleans bắt đầu với cobbler. Từ trái sang phải chúng ta thấy lần lượt là các chuỗi Boolean, giá trị hiện tại và giá trị mặc định của chúng, và một giải thích ngắn về switch này

Tắt/Bật Booleans

Để tắt/bật một switch, chúng ta sử dụng câu lệnh sau

setsebool tên chuỗi Booleans on (off)

Ví dụ để kích hoạt một chuỗi Booleans

[cloudzone@client ~]$ sudo setsebool cobbler_anon_write on
[cloudzone@client ~]$ sudo semanage boolean -l | grep cobbler_anon_write
cobbler_anon_write (on , off) Allow cobbler to anon write

Để tắt một chuỗi Booleans

[cloudzone@client ~]$ sudo setsebool cobbler_anon_write off
[cloudzone@client ~]$ sudo semanage boolean -l | grep cobbler_anon_write
cobbler_anon_write (off , off) Allow cobbler to anon write

Cần lưu ý rằng là sự thay đổi của chuỗi Boolean này sẽ bị mất khi khởi động lại. Nếu bạn cần tạo ra sự thay đổi vĩnh viễn thì bạn sẽ thêm tham số -P vào cấu trúc câu lệnh

[cloudzone@client ~]$ sudo setsebool -P cobbler_anon_write on
Chia sẻ