允许nginx连接到具有CentOS目标SELinux策略的Unix域套接字

时间:2017-04-05 08:34:32

标签: nginx centos selinux

我需要允许连接到具有CentOS目标SELinux策略的Unix域套接字。

我想出了以下模块:

module httpd_unix 0.0.0;

require {
        attribute file_type;
        class unix_stream_socket connectto;
        class sock_file write;
        type httpd_t;
}

type httpd_unix_t;
typeattribute httpd_unix_t file_type;
allow httpd_t httpd_unix_t: unix_stream_socket connectto;
allow httpd_t httpd_unix_t: sock_file write;

但是审计说:

type=AVC msg=audit(1491380970.041:396): avc:  denied  { connectto } for  pid=985 comm="nginx" path="/run/tsubonesystem3/tsubonesystem3.sock" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:init_t:s0 tclass=unix_stream_socket

当然,上下文设置为文件。

$ sudo ls -Z /var/run/tsubonesystem3/tsubonesystem3.sock
srw-rw----. tsubonesystem tsubonesystem system_u:object_r:httpd_unix_t:s0 /var/run/tsubonesystem3/tsubonesystem3.sock

我该如何解决?

2 个答案:

答案 0 :(得分:0)

解决:我必须修复绑定到Unix流文件的套接字的上下文。它的权限是从创建它的进程(侦听器)继承的,因此允许连接进程连接到侦听器的上下文。

例如,如果您的监听器在listner_t中运行且连接过程在connector_t中:

allow connector_t listener_t: unix_stream_socket connectto;

在我的情况下,监听器在init_t中运行,但允许nginx监听init_t中的任何进程太多了。我为侦听器创建了一个新的上下文,并允许nginx使用上下文连接到进程。

答案 1 :(得分:0)

经过大量搜索之后,我发现唯一的解决方案是:

#facebook {
width: 50px;
height: 50px;
background-image: url("http://via.placeholder.com/50x50");
cursor: pointer;
transition: all .3s ease-in-out;
}
#facebook:hover {
    background-color: darkblue;
    background-blend-mode: color-dodge;
}

这是在CentOS 7.4虚拟机上。