当我尝试将用户重定向到 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
根据我的研究,它看起来像“在 ENFORCING 模式下启用时,默认情况下,SELinux 会阻止 Apache Web 服务器建立网络连接。在托管 Apache Web 服务器的计算机上,将 SELinux 配置为允许 httpd 网络连接”红帽
# /usr/sbin/setsebool httpd_can_network_connect 1
我只是想进一步了解这从安全角度来看实际上有多大开放,以及这是否会增加太广泛的例外。
此外,如果有任何方法可以通过域来限制这个布尔规则。
非常感谢大家的帮助:)
答案1
从安全角度来看这实际上能带来多大程度的开放
很多。你可能已经猜到了,它允许httpd_t
与任何远程服务器通信。没有具体说明是哪个网站,而且可能是恶意网站。
如果它添加的例外范围太广
确实如此,但这是一种必要之恶。
要了解它如何危险:关闭布尔值后,PHP 代码将无法与远程网站通信(好像curl_
功能被禁用了)。
如果某个网站遭到黑客攻击,并且攻击者现在可以更改某些文件,他们通常会试图从其他网站添加有效负载或建立反向 shell,但这是不可能的。
一旦启用布尔值,这一切就都成为可能。
这同样适用于从第三方获取任何不受信任的 PHP 代码的所有情况。例如,假设您的网站一开始就没有被黑客入侵。
您已经为您的 CMS 安装了一些罕见的模块,但您几乎不知道它有一些伪装成许可证的混淆代码,以便在运行时从作者的网站获取恶意软件/进行加密挖掘。
是否有任何方法可以通过域来限制这个布尔规则。
看起来只能通过IP 地址。不过我不太清楚具体的实现方式。
答案2
SELinux 设置 httpd_can_network_connect 默认应为关闭状态。此设置不会阻止您的服务器连接到 PayPal 结账。服务器中存在其他问题,导致其无法连接到 PayPal,但您需要提供更多详细信息。