SELinux 布尔值“httpd_can_network_relay”和“httpd_can_network_connect”之间的区别

信息安全 linux 阿帕奇 selinux
2021-08-17 19:36:14

我正在我的 CentOS 7.3 服务器上启用 SELinux。我将其设置为许可模式并监视审核日志以查找拒绝。我正在寻求实现最少的规则集,以允许服务器上需要的所有内容,仅此而已。

所以今天早上我注意到当我昨晚使用 WordPress 的 FTP 更新功能时,httpd 会被阻止连接到网络。audit2why建议设置httpd_can_network_relayhttpd_can_network_connect

我只是想确保我正确理解了这两者之间的区别。是否可以准确地说httpd_can_network_connect允许 httpd 进行它希望的任何传出网络连接,而httpd_can_network_relay只允许 FTP 端口和临时端口?

audit2why 说:

# setsebool -P httpd_can_network_connect 1
Description: Allow httpd to act as a relay

# setsebool -P httpd_can_network_relay 1
Description: Allow httpd to act as a FTP client connecting to the ftp port and ephemeral ports

如果是这样,它将如何定义临时端口是什么,或者它是否只允许超过 1024 的任何东西?

关于我所缺少的所有这些,是否有一些更详细的参考资料?

更新

我误读了命令的注释顺序,上面应该是:

Description: Allow HTTPD scripts and modules to connect to the network using TCP.
# setsebool -P httpd_can_network_connect 1

Description: Allow httpd to act as a relay
# setsebool -P httpd_can_network_relay 1
2个回答

正如谜团所说:

第一个选项 [httpd_can_network_relay] 用于反向代理场景,其中您的 httpd 代表客户端将请求中继到某个后端 httpd。

至于httpd_can_network_connect,它允许 httpd 进行网络连接,包括脚本和模块。

基本上, audit2why 的输出以一种奇怪的方式格式化,这使得很难分辨哪个描述与哪个布尔值匹配,因此基于此的奇怪问题。我用正确的解释更新了这个问题。

第一个选项 [ httpd_can_network_relay] 用于反向代理场景,其中您的 httpd 代表客户端将请求中继到某个后端 httpd。

第二个 [ httpd_can_network_connect] 允许 httpd 模块和脚本与与 httpd 服务关联的端口建立传出连接。要查看这些端口的列表,请运行semanage port -l | grep -w http_port_t

要使您的方案工作,您需要运行setsebool -P httpd_can_network_connect 1,然后通过运行此命令添加您的 httpd 应该能够连接的端口semanage port -a -t http_port_t -p tcp <PORT>