Redhat Linux 7(RHEL7)에 RabbitMQ를 설치하려고 합니다. RabbitMQ 웹사이트의 지침을 따랐더니 제대로 설치되었습니다. 그러나 SELinux는 Erlang이 포트 25672에 바인딩하는 것을 방지하므로 실행되지 않습니다.
github의 SELinux 저장소에서 SELinux 정책 파일을 찾았지만 이를 빌드하고 적용하는 방법을 모르겠습니다.
다른 Linux 배포판에 대한 참조가 계속 나오거나 audit2allow를 사용하므로 Google 검색에 실패했습니다.
Rabbitmq 정책 파일을 적용하는 방법https://github.com/selinux-policy/selinux-policy/tree/f21-contrib내 RHEL7 상자에?
답변1
맞춤 정책을 적용하기 위한 지침은 다음과 같습니다.스플렁크RHEL7에서. 이는 귀하의 애플리케이션과 거의 동일해야 합니다. 지침을 따르고 Fedora 저장소의 정책 파일을 사용하십시오. 당연히 개발 환경에서 먼저 이 작업을 수행하여 애플리케이션에 작동하는지 확인하세요.
다음은 그대로 복사된 핵심 지침입니다.
- 이 정책을 서버에 다운로드/업로드하고(git clone을 사용하지 않는 경우 zip 압축을 풀고)
cd
디렉터리로 이동합니다. yum install policycoreutils-python setools-console selinux-policy-devel
cp splunk.if /usr/share/selinux/devel/include/services/
make -f /usr/share/selinux/devel/Makefile DISTRO=rhel7
semodule -i splunk.pp
semanage permissive -a splunk_t
restorecon -R /opt/splunk
restorecon /etc/init.d/splunk
/etc/init.d/splunk restart
답변2
포트 사용 상황을 확인하세요.
# seinfo --portcon=25672
portcon tcp 25672 system_u:object_r:rabbitmq_port_t:s0
portcon tcp 1024-32767 system_u:object_r:unreserved_port_t:s0
portcon udp 1024-32767 system_u:object_r:unreserved_port_t:s0
그래서 나는 무엇이 효과가 있는지 보고 싶습니다.
# sesearch -A -s rabbitmq_t -t rabbitmq_port_t
Found 5 semantic av rules:
allow rabbitmq_t rabbitmq_port_t : tcp_socket { name_bind name_connect } ;
allow nsswitch_domain port_type : tcp_socket { recv_msg send_msg } ;
allow nsswitch_domain port_type : udp_socket { recv_msg send_msg } ;
allow rabbitmq_t port_type : tcp_socket { recv_msg send_msg } ;
allow rabbitmq_t port_type : udp_socket { recv_msg send_msg } ;
rabbitmq_exec_t
따라서 포트에 바인딩할 수 있도록 Rabbitmq 실행 파일의 레이블을 다시 지정해야 할 것 같습니다 . 이는 RHEL7의 기본 정책의 일부입니다. (이것이 처음부터 컴파일하는 대신 패키지를 사용해야 하는 이유입니다)