带有 SELinux、systemd 和 stunnel 的 CentOS

带有 SELinux、systemd 和 stunnel 的 CentOS

我正在使用带有 stunnel 的 CentOS 7.3。如果我像这样启动 stunnel:

stunnel /etc/stunnel/stunnel.conf

一切正常!

我想使用 systemd 来管理 stunnel。这是我的 stunnel.service :

[Unit]
Description=SSL tunnel for network daemons
Documentation=man:stunnel https://www.stunnel.org/docs.html
DefaultDependencies=no
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=stunnel.target

[Service]
Type=forking
EnvironmentFile=-/etc/stunnel/stunnel.conf
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
ExecStop=/usr/bin/killall -9 stunnel
RemainAfterExit=yes

还有我的 stunnel.conf:

cert = /etc/stunnel/ssl/stunnel.crt
chroot = /var/chroot/stunnel
setuid = stunnel
setgid = stunnel
pid = /stunnel.pid
[https]
accept = 443
connect = 80

问题是:如果 chroot 是 /var/chroot/stunnel (目录和权限都没有问题!),当我执行以下操作时,SELinux 会阻止 PID 的创建:

systemctl start stunnel

在我的 /var/log/secure 中我得到了:

Feb 20 15:12:11 kickstart stunnel: LOG3[2505:140354907637824]: Cannot create pid file /stunnel.pid
Feb 20 15:12:11 kickstart stunnel: LOG3[2505:140354907637824]: create: Permission denied (13)

如果我使用 /var/run/stunnel/ 更改 CHROOT 目录,它就会起作用!SELinux 不会阻止创建 stunnel PID。但是,如果我重新启动,/var/run/stunnel 目录就会被删除!

不禁用 SELinux 的情况下,使用 systemd 管理 stunnel 的最佳方法是什么?也许可以更改一些 SELinux 配置?

谢谢你,

答案1

您应该将其添加RuntimeDirectory=stunnel到服务文件的“服务”部分。这将为您创建目录。

相关内容