Wazuh SIEM — centralna analiza bezpieczeństwa serwerów
Opublikowano: 10 kwietnia 2026 · Kategoria: Bezpieczeństwo
Zarządzanie bezpieczeństwem kilku serwerów jednocześnie przez oddzielne logi na każdym z nich to nieefektywny koszmar. Wazuh rozwiązuje ten problem: agent na każdym serwerze zbiera zdarzenia (zmiany plików, alerty SSH, błędy aplikacji, anomalie procesów) i wysyła je do centralnego managera. Manager stosuje reguły detekcji, a wyniki są widoczne w przejrzystym dashboardzie webowym. Wazuh to fork OSSEC z aktywnym rozwojem, bogatszymi integracjami i obsługą OpenSearch/Elasticsearch jako backendu. Ten artykuł pokazuje instalację przez Docker Compose, konfigurację agentów i najważniejsze funkcje.
Architektura Wazuh
| Komponent | Rola | Zasoby |
|---|---|---|
| Wazuh Manager | Analizuje eventy z agentów, stosuje reguły, generuje alerty | ~1 GB RAM |
| Wazuh Indexer | OpenSearch/Elasticsearch — przechowuje zdarzenia i alerty | 2-4 GB RAM |
| Wazuh Dashboard | UI webowe (Kibana-based) do analizy alertów | ~512 MB RAM |
| Wazuh Agent | Na chronionym serwerze — zbiera logi i zdarzenia | ~30 MB RAM |
Instalacja przez Docker Compose
Najszybsza metoda uruchomienia Wazuh to oficjalny docker-compose. Wymagania: VPS z min. 4 GB RAM (rekomendowane 8 GB), Docker i Docker Compose zainstalowane:
# Pobierz oficjalny docker-compose Wazuh git clone https://github.com/wazuh/wazuh-docker.git -b v4.9.0 cd wazuh-docker/single-node # Wygeneruj certyfikaty TLS (wymagane przez OpenSearch) docker compose -f generate-indexer-certs.yml run --rm generator # Uruchom stack (manager + indexer + dashboard) docker compose up -d # Sprawdz status kontenerow docker compose ps # wazuh.manager Up # wazuh.indexer Up # wazuh.dashboard Up # Dashboard dostepny na: # https://TWOJE-IP (port 443) # Login: admin / SecretPassword (zmien!) # Zmiana hasla administratora docker exec -it single-node-wazuh.indexer-1 \ /usr/share/wazuh-indexer/plugins/opensearch-security/tools/hash.sh # Logi managera docker logs single-node-wazuh.manager-1 -f
Instalacja agenta Wazuh na Linux
Agent Wazuh instaluje się na każdym serwerze, który chcesz monitorować. Agent łączy się z managerem przez port 1514 (UDP/TCP) i 1515 (rejestracja). Poniżej instalacja na Ubuntu:
# Na chronionym serwerze (nie na managerze): # Pobierz pakiet agenta (dopasuj do wersji managera) wget https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.9.0-1_amd64.deb # Zainstaluj z adresem managera WAZUH_MANAGER="IP_TWOJEGO_MANAGERA" \ WAZUH_AGENT_NAME="web-server-01" \ dpkg -i ./wazuh-agent_4.9.0-1_amd64.deb # Uruchom agenta sudo systemctl daemon-reload sudo systemctl enable --now wazuh-agent # Sprawdz status polaczenia z managerem sudo systemctl status wazuh-agent sudo /var/ossec/bin/agent_control -i 001 # Zweryfikuj ze agent jest widoczny na managerze # (wykonaj na serwerze managera w kontenerze): docker exec single-node-wazuh.manager-1 \ /var/ossec/bin/agent_control -la
File Integrity Monitoring (FIM) i syscheck
Syscheck monitoruje zmiany w plikach i katalogach — każda modyfikacja, dodanie lub usunięcie
pliku generuje zdarzenie w dashboardzie. Konfiguracja w
/var/ossec/etc/ossec.conf na agencie:
<!-- Fragment ossec.conf na agencie --> <syscheck> <!-- Czestotliwosc skanu (sekundy) --> <frequency>43200</frequency> <!-- Tryb realtime dla waznych katalogow --> <directories realtime="yes" check_all="yes">/etc</directories> <directories realtime="yes" check_all="yes">/usr/bin</directories> <directories realtime="yes" check_all="yes">/usr/sbin</directories> <directories check_all="yes">/var/www</directories> <!-- Ignoruj zmienne pliki --> <ignore>/etc/mtab</ignore> <ignore>/etc/mnttab</ignore> <ignore>/etc/resolv.conf</ignore> <ignore type="sregex">^/proc</ignore> </syscheck> <!-- Przeladuj agenta po zmianach --> <!-- sudo systemctl restart wazuh-agent -->
Integracja z Slack — alerty w czasie rzeczywistym
<!-- Fragment ossec.conf na MANAGERZE --> <!-- /var/ossec/etc/ossec.conf lub przez docker volume --> <integration> <name>slack</name> <hook_url>https://hooks.slack.com/services/XXX/YYY/ZZZ</hook_url> <!-- Wyslij alert jesli level >= 7 --> <level>7</level> <alert_format>json</alert_format> </integration> <!-- Tylko alerty FIM (rule group = syscheck) --> <integration> <name>slack</name> <hook_url>https://hooks.slack.com/services/XXX/YYY/ZZZ</hook_url> <group>syscheck</group> <alert_format>json</alert_format> </integration> <!-- Przeladuj managera po zmianach --> <!-- docker restart single-node-wazuh.manager-1 -->
Skanowanie podatności
Wazuh potrafi skanować zainstalowane pakiety i porównywać je z bazą CVE (National Vulnerability Database). Konfiguracja modułu vulnerability-detection:
<!-- ossec.conf na managerze - wlacz vulnerability detection -->
<vulnerability-detection>
<enabled>yes</enabled>
<index-status>yes</index-status>
<!-- Jak czesto skanuj pakiety (minuty) -->
<interval>5m</interval>
<min-full-scan-interval>6h</min-full-scan-interval>
<retry-interval>30m</retry-interval>
</vulnerability-detection>
<!-- Na agencie wlacz inventory zbierania pakietow -->
<wodle name="syscollector">
<disabled>no</disabled>
<interval>1h</interval>
<packages>yes</packages>
<os>yes</os>
</wodle>
<!-- Po konfiguracji przejdz w dashboardzie do:
Vulnerability Detection -> wybierz agenta
Dashboard pokazuje CVE z CVSS score i zalecane aktualizacje -->