Linux Labs

Безопасность сервера / Ступень 7 из 10

Служба с минимальными правами

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 6 · на машине · 7 мин

Оценка и возможности

Насколько служба ограничена, не держат в голове — это считает systemd.

systemd-analyze security <юнит> проходит по настройкам службы и ставит оценку от 0 до 10: чем меньше, тем больше ограничений. Без User= и защит оценка у службы около 9.6 и пометка UNSAFE; строки из прошлых шагов её снижают. Ключ --threshold=N добавляет к оценке проверку: код выхода не ноль, если оценка выше порога. Порог пишут в десятых долях — оценка 9.6 это 96, а --threshold=50 пропускает службы с оценкой до 5.0 (в Вики). Так проверку ставят в скрипт.

У root одна общая власть, но её можно раздать по частям — это возможности (capabilities). Служба, которой нужен только порт ниже 1024, получает одну возможность CAP_NET_BIND_SERVICE вместо прав root:

ini
[Service]
User=gate
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE

AmbientCapabilities выдаёт возможность процессу, CapabilityBoundingSet оставляет только её в списке допустимых — остального у службы нет, даже если она попросит.

Упражнение · сделать

Сними root со службы на порту 81

Служба lab-gate отвечает «gate: ok» на http://127.0.0.1:81/ и работает от root только ради порта ниже 1024. Запись gate уже заведена. Переведи службу на пользователя gate и выдай ей одну возможность, чтобы она по-прежнему открывала порт 81: процесс службы не должен быть root, а страница — отвечать.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Увести службу с root на пользователя gate ещё не выполнена
  • Оставить службе доступ к порту 81 ещё не выполнена

Цели шага

0 из 2
  • Увести службу с root на пользователя gate — ещё не выполнена
  • Оставить службе доступ к порту 81 — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Увести службу с root на пользователя gate — ещё не выполнена
  • Оставить службе доступ к порту 81 — ещё не выполнена
Загрузка…