2017-04-05 11 views
0

CentOSターゲットSELinuxポリシーでUnixドメインソケットに接続することを許可する必要があります。nginxが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 

どうすれば修正できますか?

答えて

0

解決済み:Unixストリームファイルにバインドされたソケットのコンテキストを修正する必要がありました。そのパーミッションはそれを作成するプロセス(リスナー)から継承されるため、接続プロセスをリスナーのコンテキストに接続できるようにします。例えば

、リスナーがlistner_tで実行されていると、接続処理がconnector_tである場合:

私の場合は
allow connector_t listener_t: unix_stream_socket connectto; 

、リスナーがinit_tで実行されているが、nginxのはinit_tで任意のプロセスを聞くことができるようにすることでした。過度に。私はリスナーのための新しいコンテキストを作成し、コンテキストを使用してプロセスに接続することを許可しました。

関連する問題