Перейти до змісту

Управління та доступ

URL сервісів

Кожен SOC сервіс має власний web UI. Доступ у двох режимах:

  1. Через FQDN (рекомендовано) — nginx reverse proxy на CT502 (192.168.200.5) з wildcard SSL *.nasbu.edu.ua + ACL обмежень (див. нижче).
  2. Прямо до CT — IP + порт у VLAN250. Для debugging, коли nginx недоступний, або для internal automation.
Сервіс FQDN (через rproxy) Прямий у VLAN250 CT Статус
Wazuh Dashboard https://wazuh.nasbu.edu.ua https://10.250.0.12:443 CT703 🟢
TheHive https://thehive.nasbu.edu.ua http://10.250.0.30:9000 CT710 🟢 (4.1.24)
Cortex https://cortex.nasbu.edu.ua http://10.250.0.31:9001 CT711 🟢
MISP https://misp.nasbu.edu.ua https://10.250.0.15 CT706 🟢
Shuffle https://shuffle.nasbu.edu.ua http://10.250.0.32:3443 CT712 🟢
Velociraptor https://velociraptor.nasbu.edu.ua https://10.250.0.33:8889 CT713 🟢
Wazuh Manager API — (REST тільки) https://10.250.0.11:55000 CT702 🟢
Wazuh Indexer REST API — (REST тільки) https://10.250.0.10:9200, .13, .14 CT701/704/705 🟢
CrowdSec LAPI — (API only, UI немає) http://10.250.0.16:8080 CT707 🟢 — управління через cscli з CT707
CrowdSec blocklist feed http://10.250.0.16/security/blocklist CT707 🟢 — FortiGate підтягує кожну хвилину

!!! warning "Не розгорнуто (Tier 3 планується)" - Grafana — executive dashboards, BACKLOG TASK-092e - CrowdSec Cloud Console — не використовуємо cloud service, тільки локальний LAPI

Якщо у попередніх версіях документації зустрічаєш URL типу `grafana:3000` або `crowdsec:3000` — це planning placeholder, не реальність.

ACL — хто може відкрити FQDN

Чому SOC UI недоступні з інтернету: ці субдомени (wazuh, thehive, cortex, misp, shuffle, velociraptor) існують тільки у внутрішньому FortiGate DNS — у Cloudflare їх нема. З публічного інтернету DNS не резолвиться взагалі.

Nginx ACL — другий рубіж для внутрішніх мереж (обмежує хто з internal може відкрити UI):

allow 10.99.0.0/24;     # VPN клієнти (WireGuard)
allow 10.30.0.9;        # admin-node (для curl-тестів з bastion)
allow 10.168.150.0/24;  # офісна мережа Академії
allow 10.250.0.0/24;    # SIEM VLAN250 (CT↔CT internal)
deny all;               # все інше → 403 Forbidden

SSH доступ до Proxmox нод і контейнерів

SOC інфраструктура живе на 5 окремих Proxmox нодах (не кластер). SSH доступ: PC → admin-node (94.45.140.197:2223) → reverse SSH tunnel → localhost:227X (порт кожної siem-pxN ноди). Проміжних хопів (workspace, share) у цьому ланцюзі нема.

SSH alias Proxmox нода Host IP (VLAN250) SSH порт Контейнери на ній
siem-px1 siem-px1 10.250.0.2 2270 CT701 — Wazuh Indexer primary
siem-px2 siem-px2 10.250.0.3 2271 CT702 (Wazuh Manager) · CT710 (TheHive) · CT711 (Cortex)
siem-px3 siem-px3 10.250.0.4 2272 CT703 (Wazuh Dashboard) · CT704 (Wazuh Indexer replica 1)
siem-px4 siem-px4 10.250.0.5 2273 CT706 (MISP) · CT707 (CrowdSec) · CT712 (Shuffle)
siem-px5 siem-px5 10.250.0.6 2274 CT705 (Wazuh Indexer replica 2) · CT713 (Velociraptor)

