Hướng dẫn khắc phục lỗ hổng bảo mật CVE-2019-11477 trên Cloud365
Hướng dẫn khắc phục lỗ hổng bảo mật CVE-2019-11477 trên Cloud365
Nơi chứa các tài liệu tham khảo của dịch vụ Cloud365.
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
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 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
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
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
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.
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
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 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
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
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