Шаг 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
Задача
lab-ticketsработает и включена: прежние заявки на месте, новая заявка (POST /tickets) сохраняется в/var/lib/tickets. Код приложения прежний.- Процесс службы работает не от root, без привилегий и с
NoNewPrivileges=yes. Ключ API может прочитать root и сама служба — больше никто. ProtectSystem=strict: служба не может писать в/etc,/usr,/var/lib,/var/logи/opt.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) — ещё не выполнена
Машина запускается
Подсказки
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) — ещё не выполнена
Цели проверяются на машине после каждой команды.