SystemD Service Hardening
systemd-харднинг: кратко и по делу
sudo systemd-analyze security
показывает «красную» таблицу рисков.
sudo systemd-analyze security имя.service
— детально по конкретному юниту.
Колонка Exposure — главный ориентир: чем выше значение, тем больше прав можно отнять.
Как править
sudo systemctl edit имя.service
создаст override-файл.- Параметры пишутся в секции
[Service]
(или[Container]
для quadlet). - Сервис не стартует — значит убрал нужное, возвращай.
Часто используемые директивы
Директива | Что делает |
---|---|
NoNewPrivileges=true |
запрет setuid/setgid |
PrivateTmp=true |
изолированный /tmp |
ProtectSystem=strict |
корень только read-only |
ProtectHome=true |
/home , /root недоступны |
ReadWritePaths=/var/lib/app |
белый список для записи |
CapabilityBoundingSet=CAP_NET_BIND_SERVICE |
только нужные capability |
SystemCallFilter=@system-service |
разрешённый набор сисколлов |
RestrictAddressFamilies=AF_INET AF_INET6 |
только нужные семейства сокетов |
MemoryDenyWriteExecute=true |
блок W^X |
LockPersonality=true |
запрет смены personality() |
RestrictRealtime=true |
нельзя захватывать realtime-приоритеты |
UMask=0077 |
файлы создаются 600 |
RemoveIPC=true |
чистит SysV IPC при выходе |
Пример override
[Service]
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/myapp
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
SystemCallFilter=@system-service
RestrictAddressFamilies=AF_INET AF_INET6
MemoryDenyWriteExecute=true
LockPersonality=true
RestrictRealtime=true
UMask=0077
RemoveIPC=true
Проверь: sudo systemctl daemon-reload && sudo systemctl restart имя.service
.
Это не серебряная пуля; подгоняй под каждый сервис и смотри логи.
Комментарии (85)
- Предложена утилита shh, которая по логам strace автоматически подбирает параметры hardening для systemd-сервисов.
- Комментаторы отмечают, что дистрибутивы не включают жёсткие настройки по умолчанию: боятся сломать edge-case’ы и получить поток баг-репортов.
- Обсуждается идея общего репозитория с готовыми «жёсткими» unit-файлами для популярных сервисов.
- Утилита systemd-analyze security и встроенный механизм credentials systemd названы полезными инструментами повышения безопасности.
- Несколько человек поправили: правильное написание — «systemd», а не «SystemD».