내 시스템 환경은 Centos-7.9, Apache2.4, Php-fpm, PHP-7.4입니다.
독립 실행형 테스트 이메일에서 작동하고 SELinux를 끌 때 웹 사이트에서 이메일을 보내도록 postfix 설정이 있습니다.
그러나 SELinux가 활성화되면 아래 오류와 함께 서버에서 이메일을 보내는 것이 차단됩니다. /var/log/maillog
postfix/sendmail[10883]: fatal: execv /usr/libexec/postfix/smtpd: Permission denied
내가 할 때
sudo setenforce 0
이메일은 보내지만 SELinux를 끄고 싶지는 않습니다. 하지만 웹 애플리케이션에서 이메일 전송을 허용 목록에 추가하고 싶습니다. 아래에서 시도했지만 작동하지 않았습니다.
sudo setsebool -P httpd_can_sendmail 1
이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
답변1
이는 php-fpm
Apache의 mod_php
. CentOS 7.9를 사용하고 있으므로 적용됩니다.
Red Hat의 Bugzilla에서 이 문제에 대한 자세한 내용을 읽을 수 있습니다.http://bugzilla.redhat.com/show_bug.cgi?id=1754622
문제에 대한 해결책으로 가장 확실한 첫 번째 방법은 SELinux를 비활성화하는 것이지만 두 번째 옵션으로 다음을 권장합니다.
- 패키지 설치
policycoreutils-python
audit2why
SELinux가 활성화된 상태에서 작동하도록 하려면 및 을 사용하여audit2allow
사용자 정의 규칙을 생성하십시오php-fpm
.tail -f
을 켜고/var/log/audit/audit.log
에서 메일 메시지를 보내려고 합니다httpd
. 출력을 얻고 및 를 통해 시드audit2why
합니다audit2allow
. 그것은 자명하다.- 두 프로그램에서 권장하는 규칙을 적용합니다.
세 번째 해결책은 이 시스템에 특정한 사용자 정의 규칙을 작성하지 않으려는 경우 httpd_t
또는 system_mail_t
(의 출력에 따라 ) 허용 모드를 설정하는 것입니다. audit2allow
하지만 이렇게 하면 전체 컨텍스트에서 SELinux가 비활성화된다는 점을 명심하세요.
이는 다음 명령을 사용하여 수행됩니다: semanage permissive -a httpd_t
또는 semanage permissive -a system_mail_t
. 변경 사항을 취소하려면 -a
로 변경하면 됩니다 -d
.
답변2
내가 여기서 할 일은
SELinux를 허용 모드로 설정
setenforce 0
AVC 거부에 대한 완전한 목록을 얻을 수 있도록 감사 로그를 순환합니다.
kill -USR1 $(cat /run/auditd.pid)
원인 문제가 발생하고 감사 메시지가 생성됩니다.
로컬 정책 모듈 만들기
grep denied /var/log/audit/audit.log | audit2allow -m mypolicy >mypolicy.te
생성된 정책 파일이 내가 기대하는 것처럼 보이고 내가 원하지 않는 항목을 '포기'하지 않는지 확인하고 필요에 따라 편집합니다.
정책 생성 및 설치
checkmodule -M -m -o mypolicy.mod mypolicy.te
semodule_package -o mypolicy.pp -m mypolicy.mod
semodule -i mypolicy.pp
모든 AVC 거부를 별도의 파일에 넣은 다음 파일에서 audit2alow를 사용하기 전에 해결하려는 문제와 관련 없는 항목을 제거하는 것이 더 쉬울 수 있습니다. 이것이 더 잘 작동한다면 중간 단계를 건너뛰고 바로 .pp 파일로 이동할 수 있습니다.
cat myavcs.log | audit2allow -M mypolicy