Я пишу служебный файл systemd для fai-monitor (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
было бы интересно с последующим внесением в белый список разрешенных ресурсов.