httpd_can_network_connect 设置为 1 实际上在 SELinux 上打开了多少

-1 php selinux centos magento centos8

当我尝试将用户重定向到 Paypal 进行结帐时,我在日志文件中收到以下 SELinux 拒绝行。您能帮助我理解它的含义以及我应该向 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
Run Code Online (Sandbox Code Playgroud)

根据我的研究,它看起来像“在 ENFORCING 模式下启用时,默认情况下,SELinux 会阻止 Apache Web 服务器建立网络连接。在托管 Apache Web 服务器的计算机上,将 SELinux 配置为允许 httpd 网络连接

# /usr/sbin/setsebool httpd_can_network_connect 1
Run Code Online (Sandbox Code Playgroud)

我只是想更多地了解从安全角度来看这实际上会带来多大的影响,以及它是否添加了过于广泛的例外情况。

另外,是否有任何方法可以限制此布尔规则上的域。

非常感谢大家的帮助:)

Dan*_*nin 5

从安全角度来看,这实际上开放了多少

很多。正如您可能已经猜到的,它允许httpd_t与任何远程服务器通信。没有具体说明它是哪个网站,它可能是恶意网站。

如果添加的例外范围太宽泛

确实如此,但这在某种程度上是一种必要的罪恶。

要了解它的危险性:关闭布尔值后,PHP 代码无法与远程网站通信(就好像curl_功能被禁用一样)。

如果一个网站被黑客攻击,并且攻击者现在可以更改一些文件,他们通常会寻求从其他网站添加有效负载或建立反向 shell,这是不可能的。

启用布尔值后,这将是可能的。

这同样适用于从第三方获取任何不受信任的 PHP 代码的所有情况。例如,首先考虑您的网站没有被黑客攻击。

您已经为您的 CMS 安装了一些罕见的模块,但您几乎不知道它有一些伪装成许可证的模糊代码,用于在运行时从作者的网站获取恶意软件/进行加密挖掘。

是否有任何方法可以限制此布尔规则上的域。

看来只能通过IP地址来限制了。但我不确定具体的实施。