Certbot、HAProxy 和 SELinux 安全性

问题描述 投票:0回答:1

我已经从官方 Fedora 存储库安装了 haproxy 和 certbot。然后我将 certbot 配置为使用端口 380 通过 HAProxy 提供服务。

Certbot 命令:

certbot certonly --standalone --non-interactive --dry-run --staging --agree-tos -m [email protected] --preferred-challenges http-01 --http-01-port=380 --cert-name mydomain --domain mydomain 

我发现 certbot 命令(使用端口 80 而不是 380)本身可以正常工作。然后我尝试直接设置 HAProxy 在端口 80 上提供 LetsEncrypt 服务,结果与 503 类似。

问题是使用

setsebool -P haproxy_connect_any 1
是否有危险?谢谢

事实证明

setsebool -P haproxy_connect_any 1
命令将“修复”503 错误并允许 certbot 通过 haproxy 正常工作。实际上我怀疑我可能在其他端口上的其他 127.0.0.1 上也遇到过类似的问题。 日志中弹出以下 SELinux 错误:
type=AVC msg=audit(1709286088.992:15086): avc:  denied  { name_connect } for  pid=107707 comm="haproxy" dest=380 scontext=system_u:sys

对于 haproxy 配置,只需说它是 80 上的简单前端绑定和服务器为 127.0.0.1:380 的后端。没有其他配置选项以任何方式干扰。一直都是 SELinux。

haproxy certbot selinux
1个回答
0
投票

使用 certbot,您需要 haproxy 才能向 LetsEncrypt 服务器发送 http 请求,因此它需要比仅连接到本地主机更多的权限。

问题是使用setsebool -P haproxy_connect_any 1是否有危险?

$ sesearch -A | grep haproxy_connect_any
allow haproxy_t packet_type:packet recv; [ haproxy_connect_any ]:True
allow haproxy_t packet_type:packet send; [ haproxy_connect_any ]:True
allow haproxy_t port_type:tcp_socket name_bind; [ haproxy_connect_any ]:True
allow haproxy_t port_type:tcp_socket name_connect; [ haproxy_connect_any ]:True
allow haproxy_t port_type:tcp_socket { recv_msg send_msg }; [ haproxy_connect_any ]:True

这对于 HAProxy 要做的工作来说是可以的。 不过,如果您想更多地限制 HAProxy,以防此过程可能受到损害,您可以使用 dns 挑战来运行 certbot,这样它就不会以

haproxy_t
的方式运行,并且您也不需要
haproxy_connect_any

© www.soinside.com 2019 - 2024. All rights reserved.