我正在为以下系统编写服务文件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
随后将允许的资源列入白名单之类的方法会很有趣。