Практикум: Управление рисками ИБ с Open-source (GLPI + Eramba + Threat Dragon)

О чем этот практикум

В предыдущих курсах мы разбирали методологию RA и BIA по ФСТЭК и сравнивали коммерческие и open-source решения. Теперь пришло время практики. Мы возьмем связку из трех мощных open-source инструментов и настроим их для решения полного цикла задач управления рисками ИБ:

  • GLPI — инвентаризация активов (то, что мы защищаем)
  • Eramba — управление рисками, compliance и политиками (оценка и обработка рисков)
  • OWASP Threat Dragon — моделирование угроз и построение диаграмм (визуализация сценариев)

Это идеальный стек для небольших проектов, стартапов, учебных целей или для тех, кто хочет “потрогать руками” GRC-процессы перед покупкой дорогих коммерческих решений.


Часть 1. Введение и архитектура решения

1.1 Что мы будем строить?

Мы создадим интегрированную систему управления рисками ИБ, где данные будут перетекать из одного инструмента в другой:

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│      GLPI       │────▶│     Eramba      │◀────│ Threat Dragon   │
│ Инвентаризация  │     │  Оценка рисков  │     │ Модели угроз    │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        │                        │                        │
        ▼                        ▼                        ▼
   ┌───────────────────────────────────────────────────────────┐
   │                  Итоговая документация                    │
   │  • Реестр активов         • Реестр рисков                 │
   │  • Модель угроз           • План обработки рисков         │
   │  • Отчеты для руководства                                 │
   └───────────────────────────────────────────────────────────┘

1.2 Что мы получим на выходе

По итогам прохождения курса у вас будет:

  1. Работающая инвентаризационная система (GLPI) со всеми активами компании
  2. GRC-платформа (Eramba) с заполненными реестрами рисков, политиками и планами обработки
  3. Библиотека моделей угроз (Threat Dragon) для критичных систем
  4. Понимание, как эти данные связать в единый процесс
  5. Готовые шаблоны документов для отчетности

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. Добавьте:

    • Главный офис
    • Серверная
    • Этаж 1, Этаж 2 (как дочерние)
  3. Перейдите в раздел Управление → Подразделения

  4. Добавьте:

    • 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”

  1. Скачайте плагин: https://github.com/pluginsGLPI/fields/releases
  2. Распакуйте в /var/www/html/glpi/plugins/fields
  3. В GLPI перейдите Настройки → Плагины → установите и активируйте Fields

Шаг 2. Создайте дополнительные поля

В Настройки → Дополнительные поля создайте:

  1. Критичность актива (для компьютеров и серверов):

    • Тип: Выпадающий список
    • Значения: Низкая, Средняя, Высокая, Критическая
  2. Категория обрабатываемых данных (для компьютеров):

    • Тип: Множественный выбор
    • Значения: ПДн, Коммерческая тайна, Финансовая информация, Общедоступная
  3. Владелец процесса (для компьютеров):

    • Тип: Связь с пользователями

Шаг 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. Настройте русский язык

  1. Перейдите в Admin → System → Languages
  2. Найдите Russian и активируйте
  3. В профиле пользователя смените язык на Russian

Шаг 2. Настройте методологию оценки рисков

Перейдите в Admin → Risk Management → Risk Appetites / Methodologies

Создайте методологию “Базовая (по ФСТЭК)”:

  • Шкала вероятности: 1-5 (Очень низкая - Очень высокая)
  • Шкала влияния: 1-5 (Очень низкое - Очень высокое)
  • Матрица рисков: 5x5

Шаг 3. Импортируйте GLPI-активы (ручной перенос)

К сожалению, прямой интеграции GLPI и Eramba нет. Но мы можем экспортировать данные из GLPI в CSV и импортировать в Eramba.

  1. В GLPI перейдите Активы → Компьютеры → Экспорт в CSV
  2. В Eramba перейдите Assets → Assets → Import
  3. Загрузите 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)

Используя элементы из панели слева, постройте архитектуру:

