Домашний SOC
🛡 Домашний SOC: установка и настройка OPNsense + Suricata + Wazuh + CrowdSec
Контекст: OPNsense установлен на реальном железе — мини‑сервер формата 1U (две сетевые карты: WAN/LAN). Цель — собрать мини‑SOC дома: видеть атаки, автоматически блокировать их, хранить логи и строить дашборды.
🔹 Архитектура
1
2
3
4
5
6
7
8
9
10
11
[ Интернет ]
|
[ OPNsense 1U Firewall ]
| \
| \-- Syslog --> [ OpenSearch ] --> [ Grafana ]
|
[ Suricata IDS/IPS ] --(EVE JSON)--> [ OpenSearch ]
|
[ CrowdSec (bouncer) ] --> блокировка IP на firewall
|
[ Wazuh (агенты на серверах) ] --> логи/алерты в OpenSearch
- OPNsense — маршрутизация, VLAN, VPN, плагины безопасности.
- Suricata — анализ и блокировка трафика (IDS/IPS) на границе сети.
- CrowdSec — автоматическая реакция на брутфорсы/сканирования.
- Wazuh — HIDS: аудит хостов (SSH, sudo, изменения файлов).
- OpenSearch + Grafana — централизованное хранилище логов и визуализация.
🔹 Шаг 1. Установка OPNsense (на «железо» 1U)
- Скачайте ISO: opnsense.org/download.
- Установите на сервер 1U с двумя NIC (WAN/LAN).
- После первого запуска:
- WAN: получает IP от провайдера (или PPPoE).
- LAN:
192.168.1.1/24, доступ к веб‑GUI:https://192.168.1.1.
- System → Settings → General: выставьте NTP, DNS.
- System → Settings → Tunables: при необходимости включите
net.inet8.ip_forwarding=1(обычно включён).
Рекомендации по производительности/совместимости
- Interfaces → Settings: отключите Hardware checksum offload, TSO, LRO — так Suricata/IPS работает стабильнее.
- Если есть 2.5/10G NIC — проверьте поддержку netmap (для IPS).
🔹 Шаг 2. Сегментация сети (VLAN)
Зачем: если взломают IoT‑лампу, она не должна видеть серверы.
- Interfaces → Other Types → VLAN:
- VLAN 10 —
LAN(рабочие ПК), - VLAN 20 —
IOT(камеры/лампы), - VLAN 30 —
SRV(Proxmox, HA, GitLab).
- VLAN 10 —
- Interfaces → Assignments: добавьте интерфейсы для VLAN 10/20/30.
- Firewall → Rules:
- Разрешите из
LAN→SRVнужные порты. - Запретите
IOT→SRV(по умолчанию deny), оставьте только то, что нужно (например,IOT→HA:8123).
- Разрешите из
- VPN (опционально): WireGuard для удалённого доступа.
🔹 Шаг 3. IDS/IPS: установка и настройка Suricata
- System → Firmware → Plugins: установите
os-suricata. - Services → Intrusion Detection:
- Enabled: ✅
- IPS Mode: ✅ (пакеты будут блокироваться)
- Promiscuous Mode: ✅ (видеть весь трафик)
- Interfaces: WAN + нужные VLAN (например,
IOT,SRV).
- Download вкладка → включите правила ET Open, при желании ET Pro Telemetry (если доступно).
- Rules:
- Включите категории
attack,trojan,scan,malware,ssh,dns. - Снимите галки с «шумных» правил, если мешают (например, отдельные
policy/info).
- Включите категории
- EVE JSON (логирование):
- Services → Intrusion Detection → Administration → Logging
- Включите EVE (JSON) с событиями:
alert,dns,http,ssh— пригодится в аналитике.
- Запустите Suricata и убедитесь, что Alerts появляются при трафике.
Важно: при включении IPS Mode проверьте, что интернет работает стабильно. Если что‑то «ломается» — временно отключите IPS и уточните правила/категории.
🔹 Шаг 4. Автобан атак: CrowdSec на OPNsense
- System → Firmware → Plugins: установите
os-crowdsec. - Services → CrowdSec:
- Включите парсеры для
ssh,firewall,nginx(если прокси),opnsense. - Установите bouncer (firewall bouncer) — он будет применять блокировки в pf.
- Включите парсеры для
- Проверьте: в Decisions появляются IP, которые нарушают правила (брутфорс/сканирование).
CrowdSec использует общинную базу репутаций IP. Вы не только баните, но и получаете разведданные.
🔹 Шаг 5. HIDS: Wazuh (сервер и агенты)
Сервер Wazuh (Docker single‑node)
1
2
3
git clone https://github.com/wazuh/wazuh-docker.git -b v4.7.1
cd wazuh-docker/single-node
docker compose up -d
После запуска откройте https://<WAZUH_HOST>:5601 (Wazuh Dashboards).
Агент Wazuh на Linux‑хосте
1
2
3
4
5
# Установите репозиторий (для вашей ОС) и агент:
apt install wazuh-agent
# Укажите адрес менеджера:
sed -i 's/MANAGER_IP/<WAZUH_HOST>/' /var/ossec/etc/ossec.conf
systemctl enable --now wazuh-agent
Где ставить агенты: домашние серверы (Proxmox, HA, GitLab, NAS, Docker‑хосты).
Что даёт агент: события SSH, sudo, systemd, изменения файлов, rootkit‑сканы.
🔹 Шаг 6. Централизация логов: OpenSearch + Grafana
OpenSearch + Dashboards (Docker)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3'
services:
opensearch:
image: opensearchproject/opensearch:latest
environment:
- discovery.type=single-node
- plugins.security.disabled=true
ports:
- "9200:9200"
- "9600:9600"
dashboards:
image: opensearchproject/opensearch-dashboards:latest
environment:
- OPENSEARCH_HOSTS=["http://opensearch:9200"]
- OPENSEARCH_SECURITY_DISABLED=true
ports:
- "5601:5601"
Отправка логов с OPNsense
- System → Settings → Logging / targets:
- Добавьте Remote syslog → укажите
opensearch-host:514(если используете rsyslog/Fluent Bit/Filebeat как «шлюз»). - Проще: поднимите Fluent Bit/Filebeat рядом с OpenSearch и направляйте syslog туда.
- Добавьте Remote syslog → укажите
Grafana
- Поставьте Grafana (Docker).
- Добавьте OpenSearch как datasource.
- Импортируйте/создайте дашборды:
- «Атаки по странам»,
- «SSH брутфорс»,
- «Top talkers по портам»,
- «Suricata alerts timeline».
🔹 (Опционально) Zeek как глубокая аналитика
Zeek отлично дополняет Suricata (forensic‑аналитика протоколов).
- Развёртывание на отдельной VM/сервере.
- Выгрузка логов в OpenSearch.
- Аналитика: HTTP/DNS/SSL/SSH события на уровне сеансов.
🔹 Шаг 7. Тестирование: имитируем атаки внутри своей сети
⚠️ Важно: тестируйте только в собственной сети/лабе.
- Порт‑сканирование (с ноутбука в LAN):
1
nmap -sS -p 1-1000 192.168.1.10
— Suricata должна сработать на сигнатуры SCAN.
- SSH брутфорс (эмуляция):
1
hydra -l root -P passwords.txt ssh://192.168.1.10
— CrowdSec/Wazuh/Suricata зафиксируют и забанят источник.
- DNS аномалии — сделать десятки редких запросов: Suricata/Zeek отметят «шум».
🔹 Реальный пример атаки (скриншот)
Suricata зафиксировала ET SCAN Potential SSH Scan с зарубежного IP:
- Suricata отметила всплеск пакетов на порт 22 (WAN).
- CrowdSec вынес решение (ban) за секунды.
- Wazuh показал нулевое число успешных логинов.
- Grafana отрисовала всплеск по SSH за последний час.
🔹 Советы по эксплуатации
- Раз в неделю просматривайте Suricata Alerts — отключайте шумные категории/правила.
- В CrowdSec проверяйте
Decisions: не попали ли в бан «свои» IP (добавляйте в allowlist). - Делайте снапшоты/бэкапы конфигов OPNsense.
- Держите IPS Mode включённым, но проверяйте, не ломает ли он редкие рабочие кейсы.
- В Wazuh настроьте алерты в Telegram/Email на события уровня «High».
🔹 Итоги
На одном мини‑сервере 1U с OPNsense можно собрать рабочий домашний SOC:
- Suricata (IDS/IPS) видит и блокирует атаки на границе.
- CrowdSec банит брутфорсы/сканирования автоматически.
- Wazuh следит за серверами и файлами.
- OpenSearch + Grafana дают удобную аналитику и дашборды.
👉 Это не только безопасность дома, но и практический опыт SOC‑инженера, применимый в продакшене.

