将 systemd 服务的权限限制到最低限度

将 systemd 服务的权限限制到最低限度

我正在为以下系统编写服务文件fai-监视器 (8)。该守护进程监听单个端口,接收 TCP 连接,并将有趣的信息写入单个日志文件。

为了减少系统的攻击面,应以尽可能最小的权限运行服务。遵循强化 systemd 服务单元的选项,我想出了这个服务文件:

[Unit]
Description=FAI Monitor Daemon

[Service]
Type=simple
ExecStart=/usr/sbin/fai-monitor -l /run/fai-monitor/fai-monitor.log
DynamicUser=true
RuntimeDirectory=fai-monitor
RuntimeDirectoryMode=755

MemoryDenyWriteExecute=true
NoNewPrivileges=true
PrivateTmp=true
PrivateUsers=true
ProtectHome=true

ProtectSystem=strict
PrivateDevices=true
ProtectKernelTunables=true
ProtectControlGroups=true

RestrictAddressFamilies=AF_INET AF_INET6
RestrictRealtime=true

TasksMax=16
MemoryHigh=10M

SystemCallFilter=~@mount @debug @privileged

虽然这看起来相当严格,但服务文件相对冗长。

还有其他方法可以将服务限制为尽可能少的权限吗?特别是,RestrictEverything=true随后将允许的资源列入白名单之类的方法会很有趣。

相关内容