|
@@ -0,0 +1,171 @@
|
|
|
|
|
+Интерактивный сценарий: «Аудит безопасности Linux — Hardening Challenge»
|
|
|
|
|
+
|
|
|
|
|
+Сцена 1. «Первое подключение после установки»
|
|
|
|
|
+Элементы:
|
|
|
|
|
+
|
|
|
|
|
+Терминал с приглашением root@secured-server:~#
|
|
|
|
|
+
|
|
|
|
|
+Панель подсказок (список действий)
|
|
|
|
|
+
|
|
|
|
|
+Действия:
|
|
|
|
|
+
|
|
|
|
|
+Ввести apt update && apt upgrade
|
|
|
|
|
+
|
|
|
|
|
+Ввести adduser admin
|
|
|
|
|
+
|
|
|
|
|
+Ввести usermod -aG sudo admin
|
|
|
|
|
+
|
|
|
|
|
+Проверить версию ядра uname -a
|
|
|
|
|
+
|
|
|
|
|
+Условия для продолжения:
|
|
|
|
|
+
|
|
|
|
|
+Система обновлена (команда выполнена успешно).
|
|
|
|
|
+
|
|
|
|
|
+Создан пользователь admin с правами sudo.
|
|
|
|
|
+
|
|
|
|
|
+Игрок должен не забыть выйти из root (exit) и зайти под admin.
|
|
|
|
|
+
|
|
|
|
|
+Если игрок пытается продолжить под root — появляется предупреждение «Небезопасно! Вход root запрещён по чеклисту».
|
|
|
|
|
+
|
|
|
|
|
+Сцена 2. «Настройка паролей и защиты от брутфорса»
|
|
|
|
|
+Элементы:
|
|
|
|
|
+
|
|
|
|
|
+Файл /etc/pam.d/common-password (Debian/Ubuntu) или /etc/security/pwquality.conf
|
|
|
|
|
+
|
|
|
|
|
+Конфиг fail2ban (/etc/fail2ban/jail.local)
|
|
|
|
|
+
|
|
|
|
|
+Текстовое поле для ввода команд
|
|
|
|
|
+
|
|
|
|
|
+Действия:
|
|
|
|
|
+
|
|
|
|
|
+Добавить в pwquality.conf строку minlen = 12 и difok = 3.
|
|
|
|
|
+
|
|
|
|
|
+Установить fail2ban командой apt install fail2ban.
|
|
|
|
|
+
|
|
|
|
|
+Включить защиту SSH: создать jail.local с секцией [sshd] enabled = true.
|
|
|
|
|
+
|
|
|
|
|
+Перезапустить fail2ban.
|
|
|
|
|
+
|
|
|
|
|
+Условия:
|
|
|
|
|
+
|
|
|
|
|
+Параметр minlen изменён и сохранён.
|
|
|
|
|
+
|
|
|
|
|
+fail2ban активен (systemctl is-active fail2ban возвращает active).
|
|
|
|
|
+
|
|
|
|
|
+Количество неудачных попыток входа установлено не более 5 за 10 минут (проверяется через fail2ban-client status sshd).
|
|
|
|
|
+
|
|
|
|
|
+Сцена 3. «Файрвол и закрытие портов»
|
|
|
|
|
+Элементы:
|
|
|
|
|
+
|
|
|
|
|
+Статус UFW (отключён)
|
|
|
|
|
+
|
|
|
|
|
+Список открытых портов (порт 22, 80, 443, 8080, 3306)
|
|
|
|
|
+
|
|
|
|
|
+Действия:
|
|
|
|
|
+
|
|
|
|
|
+Запретить все входящие соединения по умолчанию: ufw default deny incoming.
|
|
|
|
|
+
|
|
|
|
|
+Разрешить SSH: ufw allow 22/tcp.
|
|
|
|
|
+
|
|
|
|
|
+Разрешить HTTP/HTTPS: ufw allow 80/tcp и ufw allow 443/tcp.
|
|
|
|
|
+
|
|
|
|
|
+Закрыть ненужный порт 3306 (MySQL): ufw deny 3306.
|
|
|
|
|
+
|
|
|
|
|
+Включить UFW: ufw enable.
|
|
|
|
|
+
|
|
|
|
|
+Условия:
|
|
|
|
|
+
|
|
|
|
|
+ufw status verbose показывает Default: deny (incoming).
|
|
|
|
|
+
|
|
|
|
|
+Порт 3306 — закрыт.
|
|
|
|
|
+
|
|
|
|
|
+SSH доступен.
|
|
|
|
|
+
|
|
|
|
|
+Игрок не должен случайно заблокировать SSH (если попытается ufw deny 22 — игра выдаёт ошибку и просит разрешить сначала).
|
|
|
|
|
+
|
|
|
|
|
+Сцена 4. «Контроль целостности и аудит»
|
|
|
|
|
+Элементы:
|
|
|
|
|
+
|
|
|
|
|
+Установленный AIDE (но не инициализирован).
|
|
|
|
|
+
|
|
|
|
|
+Файл /etc/audit/rules.d/hardening.rules
|
|
|
|
|
+
|
|
|
|
|
+Действия:
|
|
|
|
|
+
|
|
|
|
|
+Инициализировать базу AIDE: aideinit (или aide -i).
|
|
|
|
|
+
|
|
|
|
|
+Переместить базу в рабочую директорию: mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz.
|
|
|
|
|
+
|
|
|
|
|
+Добавить правило аудита: auditctl -w /etc/passwd -p wa -k passwd_changes.
|
|
|
|
|
+
|
|
|
|
|
+Сделать правило постоянным, добавив строку в hardening.rules.
|
|
|
|
|
+
|
|
|
|
|
+Запустить проверку AIDE: aide --check.
|
|
|
|
|
+
|
|
|
|
|
+Условия:
|
|
|
|
|
+
|
|
|
|
|
+База AIDE создана и не повреждена.
|
|
|
|
|
+
|
|
|
|
|
+Аудит работает (auditctl -l показывает правило).
|
|
|
|
|
+
|
|
|
|
|
+При проверке AIDE нет критических изменений (игрок может смоделировать ошибку, если изменил что-то без регистрации, и должен откатить).
|
|
|
|
|
+
|
|
|
|
|
+Сцена 5. «Ограничение ресурсов и SELinux/AppArmor»
|
|
|
|
|
+Элементы:
|
|
|
|
|
+
|
|
|
|
|
+Статус AppArmor (aa-status)
|
|
|
|
|
+
|
|
|
|
|
+Файл /etc/security/limits.conf
|
|
|
|
|
+
|
|
|
|
|
+Действия:
|
|
|
|
|
+
|
|
|
|
|
+Включить AppArmor для всех профилей: aa-enforce /etc/apparmor.d/*.
|
|
|
|
|
+
|
|
|
|
|
+Установить лимит процессов для пользователя admin: в limits.conf добавить admin soft nproc 100 и admin hard nproc 150.
|
|
|
|
|
+
|
|
|
|
|
+Перезагрузить систему (симулировать кнопкой).
|
|
|
|
|
+
|
|
|
|
|
+Проверить, что лимиты применились: ulimit -u под admin.
|
|
|
|
|
+
|
|
|
|
|
+Условия:
|
|
|
|
|
+
|
|
|
|
|
+AppArmor находится в режиме enforce (команда aa-status показывает профили в режиме enforce).
|
|
|
|
|
+
|
|
|
|
|
+Лимит процессов для admin не превышает 150.
|
|
|
|
|
+
|
|
|
|
|
+Если игрок забыл перезагрузиться или не применил лимиты — игра не пропускает дальше.
|
|
|
|
|
+
|
|
|
|
|
+Сцена 6 (финальная). «Проверка чеклиста и отчёт»
|
|
|
|
|
+Элементы:
|
|
|
|
|
+
|
|
|
|
|
+Кнопка «Запустить финальную проверку»
|
|
|
|
|
+
|
|
|
|
|
+Лог-файл /var/log/hardening_report.log
|
|
|
|
|
+
|
|
|
|
|
+Действия:
|
|
|
|
|
+
|
|
|
|
|
+Нажать кнопку проверки.
|
|
|
|
|
+
|
|
|
|
|
+Игра анализирует:
|
|
|
|
|
+
|
|
|
|
|
+обновлена ли система,
|
|
|
|
|
+
|
|
|
|
|
+есть ли пользователь sudo,
|
|
|
|
|
+
|
|
|
|
|
+включён ли UFW,
|
|
|
|
|
+
|
|
|
|
|
+активен ли fail2ban,
|
|
|
|
|
+
|
|
|
|
|
+настроен ли AIDE и аудит,
|
|
|
|
|
+
|
|
|
|
|
+работают ли AppArmor и лимиты.
|
|
|
|
|
+
|
|
|
|
|
+Игрок может исправить пропущенные пункты.
|
|
|
|
|
+
|
|
|
|
|
+Условия завершения игры:
|
|
|
|
|
+
|
|
|
|
|
+Все 6 сценариев пройдены без ошибок.
|
|
|
|
|
+
|
|
|
|
|
+Итоговый отчёт содержит зелёную надпись «Сервер соответствует Hardening Checklist».
|
|
|
|
|
+
|
|
|
|
|
+Игрок получает звание «Security Auditor».
|