중요한 세부정보가 포함된 새 메모
방금 몇 가지 빌드 테스트를 실행했는데 결과는 다음과 같습니다. 좋습니다. 최신 업데이트는 다음과 같습니다.
- 10.5 작품
- 10.6 없음
- 10.7 작품
- 10.8 일
- 등.
LTS 릴리스이기 때문에 10.6을 사용하고 싶었지만 문제가 있는 것 같습니다. 현재 MariaDB 슬랙 채널을 이용하고 있는데, 2년 정도 지원이 되었기 때문에 이제 MariaDB 저장소를 10.5로 되돌리려고 합니다. 내가 놓친 다른 것이 있습니까? MariaDB 버전과 프로세스를 다시 시작하는 것 외에는 아무것도 변경하지 않았습니다.
참조용 메모 편집
EL Repo 설치 MariaDB 10.5는 "mysql-selinux" 패키지를 설치하고 기본 repo(epel-release?)는 필요한 통신을 허용하며 php-fpm은 mariadb에 정상적으로 연결할 수 있습니다. MariaDB 저장소 패키지에 이 기능이 없는 것 같습니다. AL 8.6 시스템에 EL 저장소 MariaDB를 설치했지만 이를 제거하고 일반 작업에 MariaDB 저장소를 사용했습니다. 여기에서 "mysql-selinux"의 소스를 찾았는데 "수정"만큼 간단하지 않습니다.
https://github.com/devexp-db/mysql-selinux/blob/master/mysql.te
이 패키지는 내 8.6 시스템에 설치되어 있지 않지만 작동합니다...
내 시스템에는 AlmaLinux 8.6에서 SELinux가 활성화되어 있으며 정상적으로 실행됩니다. 저는 재고 AL 8.6 Apache/httpd(내 생각에는 2.4.37)와 Remi 저장소의 PHP를 사용하고 있습니다.
https://rpms.remirepo.net/wizard/
처음에는 다음 지침을 사용하여 MariaDB 저장소에서 직접 MariaDB 10.4를 설치했습니다.
https://mariadb.com/resources/blog/how-to-install-mariadb-on-rhel8-centos8/
SELinux가 활성화되어 있으며 mysql.sock 소켓/프로세스에 연결하기 위해 php-fpm에 대해 특별히 사용자 정의를 수행하지 않은 것 같습니다. 최근에 MariaDB 저장소에서도 MariaDB 10.6으로 업그레이드했는데 모든 것이 평소대로 계속 작동합니다. 참고로 내 "작업" 유효성 검사는 로컬 소켓을 통해 연결하도록 구성된 phpMyAdmin을 사용하고 있습니다.
나는 기본 Apache/httpd(내 생각에는 2.4.51)와 함께 AlmaLinux 9 VM을 설치했습니다. 동일한 지침을 사용하여 동일한 저장소에서 MariaDB 10.6을 설치했습니다. 이제 SELinux가 /var/lib/mysql/mysql.sock 프로세스(unconfinsed_service_t로 실행)에 연결하려고 하는 php-fpm(httpd_t로 실행)의 요청을 거부하고 있습니다. 이 거부는 phpMyAdmin(php-fpm 서비스에서 실행)에 대한 연결 및 후속 로그인을 차단합니다.
time->Mon Sep 26 22:14:07 2022
type=PROCTITLE msg=audit(1664244847.002:83): proctitle=7068702D66706D3A20706F6F6C20777777
type=SYSCALL msg=audit(1664244847.002:83): arch=c000003e syscall=42 success=no exit=-13 a0=5 a1=7ffc156c46b0 a2=1b a3=557032b785a0 items=0 ppid=706 pid=738 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" exe="/opt/remi/php74/root/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1664244847.002:83): avc: denied { connectto } for pid=738 comm="php-fpm" path="/var/lib/mysql/mysql.sock" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:unconfined_service_t:s0 tclass=unix_stream_socket permissive=0
이는 AL 9 설치에만 표시되며, AL 8.6은 이 거부를 보고하지 않고 연결 및 후속 로그인을 허용합니다. 파일을 확인하고 SELinux 컨텍스트를 처리했는데 8.6과 9 사이에서 동일합니다. 또한 8.6 설치와 9 사이의 동일한 버전(모두 Remi의 php 7.4)을 포함하여 다양한 php-fpm 버전을 시도했습니다. apache:apache에서 fpm 풀을 실행하고 phpMyAdmin 사용자 아래에서 apache 그룹을 사용해 보았습니다.
이를 추적하는 방법에 대한 제안이 있으십니까? 다음 전략을 사용하여 SELinux 거부를 "수정"할 수 있지만 httpd가 제한되지 않은 모든 프로세스에 연결할 수 있도록 허용합니다.
module phpfpm_mariadb_socket 1.0;
require {
type httpd_t;
type unconfined_service_t;
class unix_stream_socket connectto;
}
#============= httpd_t ==============
allow httpd_t unconfined_service_t:unix_stream_socket connectto;
두 가지 분명한 차이점이 있습니다. Apache 2.4.37과 2.4.51(및 추적할 수 없는 잠재적으로 관련된 SELinux 정책 변경 사항) 및 EL 8.6과 EL 9 SELinux 코어 변경 사항(둘 다 "최신" 사용 가능한 업데이트가 적용됨)입니다. . 동일한 사용자 이름과 동일한 권한을 사용하여 8.6 시스템에서 9 시스템으로 phpMyAdmin 설치를 복사했습니다. 나는 php-fpm user:group 구성이 프로세스 컨텍스트와 관련이 있다고 생각하지 않습니다. 아니면 그렇습니까?
답변1
AlmaLinux 9의 MariaDB 10.6에서 이런 일이 발생하고 @Brian이 게시한 SELinux 정책이 작동함을 확인할 수 있습니다.