SELinux가 활성화된 CentOS 파생 배포판 AlmaLinux 9 위에 외부 nginx를 구성하여 Discourse를 배포하는 것을 테스트하고 있습니다.
Ubuntu 기반 컨테이너는 SELinux에 대해 인지하지 못하므로, 컨테이너를 시작할 때마다 유닉스 도메인 소켓을 보안 라벨이 없는 새 파일로 계속 대체합니다. 그 결과, nginx가 해당 파일에 접근할 수 있는 보안 컨텍스트를 부여하기 위해 restorecon으로 파일을 복구하기 전까지는 nginx가 소켓과 통신할 수 없습니다. 당연히 이는 프로덕션 환경에서 작동하는 해결책이 아닙니다.
실제로 외부 세계에 노출된 유일한 서비스인 이 서비스에서 SELinux의 이점을 실제로 활용하고 싶기 때문에, semanage permissive -a httpd_t를 실행하고 싶지 않습니다. ![]()
유닉스 도메인 소켓 대신 네트워크 포트로 프록시를 설정하면 작동합니다:
setsebool -P httpd_can_network_connect 1templates/web.socketed.template.yml을 사용하지 않습니다.expose: - "8008:80"- 외부 nginx에서
proxy_pass http://127.0.0.1:8008
이 방식에는 특별한 단점이 있을까요? 이 구성에서 연결 제한과 같은 매개변수를 변경해야 하는가요?
더 철저한 테스트를 마친 후, 이를 문서로 더 자세히 작성할 예정입니다. 추가적인 우려 사항이 있다면 문서에 포함하겠습니다.