Tìm hiểu Selinux trên CentOS

Giới thiệu cơ bản

SELinux (Security-Enhanced Linux) là một mô đun bảo mật ở nhân của Linux, cung cấp cơ chế hỗ trợ các chính sách bảo mật kiểm soát truy cập (access control)

SELinux có 3 chế độ hoạt động cơ bả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ố
  • Disabled: SELinux bị vô hiệu hóa.

Vô hiệu hóa SElinux

Vì sao cần vô hiệu hóa

Việc bảo mật trên Linux cũng vô cùng quan trọng nhưng việc chưa control được selinux gây đến khó khăn trong khi chúng ta cài đặt vận hành các phần mềm trên Linux.

Trước khi cài đặt phần mềm nào đó ví dụ như mysql, httpd, … chúng ta thường nghĩ ngay đến việc vô hiệu hóa SElinux và firewall(iptables)

Vô hiệu hóa tạm thời

Vô hiệu hóa tạm thời sẽ có tác dụng lên Server cho đến khi Server được reboot lại

echo 0 > /selinux/enforce

hoặc

setenforce 0

Vô hiệu hóa SELinux vĩnh viễn

Chỉnh sửa nội dung trong file /etc/selinux/config với nội dung SELINUX=disabled

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/sysconfig/selinux

Lưu ý đối với thao tác vô hiệu hóa Selinux vĩnh viễn cần reboot lại server để có nhận cấu hình mới.

Hoặc có thể kết hợp với vô hiệu hóa tạm thời để không cần reboot

Kiểm tra lại trạng thái của SElinux

Sau khi vô hiệu hóa vĩnh viễn xác nhận quá trình vô hiệu hóa thành công

sestatus

Kết quả thành công

SELinux status:                 disabled

Làm chủ SElinux

Như ở phía trên chúng ta vừa tìm hiểu lý do vì sao chúng ta phải Vô hiệu quá SElinux và cách vô hiệu hóa SElinux như thế nào

Nhưng sau khi cài đặt các phần mềm cần thiết thì chúng ta nên bật lại SElinux và phần này sẽ hướng dẫn cơ bản các bạn làm chủ 1 phần về SElinux như thế nào.

Mô hình kịch bản

SElinux trên 1 web server httpd có các application chạy trên các port khác nhau 8081, 8080, 8765

Ban đầu chúng ta đã disable SElinux, sau đó tiến hành cài đặt httpd với các application

Bật lại Selinux

Thao tác ngược lại với phần vô hiệu hóa SElinux ở phía trên

sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config

Lưu ý cần khởi động lại Server để SElinux nhận cấu hình mới

Cài đặt các công cụ cần thiết

Cài đặt setroubleshoot-server(Để sử dụng câu lệnh semanage) và selinux-policy-devel(để sử dụng câu lệnh sepolicy)

yum install -y setroubleshoot-server selinux-policy-devel

Cài đặt httpd chúng ta có thể sử dụng VirtualHost để tạo các application chạy ở các port khác nhau

yum install -y httpd

SELinux đơn giản như thế nào

List tất cả các port được SElinux mở mặc định

semanage port -l

Kết quả

SELinux Port Type              Proto    Port Number

afs3_callback_port_t           tcp      7001
afs3_callback_port_t           udp      7001
afs_bos_port_t                 udp      7007
afs_fs_port_t                  tcp      2040
afs_fs_port_t                  udp      7000, 7005
afs_ka_port_t                  udp      7004
afs_pt_port_t                  udp      7002
afs_vl_port_t                  udp      7003
...
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
...
zookeeper_client_port_t        tcp      2181
zookeeper_election_port_t      tcp      3888
zookeeper_leader_port_t        tcp      2888
zope_port_t                    tcp      8021

Ví dụ ở đây chúng ta muốn list hết các port SElinx cho phép httpd sử dụng

semanage port -l | grep -w http_port_t

hoặc sử dụng sepolicy

sepolicy network -t http_port_t

Kết quả của cả 2 câu lệnh trên đều tương tự

http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

Kiểm tra port nếu đã được sử dụng

sepolicy network -p 8001

Cho phép httpd sử dụng port 8001 với các kết nối tcp

semanage port -a -t http_port_t -p tcp 8001

Kết quả

8001: tcp unreserved_port_t 1024-32767
8001: udp unreserved_port_t 1024-32767

Xóa port với tham số -d thay cho -a

semanage port -d -t http_port_t -p tcp 8001

Để kiểum tra port được update thêm mới chúng ta có thể sử dụng

semanage port -l | grep -w http_port_t

Kết quả

http_port_t                    tcp      8001, 80, 81, 443, 488, 8008, 8009, 8443, 9000

Hoặc

sepolicy network -p 8001

Kết quả

8001: tcp unreserved_port_t 1024-32767
8001: udp unreserved_port_t 1024-32767
8001: tcp http_port_t 8001

Secure server của bạn nào

Qua bài hướng dẫn cơ bản này hẳn là bạn cũng phần nào nắm được các thao tác đối với SElinux và quan trọng hơn là bật toàn bộ SElinux mà bạn đã tắt lên và cấu hình đi nào.


Thực hiện bởi cloud365.vn

Written by Đặng Xuân Cảnh
×

Subscribe

The latest tutorials sent straight to your inbox.