Centos

設置為 1 的 httpd_can_network_connect 在 SELinux 上實際打開了多少

  • September 25, 2020

當我嘗試將使用者重定向到 Paypal 進行結帳時,我的日誌文件中出現以下 SELinux denied 行。請您幫助我理解它的含義以及我應該向 SELinux 添加哪些例外以允許這些例外?

type=AVC msg=audit(1591554743.559:10135): avc:  denied  { name_connect } for  pid=3389 comm="httpd" dest=80 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1591554743.559:10135): arch=c000003e syscall=42 success=no exit=-13 a0=19 a1=7f6a14077238 a2=10 a3=26 items=0 ppid=981 pid=3389 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)ARCH=x86_64 SYSCALL=connect AUID="unset" UID="apache" GID="apache" EUID="apache" SUID="apache" FSUID="apache" EGID="apache" SGID="apache" FSGID="apache"
type=PROCTITLE msg=audit(1591554743.559:10135): proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44 

type=AVC msg=audit(1591554758.933:10140): avc:  denied  { name_connect } for  pid=5728 comm="php-fpm" dest=80 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1591554758.933:10140): arch=c000003e syscall=42 success=no exit=-13 a0=b a1=7f2e0555cf50 a2=10 a3=1bd7a524e1bda8 items=0 ppid=977 pid=5728 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)ARCH=x86_64 SYSCALL=connect AUID="unset" UID="apache" GID="apache" EUID="apache" SUID="apache" FSUID="apache" EGID="apache" SGID="apache" FSGID="apache"
type=PROCTITLE msg=audit(1591554758.933:10140): proctitle=7068702D66706D3A20706F6F6C20777777

根據我的研究,它看起來像“在 ENFORCING 模式下啟用時,預設情況下,SELinux 會阻止 Apache Web 伺服器建立網路連接。在託管 Apache Web 伺服器的機器上,將 SELinux 配置為允許 httpd 網路連接” RedHat

# /usr/sbin/setsebool httpd_can_network_connect 1

我只是想更多地了解從安全的角度來看這實際上打開了多少,以及它是否添加了過於廣泛的異常。

此外,如果有任何方法可以限制此佈爾規則的域。

非常感謝大家的幫助:)

從安全的角度來看,這實際上打開了多少

很多。正如您可能已經猜到的那樣,它允許httpd_t與任何遠端伺服器通信。沒有說明它是哪個網站,它可能是惡意網站。

如果它添加的異常範圍太廣

它確實如此,但它是一個有點必要的邪惡。

要了解它是如何危險的:關閉布爾值後,PHP 程式碼無法與遠端網站通信(就好像curl_功能被禁用一樣)。

如果一個網站被黑客入侵,並且攻擊者現在可以更改一些文件,他們通常會尋求從其他網站添加有效負載或建立一個反向 shell,這是不可能的。

啟用布爾值後,這將是可能的。

這同樣適用於從第三方獲取任何不受信任的 PHP 程式碼的所有情況。例如,首先考慮您的網站沒有被黑客入侵。

您已經為您的 CMS 安裝了一些罕見的模組,但您幾乎不知道它有一些偽裝成許可證的混淆程式碼,用於在執行時從作者的網站獲取惡意軟體/進行加密探勘。

如果有任何方法可以限制此佈爾規則的域。

看起來只能通過IP 地址來限制。我不確定具體的實現方式。

引用自:https://serverfault.com/questions/1020429