Làm cách nào để tôi cho phép kết nối MySQL thông qua SELinux?


21

Tôi muốn một lần rời khỏi SELinux chạy trên một máy chủ để tăng cường bảo mật.
Tôi thường vô hiệu hóa SELinux để mọi thứ hoạt động.
Làm cách nào để tôi nói với SELinux cho phép kết nối MySQL?
Phần lớn tôi tìm thấy trong tài liệu là dòng này từ mysql.com:

Nếu bạn đang chạy trong Linux và Linux được tăng cường bảo mật (SELinux) được bật, hãy đảm bảo bạn đã tắt bảo vệ SELinux cho quy trình mysqld.

wow ... điều đó thực sự hữu ích.


1
Vui lòng cung cấp tất cả các thông tin sau để chúng tôi có cơ hội giúp bạn. 1. Linux Distro và Phiên bản, 2. Phiên bản MySQL và nguồn cài đặt, 3. Các mục nhật ký AVC từ một kết nối bị từ chối, 4. Nhật ký MySQL có liên quan, nếu có 5. Đầu ra của getsebool -a | grep mysql6. Các bước chính xác bạn đã thực hiện để tái tạo điều này
hobodave

Câu trả lời:


40

Để kiểm tra SELinux

sestatus

Để xem những cờ nào được đặt trên các quy trình httpd

getsebool -a | grep httpd

Để cho phép Apache kết nối với cơ sở dữ liệu từ xa thông qua SELinux

setsebool httpd_can_network_connect_db 1

Sử dụng tùy chọn -P làm cho thay đổi vĩnh viễn. Nếu không có tùy chọn này, boolean sẽ được đặt lại về 0 khi khởi động lại.

setsebool -P httpd_can_network_connect_db 1

3
dường như là cần thiết khi kết nối qua loopback 127.0.0.1?
Devin Ceartas

@Devin, chắc chắn rồi.
e18r

2
Nếu bạn muốn cho phép người dùng kết nối với máy chủ mysql cục bộ, bạn cũng phải bật boolean selinuxuser_mysql_connect_enables.
Anton Makovetsky

setsebool -P httpd_can_network_connect 1cũng có thể cần thiết Điều này đã được đề xuất trong nhật ký của tôi bằng cách chạy ausearch -m avc -ts today | audit2whynhư được đề xuất trong một nhận xét của vnix27.
trang web

2

Bạn có mắc lỗi gì không? Bạn đang sử dụng hương vị nào của linux? Bối cảnh bảo mật là một nơi tốt để bắt đầu nếu bạn gặp lỗi. ls -Z sẽ đưa ra bối cảnh ... Nhưng câu hỏi của bạn rất mơ hồ.


Tôi đang kết nối từ một hộp cửa sổ. Không có lỗi ... kết nối chỉ bị từ chối và hết trang. Tôi biết nếu tôi tắt selinux thì mọi thứ sẽ ổn.

vì kết nối đến từ hộp windows, ls -Z chỉ cung cấp cho tôi thông tin về các tệp trong bất kỳ thư mục nào tôi có trong hộp linux.

Trong câu hỏi của tôi ở trên tôi trích dẫn một tài liệu tham khảo mysql ... mà nói đến vô hiệu hóa bảo vệ selinux cho quá trình mysqld ... nhưng nó không nói như thế nào để làm điều đó :( Cũng không phải tôi có thể tìm hiểu làm thế nào.

Bất cứ điều gì trong các bản ghi trên hộp linux? selinux có thể ngăn httpd thực hiện kết nối ổ cắm ...

Không có gì trong tin nhắn hoặc nhật ký an toàn ... có một nhật ký cụ thể mà bạn có trong tâm trí không?

1

Rõ ràng cấu hình selinux không tầm thường. Bạn có thể muốn bắt đầu ở đây .

setenforce 0

đặt selinux vào chế độ cho phép, trong đó nó cho phép mọi thứ trừ bản ghi những gì nó cho phép. Khởi động lại hoặc

setenforce 1

trở lại để chặn bất cứ điều gì chính sách không cho phép.

Kiểm tra các tài liệu chính sách selinux này cho myQuery trong Fedora .



1

Các ausearchlệnh có thể giúp tìm ra các bản ghi lỗi.


1
ausearch -m avc -ts hôm nay | aud2why, lệnh có thể đề xuất giải pháp
vnix27

1

bạn cũng có thể xây dựng chính sách địa phương:

"Bạn có thể tạo mô-đun chính sách cục bộ để cho phép truy cập này. Hiện tại cho phép truy cập này bằng cách thực thi:"

grep httpd /var/log/audit/audit.log | audit2allow -M mypol

semodule -i mypol.pp

hoặc kích hoạt trên toàn cầu cho phiên thực tế:

setsebool httpd_can_network_connect_db 1

hoặc vĩnh viễn:

setsebool -P httpd_can_network_connect_db 1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.