Proxmox web UI на кожній ноді: https://10.250.0.X:8006 (тільки з VLAN250 / VPN). Публічного FQDN немає.

Типовий pattern для команд всередині CT

# Дізнатись статус сервісу
ssh siem-px2 'pct exec 710 -- systemctl status docker'

# Переглянути логи Docker контейнера
ssh siem-px2 'pct exec 710 -- docker logs thehive --tail 50'

# Виконати curl з CT до локального сервісу
ssh siem-px4 'pct exec 706 -- curl -sk https://localhost/users/login'

# Pattern "CT host level" (на самій проксмокс-ноді, не в CT)
ssh siem-px2 'dmesg -T | tail -30'

Модель управління

Єдиної control plane (як у Kubernetes) немає. Кожен сервіс — окрема web UI + окрема auth + окрема config.

Ключові моменти:

  • Shuffle був задуманий як "диригент" (SOAR orchestration layer), але наразі idle: playbook'и не написані (TASK-092d subtask 22 deferred). Реальна автоматизація — через custom Python/bash скрипти на CT702:
    • /var/ossec/integrations/custom-thehive.py — Wazuh → TheHive Alert
    • /var/ossec/integrations/custom-crowdsec-block.py — Wazuh → CrowdSec decision
    • /var/ossec/integrations/custom-teams.sh — Wazuh → Teams webhook
  • Proxmox управляє базовою інфраструктурою (CT/VM, storage, network) — не SOC-застосунками.
  • Централізованого SSO немає (TASK-115 заплановано). Кожна система має окремі credentials. План: Keycloak з LDAP federation → дві AD групи (обидві у OU=AcadAdmins):

    • SOC-Users (6 членів) — базовий доступ до SOC UI
    • SOC-Admins (2 членів: Samuel, OleksiiSt) — admin role у всіх сервісах

    Обидва admin-користувачі включені і в SOC-Users теж. Email у AD — в атрибуті userPrincipalName, не в mail. - Централізоване логування існує тільки для security events (Wazuh Indexer). Логи додатків (nginx access, docker stdout, systemd journal) залишаються на окремих CT.

Патерни доступу за ролями

Роль Основний UI Додатково Примітка
SOC аналітик Tier 1 Wazuh Dashboard + TheHive Teams (нотифікації) 60% часу — Wazuh Dashboard; triage — TheHive. Детально див. 006. Daily Routine - Tier 1.
SOC аналітик Tier 2 TheHive (case management) Wazuh Dashboard, MISP, Cortex Глибокі розслідування, pivot на forensics
SOC аналітик Tier 3 / Threat Hunter Velociraptor + Wazuh Indexer search MISP, TheHive Proactive hunts, deep forensics, threat research
SOC Manager / CISO (майбутнє: Grafana) Wazuh Dashboard executive view Tier 3, компонент ще не розгорнуто
Системний адміністратор SSH bastion chain + pct exec Proxmox web UI (VLAN250) Не через SOC UI — через Proxmox/CLI
Автоматизація (planned) Shuffle всі сервіси через API Shuffle idle; зараз працюють custom scripts на CT702

FortiGate policies (для reference)

Policy ID Призначення
135 SOC:RProxy→VLAN250-GUI — дозволяє nginx (CT502 у VLAN200) ходити до SOC сервісів у VLAN250 на портах 443, 9000, 9001, 3443, 8889
137 CrowdSec:Block-Inbound — DROP IP з CrowdSec feed (external-resource feed, refresh 1 хв)
119 VLAN150→VLAN250 ALL — дозволяє офісній мережі ходити у SOC
113 SOC→Internet — VLAN250 → WAN (HTTPS/HTTP/DNS/NTP) для Docker pulls, VirusTotal/AbuseIPDB API, MISP feeds

Останнє оновлення: 2026-04-15. Відображає стан після Tier 2 deployment (2026-04-14) та TheHive 5.5→4.1.24 downgrade (2026-04-15).