SELinux를 통한 MySQL 연결은 어떻게 허용합니까?

보안 강화를 위해 SELinux를 서버에서 한 번 실행하고 싶습니다.
나는 일반적으로 SELinux를 비활성화하여 작동합니다.
SELinux에 MySQL 연결을 허용하려면 어떻게해야합니까?
설명서에서 가장 많이 찾은 것은 mysql.com의 다음 줄입니다.

Linux에서 실행 중이고 SELinux (Security-Enhanced Linux)가 사용 가능한 경우 mysqld 프로세스에 대해 SELinux 보호를 사용하지 않아야합니다.

와우 … 정말 도움이됩니다.



답변

SELinux를 확인하려면

sestatus

httpd 프로세스에 어떤 플래그가 설정되어 있는지 확인하려면

getsebool -a | grep httpd

Apache가 SELinux를 통해 원격 데이터베이스에 연결하도록 허용하려면

setsebool httpd_can_network_connect_db 1

-P 옵션을 사용하면 변경 내용이 영구적으로 적용됩니다. 이 옵션이 없으면 재부팅시 부울 값이 0으로 재설정됩니다.

setsebool -P httpd_can_network_connect_db 1

답변

오류가 있습니까? 어떤 리눅스 버전을 사용하고 있습니까? 오류가 발생하면 보안 컨텍스트를 시작하는 것이 좋습니다. ls -Z는 컨텍스트를 제공하지만 … 귀하의 질문은 매우 모호합니다.


답변

분명히 selinux를 구성하는 것은 쉬운 일이 아닙니다. 당신은 여기 에서 시작할 수 있습니다 .

setenforce 0

selinux를 허용 모드로 설정하고 허용되는 것만 기록합니다. 재부팅 또는

setenforce 1

정책이 허용하지 않는 모든 것을 차단합니다.

Fedora에서 mySQL에 대한 이러한 selinux 정책 문서를 확인하십시오 .


답변

그것이 selinux인지 확실합니까? selinux는 외부로부터의 정상적인 연결을 허용해야합니다. 방화벽 일 수도 있습니다. mysqld에 연결하려는 로컬 서비스가있는 경우 이는 다릅니다.
http://docs.fedoraproject.org/en-US/Fedora/13/html/Managing_Confined_Services/sect-Managing_Confined_Services-MySQL-Booleans.html


답변

ausearch명령은 오류 로그를 찾는 데 도움 이 될 수 있습니다.


답변

로컬 정책도 작성할 수 있습니다.

“이 액세스를 허용하는 로컬 정책 모듈을 생성 할 수 있습니다. 지금 실행하여이 액세스를 허용하십시오.”

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

semodule -i mypol.pp

또는 실제 세션에 대해 전체적으로 활성화하십시오.

setsebool httpd_can_network_connect_db 1

또는 영구 :

setsebool -P httpd_can_network_connect_db 1