我如何在 redhat 7 上构建/应用 selinux 策略文件?

我如何在 redhat 7 上构建/应用 selinux 策略文件?

我正在尝试在 Redhat Linux 7 (RHEL7) 上安装 RabbitMQ。我按照 RabbitMQ 网站上的说明进行操作,安装得很好。但是,它不会运行,因为 SELinux 阻止 Erlang 绑定到端口 25672。

我在 github 上的 SELinux 存储库中找到了 SELinux 策略文件,但我不知道如何构建并应用它们。

我的谷歌搜索一直不成功,因为我不断提出对其他 Linux 发行版的引用,或者使用audit2allow。

如何应用rabbitmq策略文件https://github.com/selinux-policy/selinux-policy/tree/f21-contrib到我的 RHEL7 盒子吗?

答案1

这些是应用自定义策略的说明斯普朗克在 RHEL7 中。对于您的应用程序来说,它应该几乎相同,只需按照说明操作并使用 fedora 存储库中的策略文件即可。显然,首先在开发环境中执行此操作以验证它是否适用于您的应用程序。

以下是逐字复制的核心指令:

  1. 将此策略下载/上传到您的服务器(并解压 zip - 如果不使用 git 克隆),然后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可执行文件,以便rabbitmq_exec_t它可以绑定到端口。它是 RHEL7 中基本策略的一部分。 (这就是为什么你应该使用包而不是从头开始编译)

相关内容