Linux Labs

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

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

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

Шаг 5 из 6 · лаба · 25 минсредняя

Служба может всё

Служба заявок техподдержки работает от root и без единого ограничения — перед проверкой безопасности это нужно исправить. Ограничь её средствами systemd так, чтобы она продолжала принимать и хранить заявки.

Ситуация

Служба lab-tickets — приложение tickets-api — принимает заявки техподдержки. Её юнит писали наспех: служба работает от root, и ничто не мешает ей делать всё, что может root. На следующей неделе — проверка безопасности, а systemd-analyze security lab-tickets.service сейчас ставит службе 9.6 UNSAFE.

Заявки лежат в /var/lib/tickets, ключ API — в /etc/tickets/api.key. Учётную запись tickets для службы завёл пакет, но в юнит её так и не вписали. Как обращаться к службе, написано в /usr/share/doc/tickets-api/README:

curl -s http://127.0.0.1:8097/health
key=$(sudo cat /etc/tickets/api.key)
curl -s -H "X-Api-Key: $key" http://127.0.0.1:8097/tickets

Задача

  1. lab-tickets работает и включена: прежние заявки на месте, новая заявка (POST /tickets) сохраняется в /var/lib/tickets. Код приложения прежний.
  2. Процесс службы работает не от root, без привилегий и с NoNewPrivileges=yes. Ключ API может прочитать root и сама служба — больше никто.
  3. ProtectSystem=strict: служба не может писать в /etc, /usr, /var/lib, /var/log и /opt.
  4. systemd-analyze security lab-tickets.service — не выше 4.9, оценка OK.

Интернета на машине нет, всё нужное уже установлено. Команды администратора запускай через sudo.

Лаба · самостоятельно

Команды в этой лабе не даны: набирай их в терминале сам. Цели проверяются на машине после каждой команды.

Цели

0 из 4
  • lab-tickets работает и включена, прежние заявки на месте, новая сохраняется в /var/lib/tickets; код приложения прежний — ещё не выполнена
  • Процесс службы не root, без привилегий и с NoNewPrivileges; ключ API не может прочитать посторонний пользователь — ещё не выполнена
  • ProtectSystem=strict действует — служба не пишет в /etc, /usr, /var/lib, /var/log и /opt — ещё не выполнена
  • systemd-analyze security lab-tickets.service — не выше 4.9 (оценка OK) — ещё не выполнена
Ctrl+Enter
Запустит машину node1 · Ubuntu 24.04

Машина запускается

Подсказки

0 из 3

Цели лабы

0 из 4
  • lab-tickets работает и включена, прежние заявки на месте, новая сохраняется в /var/lib/tickets; код приложения прежний — ещё не выполнена
  • Процесс службы не root, без привилегий и с NoNewPrivileges; ключ API не может прочитать посторонний пользователь — ещё не выполнена
  • ProtectSystem=strict действует — служба не пишет в /etc, /usr, /var/lib, /var/log и /opt — ещё не выполнена
  • systemd-analyze security lab-tickets.service — не выше 4.9 (оценка OK) — ещё не выполнена
node1 Ubuntu 24.04

Цели лабы

0 из 4
  • lab-tickets работает и включена, прежние заявки на месте, новая сохраняется в /var/lib/tickets; код приложения прежний — ещё не выполнена
  • Процесс службы не root, без привилегий и с NoNewPrivileges; ключ API не может прочитать посторонний пользователь — ещё не выполнена
  • ProtectSystem=strict действует — служба не пишет в /etc, /usr, /var/lib, /var/log и /opt — ещё не выполнена
  • systemd-analyze security lab-tickets.service — не выше 4.9 (оценка OK) — ещё не выполнена
Загрузка…