簡體   English   中英

Apache代理+UNIX插座+SELINUX:怎么做的?

[英]Apache proxy + UNIX socket + SELINUX: How is it done?

我試圖通過文件系統中的 UNIX 套接字讓 gunicorn 在 Apache 代理后面運行。 長話短說,它在非強制模式下與 SELinux 一起工作,但在強制模式下卻不行。 我正在努力解決這個問題。 這是我由 gunicorn 創建的套接字文件:

srwxrwxrwx. dh dh system_u:object_r:httpd_sys_content_t:s0 /var/www/wsgi/dham_wsgi.sock

以下是 audit2why 在通過 Apache 訪問失敗后必須說的:

type=AVC msg=audit(1641287516.397:870181): avc:  denied  { connectto } for  pid=23897 comm="httpd" path="/var/www/wsgi/dham_wsgi.sock" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:init_t:s0 tclass=unix_stream_socket permissive=0
    
        Was caused by:
            Missing type enforcement (TE) allow rule.

            You can use audit2allow to generate a loadable module to allow this access.

讓我們按照這個提示,閱讀一些手冊頁和 Internet,然后開始工作:

$ sudo cat /var/log/audit/audit.log | audit2allow -m httpd_socket -l > httpd_socket.te
$ cat httpd_socket.te

module httpd_socket 1.0;

require {
        type httpd_t;
        type httpd_sys_content_t;
        class sock_file write;
}

#============= httpd_t ==============
allow httpd_t httpd_sys_content_t:sock_file write;
$ checkmodule -M -m -o httpd_socket.mod httpd_socket.te
checkmodule:  loading policy configuration from httpd_socket.te
checkmodule:  policy configuration loaded
checkmodule:  writing binary representation (version 19) to httpd_socket.mod
$ semodule_package -o httpd_socket.pp -m httpd_socket.mod
$ sudo semodule -i httpd_socket.pp

但它不起作用,一切都和以前一樣。 重新啟動 Apache 沒有區別。 現在怎么辦?

我的初始 audit2allow 似乎沒有發現所有問題,因為我使用了“-l”標志(上次策略重新加載)。 使用如下更激進的方法讓我在生成的模塊中獲得了更多條目。 安裝后,它工作。

sudo grep dham_wsgi /var/log/audit/audit.log | audit2allow -M httpd_socket

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM