Hacker News Digest

18 августа 2025 г. в 04:57 • roguesecurity.dev • ⭐ 215 • 💬 80

OriginalHN

#systemd#security#linux#service#hardening

SystemD Service Hardening

systemd-харднинг: кратко и по делу

sudo systemd-analyze security показывает «красную» таблицу рисков.
sudo systemd-analyze security имя.service — детально по конкретному юниту.

Колонка Exposure — главный ориентир: чем выше значение, тем больше прав можно отнять.

Как править

  1. sudo systemctl edit имя.service создаст override-файл.
  2. Параметры пишутся в секции [Service] (или [Container] для quadlet).
  3. Сервис не стартует — значит убрал нужное, возвращай.

Часто используемые директивы

Директива Что делает
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.

Это не серебряная пуля; подгоняй под каждый сервис и смотри логи.