Практикум: Управление рисками ИБ с Open-source (GLPI + Eramba + Threat Dragon)
- Часть 1. Введение и архитектура решения
- Часть 2. Установка и настройка GLPI (инвентаризация активов)
- Часть 3. Установка и настройка Eramba (управление рисками)
- Часть 4. Моделирование угроз с OWASP Threat Dragon
- Часть 5. Интеграция и автоматизация
- Часть 6. Документирование и соответствие ФСТЭК
- Часть 7. Заключение и дальнейшие шаги
О чем этот практикум
В предыдущих курсах мы разбирали методологию RA и BIA по ФСТЭК и сравнивали коммерческие и open-source решения. Теперь пришло время практики. Мы возьмем связку из трех мощных open-source инструментов и настроим их для решения полного цикла задач управления рисками ИБ:
- GLPI — инвентаризация активов (то, что мы защищаем)
- Eramba — управление рисками, compliance и политиками (оценка и обработка рисков)
- OWASP Threat Dragon — моделирование угроз и построение диаграмм (визуализация сценариев)
Это идеальный стек для небольших проектов, стартапов, учебных целей или для тех, кто хочет “потрогать руками” GRC-процессы перед покупкой дорогих коммерческих решений.
Часть 1. Введение и архитектура решения
1.1 Что мы будем строить?
Мы создадим интегрированную систему управления рисками ИБ, где данные будут перетекать из одного инструмента в другой:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ GLPI │────▶│ Eramba │◀────│ Threat Dragon │
│ Инвентаризация │ │ Оценка рисков │ │ Модели угроз │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌───────────────────────────────────────────────────────────┐
│ Итоговая документация │
│ • Реестр активов • Реестр рисков │
│ • Модель угроз • План обработки рисков │
│ • Отчеты для руководства │
└───────────────────────────────────────────────────────────┘1.2 Что мы получим на выходе
По итогам прохождения курса у вас будет:
- Работающая инвентаризационная система (GLPI) со всеми активами компании
- GRC-платформа (Eramba) с заполненными реестрами рисков, политиками и планами обработки
- Библиотека моделей угроз (Threat Dragon) для критичных систем
- Понимание, как эти данные связать в единый процесс
- Готовые шаблоны документов для отчетности
1.3 Требования к системе
Для прохождения практикума вам потребуется:
- Linux-сервер (Ubuntu 20.04/22.04 рекомендуется) или возможность запустить Docker
- Минимум 4 ГБ RAM и 20 ГБ диска
- Docker и Docker Compose (для быстрой установки)
- Базовые навыки работы с командной строкой
- Браузер для доступа к веб-интерфейсам
Часть 2. Установка и настройка GLPI (инвентаризация активов)
GLPI (Gestionnaire Libre de Parc Informatique) — это мощная система управления активами и сервис-деск. Она станет нашей базой данных обо всем оборудовании и ПО.
2.1 Установка GLPI через Docker (быстрый старт)
Самый простой способ развернуть GLPI — использовать готовый Docker-образ.
Шаг 1. Создайте директорию для проекта
mkdir ~/risk-management-lab
cd ~/risk-management-lab
mkdir glpi-data mysql-dataШаг 2. Создайте docker-compose.yml
version: '3'
services:
mysql:
image: mysql:5.7
container_name: glpi-mysql
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: glpi
MYSQL_USER: glpi
MYSQL_PASSWORD: glpipassword
volumes:
- ./mysql-data:/var/lib/mysql
restart: unless-stopped
glpi:
image: diouxx/glpi
container_name: glpi-app
ports:
- "8080:80"
volumes:
- ./glpi-data:/var/www/html/glpi
environment:
- TIMEZONE=Europe/Moscow
depends_on:
- mysql
restart: unless-stoppedШаг 3. Запустите контейнеры
docker-compose up -dШаг 4. Проверьте установку
Откройте браузер и перейдите по адресу: http://ваш-сервер:8080
Вы должны увидеть страницу установки GLPI.
2.2 Первоначальная настройка GLPI
Шаг 1. Пройдите мастер установки
- Выберите язык: Русский
- Примите лицензию
- На шаге подключения к БД укажите:
- Сервер БД:
mysql(имя сервиса в docker-compose) - Пользователь:
glpi - Пароль:
glpipassword - База данных:
glpi
- Сервер БД:
Шаг 2. Войдите в систему
- Логин: glpi
- Пароль: glpi
Важно: Сразу смените пароль администратора!
Шаг 3. Настройте русский язык интерфейса
- Нажмите на аватар в правом верхнем углу → Настройки профиля
- В разделе Настройки отображения выберите язык Русский
2.3 Инвентаризация активов (заполняем базу)
Шаг 1. Создайте структуру компании
Перейдите в раздел Управление → Местоположения
Добавьте:
- Главный офис
- Серверная
- Этаж 1, Этаж 2 (как дочерние)
Перейдите в раздел Управление → Подразделения
Добавьте:
- IT-отдел
- Бухгалтерия
- Отдел продаж
Шаг 2. Добавьте сотрудников
Раздел Управление → Пользователи → Добавить:
- Иванов Иван (IT-отдел)
- Петрова Анна (Бухгалтерия)
- Сидоров Петр (Отдел продаж)
Шаг 3. Добавьте компьютеры и серверы
Раздел Активы → Компьютеры → Добавить:
Пример для сервера БД:
- Название: SRV-DB-01
- Серийный номер: VMX123456
- Тип: Сервер
- Местоположение: Серверная
- Пользователь: (оставить пустым, т.к. это сервер)
- Группа: IT-отдел
- ОС: Ubuntu 22.04 LTS
- В памяти: 32 ГБ
- Процессор: 8 vCPU
Пример для рабочей станции бухгалтера:
- Название: WS-ACC-01
- Тип: Рабочая станция
- Местоположение: Этаж 1
- Пользователь: Петрова Анна
- ОС: Windows 10 Pro
Шаг 4. Добавьте сетевое оборудование
Раздел Активы → Сетевое оборудование → Добавить:
- Название: SW-CORE-01
- Тип: Коммутатор
- Модель: Cisco Catalyst 3750
- Местоположение: Серверная
Шаг 5. Добавьте программное обеспечение
Раздел Активы → Программное обеспечение → Добавить:
- Название: PostgreSQL
- Категория: СУБД
- Версия: 14
- Лицензия: (укажите номер, если есть)
Шаг 6. Свяжите ПО с компьютерами
Зайдите в карточку сервера SRV-DB-01, вкладка Программное обеспечение → Добавить существующее ПО → выберите PostgreSQL.
2.4 Создание кастомных полей для ИБ
Для интеграции с риск-менеджментом нам нужны дополнительные атрибуты активов.
Шаг 1. Установите плагин “Fields”
- Скачайте плагин: https://github.com/pluginsGLPI/fields/releases
- Распакуйте в
/var/www/html/glpi/plugins/fields - В GLPI перейдите Настройки → Плагины → установите и активируйте Fields
Шаг 2. Создайте дополнительные поля
В Настройки → Дополнительные поля создайте:
Критичность актива (для компьютеров и серверов):
- Тип: Выпадающий список
- Значения: Низкая, Средняя, Высокая, Критическая
Категория обрабатываемых данных (для компьютеров):
- Тип: Множественный выбор
- Значения: ПДн, Коммерческая тайна, Финансовая информация, Общедоступная
Владелец процесса (для компьютеров):
- Тип: Связь с пользователями
Шаг 3. Заполните новые поля для критичных активов
Для SRV-DB-01:
- Критичность: Критическая
- Категория данных: ПДн, Финансовая информация
- Владелец процесса: Иванов Иван
Часть 3. Установка и настройка Eramba (управление рисками)
Eramba — это open-source GRC-платформа, которая позволяет вести реестры рисков, активов, политик и контролей.
3.1 Установка Eramba через Docker
Шаг 1. Создайте директорию и файл docker-compose.yml
cd ~/risk-management-lab
cat > eramba-docker-compose.yml << 'EOF'
version: '3'
services:
eramba-db:
image: mysql:5.7
container_name: eramba-mysql
environment:
MYSQL_ROOT_PASSWORD: erambaroot
MYSQL_DATABASE: eramba
MYSQL_USER: eramba
MYSQL_PASSWORD: erambapass
volumes:
- ./eramba-mysql:/var/lib/mysql
restart: unless-stopped
eramba-app:
image: eramba/eramba:latest
container_name: eramba-app
ports:
- "8081:80"
environment:
DB_HOST: eramba-db
DB_USER: eramba
DB_PASSWORD: erambapass
DB_NAME: eramba
depends_on:
- eramba-db
restart: unless-stopped
EOFШаг 2. Запустите Eramba
docker-compose -f eramba-docker-compose.yml up -dШаг 3. Выполните первоначальную настройку
Откройте браузер: http://ваш-сервер:8081
Мастер установки предложит:
- Создать базу данных (нажмите “Install”)
- Создать администратора
- Логин/пароль по умолчанию: admin / admin (смените сразу!)
3.2 Базовая настройка Eramba
Шаг 1. Настройте русский язык
- Перейдите в Admin → System → Languages
- Найдите Russian и активируйте
- В профиле пользователя смените язык на Russian
Шаг 2. Настройте методологию оценки рисков
Перейдите в Admin → Risk Management → Risk Appetites / Methodologies
Создайте методологию “Базовая (по ФСТЭК)”:
- Шкала вероятности: 1-5 (Очень низкая - Очень высокая)
- Шкала влияния: 1-5 (Очень низкое - Очень высокое)
- Матрица рисков: 5x5
Шаг 3. Импортируйте GLPI-активы (ручной перенос)
К сожалению, прямой интеграции GLPI и Eramba нет. Но мы можем экспортировать данные из GLPI в CSV и импортировать в Eramba.
- В GLPI перейдите Активы → Компьютеры → Экспорт в CSV
- В Eramba перейдите Assets → Assets → Import
- Загрузите CSV и сопоставьте поля
Альтернатива: Создадим активы вручную для критичных систем.
В Eramba создайте:
- SRV-DB-01 (Asset type: IT Infrastructure)
- WS-ACC-01
- SW-CORE-01
- CRM System (Asset type: Business Process)
3.3 Создание реестра рисков
Шаг 1. Создайте категории рисков
Admin → Risk Management → Risk Categories
- ИБ-риски (Information Security)
- Операционные риски
- Риски непрерывности бизнеса
- Комплаенс-риски
Шаг 2. Добавьте первый риск
Перейдите в Risks → Risks → New Risk
Пример риска:
| Поле | Значение |
|---|---|
| Название | Утечка ПДн из БД клиентов |
| Категория | ИБ-риски |
| Активы | SRV-DB-01, CRM System |
| Описание | Несанкционированный доступ к базе данных с персональными данными клиентов |
| Угроза | Компрометация учетных данных администратора, эксплуатация уязвимостей СУБД |
| Уязвимость | Отсутствие двухфакторной аутентификации, несвоевременное обновление патчей |
| Существующие контроли | Межсетевой экран, антивирус |
| Вероятность (Inherent) | 4 (Высокая) |
| Влияние (Inherent) | 5 (Очень высокое) |
| Уровень риска (Inherent) | 20 (Критический) |
Шаг 3. Оцените риск с учетом контролей
Вкладка Residual Risk:
- Вероятность (Residual): 3 (Средняя)
- Влияние (Residual): 4 (Высокое)
- Уровень риска (Residual): 12 (Высокий)
3.4 Планирование обработки рисков
Шаг 1. Создайте план обработки
В карточке риска перейдите на вкладку Mitigation → Add Mitigation
| Поле | Значение |
|---|---|
| Название | Внедрение двухфакторной аутентификации |
| Тип | Снижение |
| Описание | Настроить 2FA для всех администраторов БД |
| Ответственный | Иванов Иван |
| Срок | 31.12.2026 |
| Стоимость | 50 000 руб. |
| Статус | В работе |
Шаг 2. Создайте контроль (policy)
Перейдите в Compliance → Policies → New Policy
Пример политики:
| Поле | Значение |
|---|---|
| Название | Политика управления доступом |
| Номер | P-01 |
| Версия | 1.0 |
| Описание | Правила предоставления и отзыва доступа к информационным системам |
| Ответственный | Иванов Иван |
| Дата утверждения | 01.01.2026 |
| Дата следующего обзора | 01.01.2027 |
Шаг 3. Свяжите контроль с риском
В карточке риска, в разделе Controls → Link Control → выберите созданную политику
Часть 4. Моделирование угроз с OWASP Threat Dragon
Threat Dragon — это бесплатный инструмент для построения диаграмм потоков данных и моделирования угроз по методологии STRIDE.
4.1 Установка Threat Dragon (десктопная версия)
Для небольших проектов проще использовать десктопную версию.
Шаг 1. Скачайте и установите
- Перейдите на https://threatdragon.org/
- Скачайте версию для вашей ОС (Windows, macOS, Linux)
- Установите и запустите
Альтернатива: Веб-версия https://threatdragon.org/ (но данные хранятся локально в браузере)
4.2 Создание модели угроз для критичного актива
Шаг 1. Создайте новый проект
- File → New Project
- Название: “Модель угроз CRM-системы”
- Описание: “Анализ угроз для системы, обрабатывающей ПДн”
Шаг 2. Постройте диаграмму потоков данных (DFD)
Используя элементы из панели слева, постройте архитектуру:
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Клиент │────▶│ Веб- │────▶│ Сервер │
│ (Браузер) │◀────│ сервер │◀────│ БД │
└───────────┘ └───────────┘ └───────────┘
│
▼
┌──────────────┐
│ Администратор│
└──────────────┘Добавьте элементы:
- Process (круг): “Веб-сервер (Apache)”
- Process (круг): “Сервер БД (PostgreSQL)”
- External Entity (прямоугольник): “Клиент”
- External Entity: “Администратор”
- Data Store (две линии): “База данных ПДн”
- Data Flow (стрелки): Соедините элементы
Шаг 3. Добавьте границы доверия
Нарисуйте пунктирные линии, разделяющие:
- Внешнюю сеть (Интернет)
- DMZ
- Внутреннюю сеть
4.3 Генерация угроз по STRIDE
Шаг 1. Выберите элемент для анализа
Кликните на элемент “Сервер БД” → в правой панели нажмите “Threats”
Шаг 2. Создайте угрозу вручную (или автоматически)
Автоматическая генерация доступна по кнопке “Generate” (но лучше добавлять вручную, глубже анализируя).
Добавьте угрозы для сервера БД:
| STRIDE-категория | Угроза | Описание |
|---|---|---|
| Spoofing (Подмена) | Несанкционированный доступ к БД | Злоумышленник может подменить легитимного администратора и получить доступ к данным |
| Tampering (Изменение) | Модификация данных | Изменение записей в БД через SQL-инъекцию |
| Repudiation (Отказ) | Отказ от действий | Администратор может отрицать факт внесения изменений (нет аудита) |
| Information Disclosure (Разглашение) | Утечка ПДн | Перехват трафика между веб-сервером и БД |
| Denial of Service (DoS) | Отказ в обслуживании | DDoS-атака на БД или веб-сервер |
| Elevation of Privilege (Повышение привилегий) | Получение прав root | Эксплуатация уязвимости в СУБД для выполнения кода на сервере |
Шаг 3. Документирование угрозы
Для каждой угрозы заполните:
| Поле | Пример |
|---|---|
| Название | SQL-инъекция в веб-форме |
| Описание | Недостаточная фильтрация ввода в форме поиска |
| Тип | Tampering / Information Disclosure |
| Скоринг (DREAD) | Damage: 10, Reproducibility: 8, Exploitability: 7, Affected Users: 9, Discoverability: 6 |
| Score | 8.0 (High) |
| Mitigation | Использовать параметризованные запросы, WAF |
| Status | Open |
Шаг 4. Экспортируйте модель угроз
- File → Export → As JSON (для сохранения)
- File → Export → As PDF/PNG (для отчета)
4.4 Связываем с Eramba
Теперь нужно перенести выявленные угрозы в Eramba как новые риски.
- Откройте Eramba
- Risks → Risks → New Risk
- Заполните на основе данных из Threat Dragon:
| Поле в Eramba | Данные из Threat Dragon |
|---|---|
| Название | SQL-инъекция в CRM |
| Активы | SRV-DB-01, Веб-сервер |
| Описание | (копировать описание из угрозы) |
| Угроза | SQL Injection |
| Категория | ИБ-риски |
| Вероятность | (оценить на основе DREAD: 7-8 = Высокая) |
| Влияние | (9-10 = Очень высокое) |
Часть 5. Интеграция и автоматизация
5.1 Экспорт данных из GLPI в Eramba (полуавтоматический)
Поскольку прямой интеграции нет, настроим регулярный экспорт/импорт.
Шаг 1. Создайте скрипт экспорта из GLPI
cd ~/risk-management-lab
cat > export_glpi_to_eramba.sh << 'EOF'
#!/bin/bash
# Параметры подключения к MySQL GLPI
MYSQL_HOST="localhost"
MYSQL_USER="glpi"
MYSQL_PASS="glpipassword"
MYSQL_DB="glpi"
# Экспорт компьютеров в CSV
mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASS $MYSQL_DB -e "
SELECT
glpi_computers.name AS 'Asset Name',
glpi_computers.serial AS 'Serial Number',
glpi_locations.name AS 'Location',
glpi_computertypes.name AS 'Type',
glpi_computers.comment AS 'Description'
FROM glpi_computers
LEFT JOIN glpi_locations ON glpi_computers.locations_id = glpi_locations.id
LEFT JOIN glpi_computertypes ON glpi_computers.computertypes_id = glpi_computertypes.id
" > /tmp/glpi_assets.csv
echo "Export completed: /tmp/glpi_assets.csv"
EOF
chmod +x export_glpi_to_eramba.shШаг 2. Импортируйте в Eramba
- В Eramba: Assets → Assets → Import
- Загрузите
/tmp/glpi_assets.csv - Сопоставьте колонки
5.2 Создание дашборда для руководства
Шаг 1. Настройте отчеты в Eramba
Reports → Report Templates → New Report
Создайте отчет “Топ-10 рисков для руководства”:
| Раздел | Содержимое |
|---|---|
| Заголовок | Отчет по управлению рисками ИБ |
| Дата | {current_date} |
| Риски | Список рисков с уровнем “Критический” и “Высокий” |
| Прогресс | Количество рисков в работе / обработанных |
| График | Матрица рисков (тепловая карта) |
Шаг 2. Экспортируйте в PDF
Reports → Run Reports → выберите отчет → Export to PDF
5.3 Полный цикл: от актива до плана обработки
Давайте проследим полный путь для одного инцидента:
| Этап | Инструмент | Действие |
|---|---|---|
| 1 | GLPI | Обнаружен новый сервер (инвентаризация) |
| 2 | GLPI | Назначена критичность: Высокая, владелец: Иванов |
| 3 | Threat Dragon | Построена модель угроз для сервера |
| 4 | Threat Dragon | Выявлена угроза “Отсутствие резервного копирования” |
| 5 | Eramba | Создан риск “Потеря данных из-за отсутствия бэкапов” |
| 6 | Eramba | Оценен риск: Вероятность 4, Влияние 5 (Критический) |
| 7 | Eramba | Создан план обработки: “Настроить ежедневное резервное копирование” |
| 8 | Eramba | Назначен ответственный и срок |
| 9 | (Выполнение) | Администратор настраивает бэкапы |
| 10 | Eramba | Статус риска меняется на “Обработан”, остаточный риск пересчитан |
Часть 6. Документирование и соответствие ФСТЭК
6.1 Генерация модели угроз по методике ФСТЭК
Используя данные из всех трех систем, мы можем сформировать документ, соответствующий Приложению 3 методики ФСТЭК.
Шаблон документа “Модель угроз безопасности информации”
# МОДЕЛЬ УГРОЗ БЕЗОПАСНОСТИ ИНФОРМАЦИИ
## 1. Общие положения
- Назначение: [из Threat Dragon Project Description]
- Нормативная база: Методика ФСТЭК России от 2021 г.
## 2. Описание систем и сетей
- Состав активов: [из GLPI]
- Архитектура: [диаграмма из Threat Dragon]
- Группы пользователей: [из GLPI]
## 3. Возможные негативные последствия
- У2. Риски юридическому лицу: [из Eramba]
- Потеря денежных средств
- Потеря клиентов
- Нарушение деловой репутации
## 4. Возможные объекты воздействия
- Сервер БД (SRV-DB-01) - из GLPI
- Рабочая станция бухгалтера - из GLPI
- CRM-система - из Eramba
## 5. Источники угроз
- Нарушитель Н2 (преступная группа) - цель: финансовая выгода
- Нарушитель Н1 (обиженный сотрудник) - цель: месть
## 6. Способы реализации
- Использование уязвимостей веб-приложений (SQLi)
- Компрометация учетных данных
- Внедрение ВПО через фишинг
## 7. Актуальные угрозы и сценарии
| Угроза | Сценарий (тактики из Прил. 11) | Риск (из Eramba) |
|:-------|:--------------------------------|:------------------|
| Утечка ПДн | Т1.4 → Т2.11 → Т3.5 → Т9.3 | Критический (20) |
| Отказ в обслуживании | Т1.4 → Т2.5 → Т8.2 → Т10.10 | Высокий (15) |6.2 Автоматизация генерации отчетов с Python
Создадим скрипт, который собирает данные из всех систем и формирует итоговый отчет.
cd ~/risk-management-lab
cat > generate_report.py << 'EOF'
#!/usr/bin/env python3
"""
Скрипт для генерации отчета по модели угроз
Собирает данные из GLPI (MySQL), Eramba (MySQL) и Threat Dragon (JSON)
"""
import mysql.connector
import json
import datetime
from pathlib import Path
# Конфигурация подключений
GLPI_CONFIG = {
'host': 'localhost',
'user': 'glpi',
'password': 'glpipassword',
'database': 'glpi'
}
ERAMBA_CONFIG = {
'host': 'localhost',
'user': 'eramba',
'password': 'erambapass',
'database': 'eramba'
}
def get_glpi_assets():
"""Получение списка активов из GLPI"""
conn = mysql.connector.connect(**GLPI_CONFIG)
cursor = conn.cursor(dictionary=True)
cursor.execute("""
SELECT c.name, c.serial, l.name as location, ct.name as type
FROM glpi_computers c
LEFT JOIN glpi_locations l ON c.locations_id = l.id
LEFT JOIN glpi_computertypes ct ON c.computertypes_id = ct.id
WHERE c.is_deleted = 0
""")
assets = cursor.fetchall()
conn.close()
return assets
def get_eramba_risks():
"""Получение списка рисков из Eramba"""
conn = mysql.connector.connect(**ERAMBA_CONFIG)
cursor = conn.cursor(dictionary=True)
cursor.execute("""
SELECT title, description, inherent_score
FROM risks
WHERE risk_status != 'closed'
""")
risks = cursor.fetchall()
conn.close()
return risks
def load_threat_model(path='threat-model.json'):
"""Загрузка модели угроз из Threat Dragon"""
if Path(path).exists():
with open(path, 'r') as f:
return json.load(f)
return None
def generate_html_report(assets, risks, threat_model):
"""Генерация HTML-отчета"""
html = f"""
<!DOCTYPE html>
<html>
<head>
<title>Модель угроз безопасности информации</title>
<style>
body {{ font-family: Arial; margin: 40px; }}
h1 {{ color: #333; }}
table {{ border-collapse: collapse; width: 100%; }}
th, td {{ border: 1px solid #ddd; padding: 8px; text-align: left; }}
th {{ background-color: #f2f2f2; }}
.critical {{ background-color: #ffcccc; }}
.high {{ background-color: #fff0cc; }}
</style>
</head>
<body>
<h1>Модель угроз безопасности информации</h1>
<p>Дата генерации: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M')}</p>
<h2>1. Перечень активов (из GLPI)</h2>
<table>
<tr>
<th>Название</th>
<th>Серийный номер</th>
<th>Местоположение</th>
<th>Тип</th>
</tr>
"""
for asset in assets:
html += f"""
<tr>
<td>{asset.get('name', '')}</td>
<td>{asset.get('serial', '')}</td>
<td>{asset.get('location', '')}</td>
<td>{asset.get('type', '')}</td>
</tr>
"""
html += """
</table>
<h2>2. Реестр рисков (из Eramba)</h2>
<table>
<tr>
<th>Риск</th>
<th>Описание</th>
<th>Уровень</th>
</tr>
"""
for risk in risks:
score = risk.get('inherent_score', 0)
css_class = 'critical' if score >= 20 else 'high' if score >= 15 else ''
html += f"""
<tr class="{css_class}">
<td>{risk.get('title', '')}</td>
<td>{risk.get('description', '')}</td>
<td>{score}</td>
</tr>
"""
html += """
</table>
<h2>3. Модель угроз (из Threat Dragon)</h2>
"""
if threat_model:
html += f"""
<p>Проект: {threat_model.get('name', '')}</p>
<p>Описание: {threat_model.get('description', '')}</p>
"""
else:
html += "<p>Модель угроз не загружена</p>"
html += """
</body>
</html>
"""
return html
if __name__ == "__main__":
assets = get_glpi_assets()
risks = get_eramba_risks()
threat_model = load_threat_model()
report = generate_html_report(assets, risks, threat_model)
with open('report.html', 'w') as f:
f.write(report)
print("Отчет сгенерирован: report.html")
EOF
chmod +x generate_report.pyЗапустите скрипт:
python3 generate_report.pyЧасть 7. Заключение и дальнейшие шаги
7.1 Что мы построили
Мы успешно развернули и настроили полный цикл управления рисками ИБ:
| Компонент | Функция | Статус |
|---|---|---|
| GLPI | Инвентаризация активов | ✅ Работает, активы загружены |
| Eramba | GRC, риски, контроли, планы | ✅ Работает, риски оценены |
| Threat Dragon | Моделирование угроз | ✅ Работает, диаграммы построены |
| Интеграция | Экспорт/импорт, отчетность | ✅ Скрипты готовы |
7.2 Преимущества этого стека
- Полностью бесплатно — нет лицензионных отчислений
- Open-source — полный контроль над кодом и данными
- Гибкость — можно дорабатывать под свои нужды
- Соответствие методологии — покрывает все этапы RA и BIA
- Масштабируемость — от 10 до 1000+ активов
7.3 Ограничения и как их обойти
| Ограничение | Решение |
|---|---|
| Нет готовой интеграции GLPI ↔ Eramba | Использовать CSV-экспорты или написать API-мост |
| Threat Dragon не хранит историю | Хранить JSON-файлы в Git-репозитории |
| Eramba не имеет русского интерфейса полностью | Перевести вручную или использовать английский |
| Нет встроенного сканера уязвимостей | Добавить OpenVAS в стек |
7.4 Дальнейшее развитие системы
Вариант 1: Добавить сканер уязвимостей
- Установите OpenVAS или Greenbone
- Настройте регулярное сканирование
- Импортируйте результаты в Eramba как новые риски
Вариант 2: Внедрить SIEM
- Добавьте Wazuh (open-source SIEM)
- Собирайте логи с активов из GLPI
- Коррелируйте события с рисками из Eramba
Вариант 3: Автоматизировать compliance
- Настройте Osquery для сбора конфигураций
- Проверяйте соответствие политикам из Eramba
Вариант 4: Перейти на Kubernetes
- Упакуйте все сервисы в Helm-чарты
- Разверните в production-окружении
Практическое задание
- Разверните все три системы по инструкции
- Добавьте в GLPI минимум 10 активов (компьютеры, серверы, сетевое оборудование)
- Создайте в Eramba 5 рисков, связанных с этими активами
- Постройте в Threat Dragon модель угроз для одного критичного актива
- Запустите скрипт генерации отчета и получите итоговый документ
Нужна помощь?
Если вам нужно оценить большое количество угроз, не хватает внутренней экспертизы или вы хотите передать эту трудоемкую задачу профессионалам — обратитесь в компанию «Стратегия Ра». Мы поможем провести полный цикл работ: от BIA-анализа до финальной модели угроз, полностью соответствующей новой методике ФСТЭК, а также внедрить и настроить описанные в этом курсе open-source решения.