SIEM с нуля: практическое руководство по внедрению и настройке
- Часть 1. Основы SIEM: теория для практиков
- Часть 2. Подготовка инфраструктуры
- Часть 3. Установка и настройка Wazuh (быстрый старт)
- Часть 4. Установка агентов Wazuh (сбор данных)
- Часть 5. Корреляция и правила
- Часть 6. Визуализация и дашборды в Wazuh
- Часть 7. Расширенные возможности Wazuh
- Часть 8. Альтернатива: ELK Stack с нуля
- Часть 9. Интеграция SIEM с GRC-процессами
- Часть 10. Мониторинг соответствия требованиям ФСТЭК
- Часть 11. Процессы SOC (Security Operations Center)
- Часть 12. Заключение и дальнейшие шаги
О чем этот курс
SIEM (Security Information and Event Management) — это класс систем, которые собирают, анализируют и коррелируют события безопасности со всех уголков вашей ИТ-инфраструктуры. SIEM — это “центральная нервная система” мониторинга ИБ, которая позволяет увидеть лес за деревьями и вовремя обнаружить атаку.
В этом курсе мы пройдем путь от полного нуля до работающей SIEM-системы:
- Что такое SIEM и зачем он нужен?
- Как устроена архитектура SIEM?
- Какие бывают open-source SIEM (Wazuh, ELK, Graylog)?
- Пошаговая установка и настройка Wazuh (самого популярного open-source SIEM)
- Подключение агентов на Windows и Linux
- Написание правил корреляции
- Создание дашбордов в Kibana
- Реагирование на инциденты (SOC-процессы)
- Интеграция с GLPI для тикетов и с Eramba для учета рисков
Курс ориентирован на практику — вы сможете повторить все шаги на своем сервере или локальной машине.
Часть 1. Основы SIEM: теория для практиков
1.1 Что такое SIEM и зачем он нужен?
Представьте, что у вас в компании 100 серверов, 50 сетевых устройств, 10 разных приложений и 300 сотрудников. Каждый день они генерируют миллионы событий: кто куда зашел, кто что скачал, кто пытался подобрать пароль, какой файл изменился, какое соединение было заблокировано.
Без SIEM вы просто тонете в этом потоке. С SIEM вы получаете:
- Централизованный сбор логов — все события в одном месте
- Нормализацию — приведение событий к единому формату
- Корреляцию — связывание событий из разных источников в инциденты
- Хранение — архив для расследований и compliance
- Дашборды и оповещения — визуализация и уведомления об аномалиях
- Расследование — инструменты для поиска и анализа
1.2 Архитектура SIEM
Типовая архитектура SIEM выглядит так:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Источники │────▶│ Сборщики │────▶│ Ядро SIEM │
│ событий │ │ (агенты) │ │ (сервер) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Windows-серверы │ │ Filebeat │ │ Elasticsearch │
│ Linux-серверы │ │ Winlogbeat │ │ Корреляция │
│ Межсетевые экраны│ │ Syslog │ │ Хранилище │
│ Веб-серверы │ │ Auditbeat │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Реагирование │◀────│ Визуализация │◀────│ API │
│ (SOAR) │ │ (Kibana) │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘1.3 Обзор open-source SIEM решений
| Решение | Состав | Плюсы | Минусы | Для кого |
|---|---|---|---|---|
| Wazuh | Wazuh (форк OSSEC) + ELK | Готовое интегрированное решение, активное сообщество, compliance-контроли, FIM, уязвимости | Требователен к ресурсам | Малый и средний бизнес, учебные проекты |
| ELK Stack | Elasticsearch + Logstash + Kibana + Beats | Гибкость, мощный поиск, масштабируемость, огромное сообщество | Требует сборки, нет готовых правил корреляции “из коробки” | Компании с собственными разработчиками |
| Graylog | Graylog + MongoDB + Elasticsearch | Удобный интерфейс, pipeline-обработка, enterprise-функции | Меньше готовых парсеров | Средний бизнес |
| OpenSearch | OpenSearch + Data Prepper | Форк Elasticsearch, полный open-source | Молодой | Те, кто ушел от Elastic |
В этом курсе мы сосредоточимся на Wazuh как самом простом для старта, и на ELK как на самом гибком.
Часть 2. Подготовка инфраструктуры
2.1 Требования к оборудованию
Для учебного проекта (до 50 агентов):
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| CPU | 4 ядра | 8 ядер |
| RAM | 8 ГБ | 16 ГБ |
| Диск | 50 ГБ SSD | 100-200 ГБ SSD |
| ОС | Ubuntu 20.04/22.04 LTS | Ubuntu 22.04 LTS |
| Сеть | 1 Гбит/с | 1 Гбит/с |
2.2 Создание виртуальной машины
Вариант 1: Локальная VM (VirtualBox/VMware)
- Скачайте Ubuntu Server 22.04 LTS
- Создайте VM с параметрами выше
- Настройте сеть (NAT + Host-Only для доступа)
Вариант 2: Облачный сервер (VPS)
- Арендуйте VPS у любого провайдера (минимум 4 ГБ RAM)
- Установите Ubuntu 22.04
2.3 Базовая настройка сервера
# Обновление системы
sudo apt update && sudo apt upgrade -y
# Установка необходимых пакетов
sudo apt install -y curl wget git vim htop net-tools
# Настройка hostname
sudo hostnamectl set-hostname siem-server
# Настройка времени (для корректной работы логов)
sudo timedatectl set-timezone Europe/Moscow
sudo apt install -y ntp
sudo systemctl enable ntp
sudo systemctl start ntp
# Открытие портов (если используется UFW)
sudo ufw allow 22/tcp # SSH
sudo ufw allow 443/tcp # HTTPS для Wazuh
sudo ufw allow 1514:1515/tcp # Wazuh агенты
sudo ufw allow 514/udp # Syslog
sudo ufw enableЧасть 3. Установка и настройка Wazuh (быстрый старт)
Wazuh состоит из нескольких компонентов:
- Wazuh Indexer (хранилище данных, форк OpenSearch)
- Wazuh Server (менеджер, анализ и корреляция)
- Wazuh Dashboard (визуализация, форк OpenSearch Dashboards)
3.1 Автоматическая установка
Wazuh предоставляет скрипт для быстрой установки всех компонентов на один сервер.
Шаг 1. Скачайте и запустите установщик
curl -sO https://packages.wazuh.com/4.9/wazuh-install.sh
sudo bash wazuh-install.sh --generate-config-filesШаг 2. Запустите установку
sudo bash wazuh-install.sh --wazuh-indexer node-1
sudo bash wazuh-install.sh --start-cluster
sudo bash wazuh-install.sh --wazuh-server wazuh-1
sudo bash wazuh-install.sh --wazuh-dashboard dashboardШаг 3. Получите пароль администратора
sudo tar -O -xvf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txtВы увидите что-то вроде:
admin: admin
kibanaserver: randompasswordШаг 4. Войдите в веб-интерфейс
- Откройте браузер:
https://ваш-сервер-ip - Логин: admin
- Пароль: (из предыдущего шага)
3.2 Ручная установка
Если хотите понять, как все работает “под капотом”, лучше установить компоненты по отдельности.
3.2.1 Установка Wazuh Indexer
# Добавление репозитория
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo apt-key add -
echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee /etc/apt/sources.list.d/wazuh.list
# Установка
sudo apt update
sudo apt install -y wazuh-indexer
# Настройка
sudo nano /etc/wazuh-indexer/opensearch.yml
# Раскомментируйте и укажите:
# network.host: 0.0.0.0
# discovery.type: single-node
# Запуск
sudo systemctl enable wazuh-indexer
sudo systemctl start wazuh-indexer3.2.2 Установка Wazuh Server
# Установка Wazuh Manager
sudo apt install -y wazuh-manager
# Установка Filebeat (для отправки логов в Indexer)
sudo apt install -y filebeat
sudo curl -so /etc/filebeat/filebeat.yml https://raw.githubusercontent.com/wazuh/wazuh/v4.9.0/extensions/filebeat/7.x/filebeat.yml
sudo curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/v4.9.0/extensions/elasticsearch/7.x/wazuh-template.json
sudo curl -s https://packages.wazuh.com/4.x/filebeat/filebeat_wazuh_module.tar.gz | sudo tar -xvz -C /usr/share/filebeat/module
# Настройка Filebeat
sudo nano /etc/filebeat/filebeat.yml
# Укажите:
# output.elasticsearch.hosts: ["localhost:9200"]
# output.elasticsearch.username: "admin"
# output.elasticsearch.password: "admin"
# Запуск
sudo systemctl enable wazuh-manager filebeat
sudo systemctl start wazuh-manager filebeat3.2.3 Установка Wazuh Dashboard
sudo apt install -y wazuh-dashboard
# Настройка
sudo nano /etc/wazuh-dashboard/opensearch_dashboards.yml
# Укажите:
# server.host: "0.0.0.0"
# opensearch.hosts: ["https://localhost:9200"]
# opensearch.ssl.verificationMode: none
# opensearch.username: "admin"
# opensearch.password: "admin"
sudo systemctl enable wazuh-dashboard
sudo systemctl start wazuh-dashboardЧасть 4. Установка агентов Wazuh (сбор данных)
Агенты устанавливаются на хосты, с которых мы хотим собирать логи.
4.1 Установка агента на Linux
Шаг 1. На целевом Linux-сервере выполните:
# Добавление репозитория Wazuh
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo apt-key add -
echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee /etc/apt/sources.list.d/wazuh.list
# Установка агента
sudo apt update
sudo apt install -y wazuh-agent
# Настройка подключения к серверу
sudo nano /var/ossec/etc/ossec.conf
# Найдите и укажите:
# <address>IP-ВАШЕГО-SIEM-СЕРВЕРА</address>
# <protocol>tcp</protocol>Шаг 2. Запустите агент
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agentШаг 3. Добавьте агента на сервере (если не добавился автоматически)
На сервере Wazuh:
sudo /var/ossec/bin/manage_agents
# Выберите опцию "Add an agent" и следуйте инструкциям4.2 Установка агента на Windows
Шаг 1. Скачайте установщик
- Перейдите на https://packages.wazuh.com/4.x/windows/
- Скачайте последнюю версию
wazuh-agent-4.x.x-1.msi
Шаг 2. Установите с параметрами
В командной строке (от администратора):
msiexec /i wazuh-agent-4.5.0-1.msi /quiet WAZUH_MANAGER="IP-ВАШЕГО-SIEM-СЕРВЕРА" WAZUH_REGISTRATION_SERVER="IP-ВАШЕГО-SIEM-СЕРВЕРА"Шаг 3. Проверьте подключение
В службах Windows найдите “Wazuh” — должно быть “Running”.
4.3 Настройка сбора логов
4.3.1 Системные логи Linux
В файле /var/ossec/etc/ossec.conf на агенте убедитесь, что включены:
<localfile>
<log_format>syslog</log_format>
<location>/var/log/syslog</location>
</localfile>
<localfile>
<log_format>syslog</log_format>
<location>/var/log/auth.log</location>
</localfile>
<localfile>
<log_format>command</log_format>
<command>df -h</command>
<frequency>3600</frequency>
</localfile>4.3.2 Логи Windows
По умолчанию Windows-агент собирает:
- Security Event Log
- Application Event Log
- System Event Log
- PowerShell logs (если включено)
4.3.3 Логи веб-сервера (Apache/Nginx)
Для Apache добавьте в ossec.conf:
<localfile>
<log_format>apache</log_format>
<location>/var/log/apache2/access.log</location>
</localfile>
<localfile>
<log_format>apache</log_format>
<location>/var/log/apache2/error.log</location>
</localfile>Часть 5. Корреляция и правила
5.1 Что такое правила корреляции?
Правила корреляции — это “мозг” SIEM. Они определяют, при каких условиях набор событий превращается в инцидент.
Пример правила: Если в течение 5 минут с одного IP произошло более 10 неудачных попыток входа (события типа 4625 в Windows) — это атака brute-force.
5.2 Структура правил Wazuh
Правила Wazuh находятся в /var/ossec/ruleset/rules/. Основные файлы:
0005-ssh_rules.xml— правила для SSH0575-win-base_rules.xml— базовые правила для Windows0950-web_appsec_rules.xml— веб-атаки
Формат правила:
<rule id="5712" level="5">
<if_sid>5710</if_sid>
<match>^Failed password for</match>
<description>SSH: Failed password attempt</description>
<group>authentication_failed,pci_dss_10.2.4,pci_dss_10.2.5,</group>
</rule>Где:
id— уникальный номер правилаlevel— уровень критичности (0-15)if_sid— родительское правило (наследование)match— паттерн поиска в логе
5.3 Создание собственного правила
Задача: Создать правило, которое срабатывает при попытке доступа к файлу /etc/shadow на Linux.
Шаг 1. Создайте файл с правилами
sudo nano /var/ossec/etc/rules/local_rules.xmlШаг 2. Добавьте правило
<group name="local,file_access,">
<rule id="100001" level="10">
<if_sid>100000</if_sid>
<match>/etc/shadow</match>
<description>Access to /etc/shadow detected</description>
<group>local,file_integrity,pci_dss_10.5.5,</group>
</rule>
</group>Шаг 3. Перезапустите Wazuh
sudo systemctl restart wazuh-manager5.4 Корреляция по времени
Создадим правило для обнаружения brute-force:
<rule id="100002" level="15" frequency="8" timeframe="120">
<if_matched_sid>5712</if_matched_sid>
<same_source_ip />
<description>SSH Brute-force attack detected</description>
<group>local,authentication_failed,</group>
</rule>Здесь:
frequency="8"— 8 срабатыванийtimeframe="120"— за 120 секундsame_source_ip— с одного IP
5.5 Тестирование правил
Сгенерируйте тестовое событие:
На агенте Linux выполните:
cat /etc/shadowНа сервере проверьте, сработало ли правило:
sudo /var/ossec/bin/ossec-logtest
# Введите строку лога вручную или смотрите alerts.log
tail -f /var/ossec/logs/alerts/alerts.logЧасть 6. Визуализация и дашборды в Wazuh
6.1 Обзор интерфейса Wazuh Dashboard
Wazuh Dashboard построен на базе OpenSearch Dashboards (форк Kibana). Основные разделы:
- Dashboard — общая статистика
- Threat Hunting — поиск угроз
- Modules — готовые модули (FIM, Vulnerabilities, PCI DSS, GDPR)
- Management — управление правилами, агентами, группами
6.2 Создание кастомного дашборда
Шаг 1. Перейдите в OpenSearch Dashboards
Нажмите на иконку “три точки” в левом меню → OpenSearch Dashboards
Шаг 2. Создайте индекс-паттерн
- Stack Management → Index Patterns → Create index pattern
- Name:
wazuh-alerts-* - Time field:
@timestamp
Шаг 3. Создайте визуализацию
- Visualize → Create visualization
- Выберите тип (например, Pie, Bar, Line)
- Выберите индекс
wazuh-alerts-* - Настройте метрики и сегменты (например, количество алертов по уровням)
Шаг 4. Добавьте визуализацию на дашборд
- Dashboard → Create dashboard
- Add → выберите созданную визуализацию
6.3 Полезные дашборды
Дашборд “Топ атакующих IP”
| Визуализация | Тип | Поля |
|---|---|---|
| Топ-10 IP по алертам | Data Table | data.srcip, count |
| Алерты по времени | Line | @timestamp, count |
| Типы атак | Pie | rule.groups |
Дашборд “Состояние агентов”
| Визуализация | Тип | Поля |
|---|---|---|
| Статус агентов | Metric | count by agent.status |
| Версии ОС | Pie | agent.os.name |
| Последняя активность | Table | agent.name, @timestamp |
Часть 7. Расширенные возможности Wazuh
7.1 Мониторинг целостности файлов
FIM (File Integrity Monitoring) позволяет отслеживать изменения в критичных файлах.
Настройка FIM на агенте:
В /var/ossec/etc/ossec.conf:
<syscheck>
<disabled>no</disabled>
<frequency>7200</frequency>
<directories check_all="yes" realtime="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories check_all="yes">/home/*/bin</directories>
<ignore>/etc/mtab</ignore>
<ignore>/etc/hosts.deny</ignore>
</syscheck>После изменения конфига перезапустите агент:
sudo systemctl restart wazuh-agent7.2 Сканирование уязвимостей
Wazuh может детектировать уязвимости в ПО на агентах.
Включение модуля на сервере:
В /var/ossec/etc/ossec.conf на сервере:
<wodle name="vulnerability-detector">
<disabled>no</disabled>
<interval>5m</interval>
<run_on_start>yes</run_on_start>
<provider name="canonical">enabled</provider>
<provider name="redhat">enabled</provider>
<provider name="debian">enabled</provider>
</wodle>7.3 Активное реагирование
Можно настроить автоматическую блокировку IP при обнаружении атаки.
Шаг 1. Создайте скрипт реагирования
sudo nano /var/ossec/active-response/bin/block-ip.sh#!/bin/bash
IP=$1
iptables -A INPUT -s $IP -j DROPsudo chmod +x /var/ossec/active-response/bin/block-ip.shШаг 2. Настройте правило в ossec.conf
<command>
<name>block-ip</name>
<executable>block-ip.sh</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<active-response>
<command>block-ip</command>
<location>local</location>
<rules_id>100002</rules_id>
<timeout>600</timeout>
</active-response>Часть 8. Альтернатива: ELK Stack с нуля
Если Wazuh кажется слишком “коробочным”, можно собрать свой SIEM на базе ELK.
8.1 Установка Elasticsearch
# Добавление репозитория
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
# Установка
sudo apt update
sudo apt install -y elasticsearch
# Настройка
sudo nano /etc/elasticsearch/elasticsearch.yml
# Укажите:
# network.host: 0.0.0.0
# discovery.type: single-node
# xpack.security.enabled: true
# Установка паролей
sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
# Запуск
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch8.2 Установка Kibana
sudo apt install -y kibana
# Настройка
sudo nano /etc/kibana/kibana.yml
# Укажите:
# server.host: "0.0.0.0"
# elasticsearch.hosts: ["http://localhost:9200"]
# elasticsearch.username: "kibana_system"
# elasticsearch.password: "установленный-пароль"
sudo systemctl enable kibana
sudo systemctl start kibana8.3 Установка Logstash
sudo apt install -y logstash
# Создание конфигурации для парсинга логов
sudo nano /etc/logstash/conf.d/beats.confinput {
beats {
port => 5044
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
user => "elastic"
password => "установленный-пароль"
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
}
}sudo systemctl enable logstash
sudo systemctl start logstash8.4 Установка Filebeat на агента
# На агенте
sudo apt install -y filebeat
# Настройка
sudo nano /etc/filebeat/filebeat.ymlfilebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog
- /var/log/auth.log
fields:
type: syslog
output.logstash:
hosts: ["SIEM-СЕРВЕР:5044"]sudo systemctl enable filebeat
sudo systemctl start filebeatЧасть 9. Интеграция SIEM с GRC-процессами
9.1 Интеграция Wazuh с GLPI (создание тикетов)
Шаг 1. Установите плагин GLPI для вебхуков
В GLPI: Конфигурация → Плагины → установите WebServices или GLPI REST API
Шаг 2. Создайте скрипт для отправки алертов в GLPI
sudo nano /var/ossec/active-response/bin/create-glpi-ticket.py#!/usr/bin/env python3
import requests
import json
import sys
import datetime
# Конфигурация GLPI
GLPI_URL = "https://glpi.example.com/apirest.php"
APP_TOKEN = "ваш-app-token"
USER_TOKEN = "ваш-user-token"
# Получение данных алерта из аргументов (зависит от вызова)
alert_data = sys.argv[1] # упрощенно
# Авторизация в GLPI
session = requests.Session()
session.headers.update({
'Content-Type': 'application/json',
'Authorization': f'user_token {USER_TOKEN}',
'App-Token': APP_TOKEN
})
# Создание тикета
ticket = {
"input": {
"name": f"Security Alert: {alert_data.get('rule.description', 'Unknown')}",
"content": f"Source IP: {alert_data.get('data.srcip')}\nAgent: {alert_data.get('agent.name')}",
"urgency": 3, # Высокая
"priority": 4,
"entities_id": 1
}
}
response = session.post(f"{GLPI_URL}/Ticket", json=ticket)
print(response.json())Шаг 3. Настройте активное реагирование для вызова скрипта
В ossec.conf на сервере:
<command>
<name>create-ticket</name>
<executable>create-glpi-ticket.py</executable>
</command>
<active-response>
<command>create-ticket</command>
<location>server</location>
<rules_id>100002</rules_id>
</active-response>9.2 Интеграция с Eramba (учет инцидентов как рисков)
Шаг 1. Экспорт алертов из Wazuh в Eramba
Создайте скрипт для периодического экспорта:
sudo nano /usr/local/bin/export-alerts-to-eramba.py#!/usr/bin/env python3
import requests
import json
import datetime
from elasticsearch import Elasticsearch
# Подключение к Elasticsearch (Wazuh использует его)
es = Elasticsearch(["localhost:9200"], http_auth=('admin', 'admin'), verify_certs=False)
# Поиск алертов за последние 24 часа
query = {
"query": {
"range": {
"timestamp": {
"gte": "now-1d"
}
}
},
"size": 1000
}
result = es.search(index="wazuh-alerts-*", body=query)
# Конвертация в формат Eramba
risks = []
for hit in result['hits']['hits']:
alert = hit['_source']
risk = {
"title": f"SIEM Alert: {alert.get('rule.description', 'Unknown')}",
"description": json.dumps(alert, indent=2),
"category": "Information Security",
"inherent_score": alert.get('rule.level', 5) * 3, # Условная оценка
"source": "wazuh"
}
risks.append(risk)
# Здесь должен быть код для отправки в Eramba API
# (аналогично предыдущему примеру с GLPI)
print(f"Экспортировано {len(risks)} рисков")9.3 Полный цикл: от события до риска
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Агент Wazuh │────▶│ Сервер Wazuh │────▶│ Elasticsearch │
│ (событие) │ │ (корреляция) │ │ (хранение) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ GLPI │◀────│ Active Response│────▶│ Kibana │
│ (тикет) │ │ (скрипт) │ │ (дашборд) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐
│ Eramba │◀────│ Ежедневный │
│ (риск) │ │ экспорт │
└─────────────────┘ └─────────────────┘Часть 10. Мониторинг соответствия требованиям ФСТЭК
10.1 Требования к регистрации событий
ФСТЭК требует регистрировать события безопасности (Приказ ФСТЭК №17, №21, №31). SIEM помогает это автоматизировать.
Что нужно регистрировать:
| Категория | События | Wazuh-правила |
|---|---|---|
| Вход/выход | Успешные/неуспешные логины | 5500, 5712 |
| Действия администраторов | Изменения прав, создание пользователей | 5020, 5130 |
| Доступ к ресурсам | Открытие файлов, запуск программ | FIM, 100001 |
| Изменения конфигурации | Изменение настроек безопасности | 5900 |
| События СЗИ | Срабатывания антивируса, МЭ | 87100+ |
10.2 Создание отчета для ФСТЭК
Шаг 1. Создайте дашборд “Compliance ФСТЭК”
В Kibana создайте дашборд со следующими визуализациями:
- Metric — общее количество событий за период
- Pie chart — распределение по типам событий (аутентификация, доступ, администрирование)
- Data table — список критичных событий (level >= 10)
- Line chart — динамика событий по часам
Шаг 2. Экспортируйте отчет в PDF
- Откройте дашборд
- Нажмите Share → PDF Reports
- Выберите период (месяц, квартал)
- Скачайте PDF для предоставления регулятору
Шаг 3. Автоматизируйте отправку отчетов
sudo nano /usr/local/bin/send-fstek-report.sh#!/bin/bash
# Генерация отчета через API Kibana
curl -X POST "http://localhost:5601/api/reporting/generate/pdf" \
-H "kbn-xsrf: true" \
-u admin:password \
-H "Content-Type: application/json" \
-d '{
"jobParams": {
"browserTimezone": "Europe/Moscow",
"layout": {
"id": "preserve_layout"
},
"relativeUrls": ["/app/dashboards#/view/fstek-dashboard"],
"title": "ФСТЭК-отчет"
}
}' > /tmp/report.pdf
# Отправка по email
echo "Отчет по безопасности за месяц" | mail -s "ФСТЭК-отчет" -a /tmp/report.pdf fstek@company.ruЧасть 11. Процессы SOC (Security Operations Center)
11.1 Триаж инцидентов
Не все алерты требуют реагирования. Введем уровни критичности:
| Уровень | Wazuh level | Описание | Действие |
|---|---|---|---|
| Информационный | 0-3 | Редкие, но нормальные события | Только логирование |
| Низкий | 4-6 | Подозрительные, но не опасные | Проверка в рабочем порядке |
| Средний | 7-9 | Явные признаки разведки | Расследование в течение дня |
| Высокий | 10-12 | Успешная атака или ее попытка | Немедленное реагирование |
| Критический | 13-15 | Компрометация критичных систем | Реагирование 24/7, эскалация руководству |
11.2 Расследование инцидента
Шаг 1. Сбор данных
В Kibana найдите все события по индикатору (IP, пользователь, хост):
data.srcip: "192.168.1.100" OR user.name: "admin"Шаг 2. Построение хронологии
Создайте дашборд с временной шкалой (timeline) для визуализации последовательности событий.
Шаг 3. Документирование
Создайте карточку инцидента в GLPI или отдельном трекере:
# Инцидент INC-2026-001
**Дата:** 2026-03-10
**Обнаружен:** Wazuh rule 100002 (SSH brute-force)
**Актив:** web-server-01
**IP атакующего:** 185.130.5.xxx
**Действия:**
- 02:15:00 - начало brute-force (50 попыток)
- 02:17:30 - сработало правило корреляции
- 02:17:35 - активное реагирование (блокировка IP)
- 02:18:00 - уведомление администратора
**Статус:** Закрыт11.3 Поиск угроз
Задача: Найти следы атаки, которая могла остаться незамеченной.
Пример гипотезы: “Возможно, злоумышленник использовал PowerShell для загрузки вредоносного ПО”
Запрос в Kibana:
event_id: 4104 AND powershell.command: "*Invoke-WebRequest*" AND powershell.command: "*http*"Часть 12. Заключение и дальнейшие шаги
12.1 Что мы построили
Мы создали полноценную SIEM-систему, которая:
- Собирает логи со всех серверов (Windows, Linux)
- Коррелирует события и генерирует алерты
- Визуализирует данные в дашбордах
- Интегрируется с GLPI для создания тикетов
- Экспортирует данные в Eramba для учета рисков
- Помогает соответствовать требованиям ФСТЭК
- Автоматизирует реагирование на инциденты
12.2 Чек-лист внедрения SIEM
- Развернут сервер Wazuh/ELK
- Настроены агенты на всех критичных серверах
- Созданы правила корреляции для основных атак
- Настроен мониторинг целостности файлов (FIM)
- Включено сканирование уязвимостей
- Созданы дашборды для руководства и операторов
- Настроена интеграция с GLPI/Eramba
- Написаны инструкции по реагированию
- Проведено обучение персонала
12.3 Рекомендации по развитию
- Добавьте Threat Intelligence — подключите фиды с индикаторами компрометации (MISP, AlienVault OTX)
- Внедрите SOAR — автоматизируйте реагирование (Shuffle, n8n, Wazuh уже имеет базовые возможности)
- Перейдите на кластер — для отказоустойчивости разверните несколько нод Elasticsearch
- Настройте долгосрочное хранение — используйте горячее/холодное хранение данных (hot/warm/cold)
- Добавьте анализ поведения — UEBA (User and Entity Behavior Analytics) модули
Практическое задание
- Разверните Wazuh на сервере (по инструкции из Части 3)
- Установите агенты на 2-3 тестовые машины (Linux и Windows)
- Создайте собственное правило корреляции для любого события
- Настройте дашборд в Kibana с ключевыми метриками
- Попробуйте сымитировать атаку (например, перебор паролей) и убедитесь, что SIEM сработал
- Настройте отправку уведомлений в Telegram или email
Нужна помощь?
Если вам нужно внедрить SIEM в продуктовую среду, не хватает экспертизы или вы хотите передать эту сложную задачу профессионалам — обратитесь в компанию «Стратегия Ра». Мы поможем спроектировать архитектуру, развернуть и настроить SIEM (как на базе open-source, так и коммерческие решения), интегрировать с существующими системами и обучить вашу команду. Мы также проводим аудит текущей системы мониторинга и помогаем подготовиться к проверкам ФСТЭК.