Ситуация
node1 — новый сервер заявок helpdesk: на порту 80 стоит nginx, за ним приложение — служба
lab-helpdesk. Сервер вот-вот откроют для всей сети, но проверка безопасности завернула его и
прислала список замечаний:
- вход по SSH пускают по паролю;
- на сервер пускают root;
- из сети видны лишние порты, помимо сайта;
- защиты от перебора паролей нет;
- служба приложения работает от root без каких-либо ограничений.
node1 — твой терминал. node2 — рабочая машина администратора в той же сети; с неё на node1 ходят по
ключу. Команды на node2 выполняй через SSH: ssh node2 'команда' или войди в оболочку — ssh node2,
назад — exit. sudo на обеих машинах работает без пароля. Другого входа на node2 нет: не закрой
себе SSH и не трогай его настройки.
Задача
- Вход по SSH на node1 — только по ключу: учётная запись
studentвходит с node2 своим ключом, а пароль сервер больше не предлагает. - Root по SSH на node1 не входит — даже с ключом, который работал раньше, — и пароль ему не предлагается.
- Из сети на node1 открыты только порты
22и80; порты8000и8080закрыты. Правила остаются и после перезагрузки node1. - Перебор паролей по SSH ловится:
fail2banработает, запускается сам и следит за входами — jailsshdактивен и умеет банить. - Служба
lab-helpdeskработает не от root и ограничена средствами systemd (как минимумNoNewPrivilegesиProtectSystem), так чтоsystemd-analyze security lab-helpdesk.serviceдаёт оценку ниже 6.0. При этом сайт по-прежнему отвечает:curl http://localhost/на node1 возвращает список заявок.
Ограничения
- Меняй только node1. Настройки SSH, ключи и службы на node2 не трогай.
- Правила межсетевого экрана и настройки служб должны пережить перезагрузку: храни их в файлах
(
/etc/...): живое состояние перезагрузку не переживёт. - Доступ администратора с node2 по ключу должен сохраниться — и для
student, и после всех правок.
Интернета в лабе нет — только сеть между node1 и node2, всё нужное установлено. Иди по списку замечаний: какие порты слушают службы —
sudo ss -tlnp; что видно с node2 — проверяй прямо оттуда. После каждой правки перечитывай состояние:sudo systemd-analyze security lab-helpdesk.service,sudo fail2ban-client status sshd,sudo nft list ruleset.
Цели лабы
0 из 5-
С node2 вход на node1 — только по ключу (student входит своим ключом, пароль сервер не предлагает) — ещё не проверялась
-
Root по SSH на node1 не входит даже с прежде рабочим ключом, и пароль ему не предлагается — ещё не проверялась
-
С node2 на node1 открыты только 22 и 80, а 8000 и 8080 закрыты — и правила переживают перезагрузку — ещё не проверялась
-
fail2ban работает, запускается сам и следит за входами по SSH — jail sshd активен с действием бана — ещё не проверялась
-
Служба lab-helpdesk отвечает, работает не от root и ограничена (NoNewPrivileges, ProtectSystem), systemd-analyze security — ниже порога — ещё не проверялась