当我尝试将用户重定向到 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 地址来限制。我不确定具体的实现方式。
SELinux 设置 httpd_can_network_connect 默认应该是关闭的。此设置不会阻止您的服务器连接到 PayPal 结帐。服务器中还有一些其他问题阻止它连接到 PayPal,但您需要提供更多详细信息。