┌───────────┐     ┌───────────┐     ┌───────────┐
│  Клиент   │────▶│   Веб-    │────▶│   Сервер  │
│ (Браузер) │◀────│  сервер   │◀────│    БД     │
└───────────┘     └───────────┘     └───────────┘
                        │
                        ▼
                  ┌──────────────┐
                  │ Администратор│
                  └──────────────┘

Добавьте элементы:

  1. Process (круг): “Веб-сервер (Apache)”
  2. Process (круг): “Сервер БД (PostgreSQL)”
  3. External Entity (прямоугольник): “Клиент”
  4. External Entity: “Администратор”
  5. Data Store (две линии): “База данных ПДн”
  6. 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
Score8.0 (High)
MitigationИспользовать параметризованные запросы, WAF
StatusOpen

Шаг 4. Экспортируйте модель угроз

  • File → Export → As JSON (для сохранения)
  • File → Export → As PDF/PNG (для отчета)

4.4 Связываем с Eramba

Теперь нужно перенести выявленные угрозы в Eramba как новые риски.

  1. Откройте Eramba
  2. Risks → Risks → New Risk
  3. Заполните на основе данных из 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

  1. В Eramba: Assets → Assets → Import
  2. Загрузите /tmp/glpi_assets.csv
  3. Сопоставьте колонки

5.2 Создание дашборда для руководства

Шаг 1. Настройте отчеты в Eramba

Reports → Report Templates → New Report

Создайте отчет “Топ-10 рисков для руководства”:

РазделСодержимое
ЗаголовокОтчет по управлению рисками ИБ
Дата{current_date}
РискиСписок рисков с уровнем “Критический” и “Высокий”
ПрогрессКоличество рисков в работе / обработанных
ГрафикМатрица рисков (тепловая карта)

Шаг 2. Экспортируйте в PDF

Reports → Run Reports → выберите отчет → Export to PDF

5.3 Полный цикл: от актива до плана обработки

Давайте проследим полный путь для одного инцидента:

ЭтапИнструментДействие
1GLPIОбнаружен новый сервер (инвентаризация)
2GLPIНазначена критичность: Высокая, владелец: Иванов
3Threat DragonПостроена модель угроз для сервера
4Threat DragonВыявлена угроза “Отсутствие резервного копирования”
5ErambaСоздан риск “Потеря данных из-за отсутствия бэкапов”
6ErambaОценен риск: Вероятность 4, Влияние 5 (Критический)
7ErambaСоздан план обработки: “Настроить ежедневное резервное копирование”
8ErambaНазначен ответственный и срок
9(Выполнение)Администратор настраивает бэкапы
10ErambaСтатус риска меняется на “Обработан”, остаточный риск пересчитан

Часть 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Инвентаризация активов✅ Работает, активы загружены
ErambaGRC, риски, контроли, планы✅ Работает, риски оценены
Threat DragonМоделирование угроз✅ Работает, диаграммы построены
ИнтеграцияЭкспорт/импорт, отчетность✅ Скрипты готовы

7.2 Преимущества этого стека

  1. Полностью бесплатно — нет лицензионных отчислений
  2. Open-source — полный контроль над кодом и данными
  3. Гибкость — можно дорабатывать под свои нужды
  4. Соответствие методологии — покрывает все этапы RA и BIA
  5. Масштабируемость — от 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-окружении

Практическое задание

  1. Разверните все три системы по инструкции
  2. Добавьте в GLPI минимум 10 активов (компьютеры, серверы, сетевое оборудование)
  3. Создайте в Eramba 5 рисков, связанных с этими активами
  4. Постройте в Threat Dragon модель угроз для одного критичного актива
  5. Запустите скрипт генерации отчета и получите итоговый документ

Нужна помощь?

Если вам нужно оценить большое количество угроз, не хватает внутренней экспертизы или вы хотите передать эту трудоемкую задачу профессионалам — обратитесь в компанию «Стратегия Ра». Мы поможем провести полный цикл работ: от BIA-анализа до финальной модели угроз, полностью соответствующей новой методике ФСТЭК, а также внедрить и настроить описанные в этом курсе open-source решения.