Nging/muninでSELinuxの問題を切り分けようとしています。 「/var/log/nging/error.log」に次のエラーメッセージが表示されます。
[クリティカル] 8802#0:* 55アップストリームへの接続中にunix:/var/run/munin/fcgi-html.sockへのconnect()が失敗しました(13:アクセスが拒否されました)、クライアント:1.2.3.5、サーバー:、リクエスト: "GET/munin/HTTP/1.1"、アップストリーム: "fastcgi:// unix:/var/run/munin/fcgi-html.sock:"、ホスト: "1.2.3.4"
次に、audit2allowを試してselinuxのアクセス許可を修正しました。
# cat /var/log/audit/audit.log | audit2allow -M nginx-munin-socket
# semodule -i nginx-munin-socket
Audit.logメッセージは消えましたが、nginxソケットエラーは常に存在します。 「setenforce0」を使用すると、nginxソケットのエラーメッセージが表示されません。だから私の問題は間違いなくselinuxだと思います。しかし、私は今問題を切り分ける方法がわかりません!?
nginx-munin-socket.te
module nginx-munin-socket 1.0;
require {
type httpd_t;
type init_t;
type munin_var_run_t;
class sock_file write;
class unix_stream_socket connectto;
}
#============= httpd_t ==============
allow httpd_t init_t:unix_stream_socket connectto;
allow httpd_t munin_var_run_t:sock_file write;
私は解決策を見つけました->すべてのaudit.logエントリを表示するには「dontaudit」を無効にする必要があることを学びました...
semodule --disable_dontaudit --build
それで、私は機能するSELinuxモジュールを作成することができました!