Redhat 7でselinuxポリシーファイルをどのように構築/適用しますか?

Redhat 7でselinuxポリシーファイルをどのように構築/適用しますか?

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リポジトリのポリシーファイルを使用します。もちろん、開発環境でまずこれを実行して、アプリケーションで機能していることを確認してください。

以下は、そのままコピーされた重要なガイドラインです。

  1. このポリシーをサーバーにダウンロード/アップロードし(git cloneを使用していない場合はzipを解凍して)、cdディレクトリに移動します。
  2. yum install policycoreutils-python setools-console selinux-policy-devel
    
  3. cp splunk.if /usr/share/selinux/devel/include/services/
    
  4. make -f /usr/share/selinux/devel/Makefile DISTRO=rhel7
    
  5. semodule -i splunk.pp
    
  6. semanage permissive -a splunk_t
    
  7. restorecon -R /opt/splunk
    
  8. restorecon /etc/init.d/splunk
    
  9. /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 の基本方針の一部です。 (これが最初からコンパイルする代わりにパッケージを使用する理由です)

関連情報