Integracja Wazuh z Terraform Połączenie Wazuh z Terraformem polega na zautomatyzowaniu wdrażania i utrzymania infrastruktury (serwery, agenty, konfiguracja bezpieczeństwa), którą następnie monitoruje Wazuh. Dzięki temu możesz budować środowiska w modelu Infrastructure as Code (IaC) i od razu objąć je centralnym monitoringiem bezpieczeństwa.
Typowy scenariusz:
- Terraform tworzy infrastrukturę (VM, sieci, security groups, load balancer, itp.) np. w AWS, Azure lub on-prem.
- W ramach procesu provisioning:
- instalowany jest agent Wazuh na każdej maszynie,
- agent automatycznie rejestruje się w Wazuh Manager.
- Wazuh monitoruje:
- integralność plików (FIM),
- logi systemowe,
- podatności (Vulnerability Detection),
- konfigurację zgodności (compliance, np. CIS),
- zdarzenia bezpieczeństwa.
Efekt: każda nowa maszyna utworzona przez Terraform automatycznie trafia pod nadzór SOC.
Czym jest Wazuh?
Wazuh to platforma klasy SIEM/XDR/EDR, służąca do:
- monitorowania integralności plików (FIM),
- analizy logów i korelacji zdarzeń,
- wykrywania zagrożeń i anomalii,
- kontroli zgodności (compliance),
- monitorowania podatności,
- reagowania na incydenty.
Architektura opiera się na:
- Wazuh Manager – centralny serwer,
- Agentach instalowanych na hostach,
- API REST (port 55000),
- warstwie indeksowania (OpenSearch).
W Twoim labie (Proxmox + testy XDR) Wazuh może pełnić rolę dodatkowego silnika detekcji i korelacji zdarzeń z VM.
Czym jest Terraform?
Terraform to narzędzie Infrastructure as Code (IaC), które:
- definiuje infrastrukturę w plikach HCL,
- wykonuje
terraform plan, - realizuje zmiany przez
terraform apply, - utrzymuje stan infrastruktury w pliku
terraform.tfstate.
Zamiast ręcznego:
- klikania w GUI,
- wywoływania curl,
- instalowania agentów ręcznie,
opisujesz wszystko jako kod.
Połączenie Wazuh + Terraform
W Twoim przykładzie:
- Terraform używa provider
restapido komunikacji z API Wazuh. - Rejestruje agenta przez REST API.
- Następnie przez
remote-execinstaluje i enroluje agenta na hoście.
Czyli:
Terraform ➜ API Wazuh ➜ Rejestracja agenta
Terraform ➜ SSH ➜ Instalacja i konfiguracja agenta
To podejście automatyzuje cały lifecycle.
Poniżej kompletna lista elementów, które muszą być przygotowane, aby działała automatyczna rejestracja i instalacja agenta Wazuh z użyciem Terraform.
Uruchomiony serwer Wazuh
Co musi działać:
1. Wazuh Manager
- Usługa aktywna (
systemctl status wazuh-manager) - Port 1514/1515 (agent communication)
- API REST (port 55000)
2. API dostępne z serwera Terraform
Sprawdzenie:
curl -k https://IP_WAZUH:55000
Odpowiedź {„title”: „Unauthorized”, „detail”: „No authorization token provided”} oznacza że API Wazuh jest dostępne dla serwera Terraform. Wyciągnijmy teraz dane potrzebne do komunikacji z Wazuh, czyli API token
grep -r "password\|api.*user" /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml 2>/dev/null | grep -v "^#"
Uzyskaliśmy hasło do pobrania API token
Skopiuj z sekcji password:, hasło bez nawiasu. Wklej hasło za wazuh-wui:
curl -u wazuh-wui:Twoje_hało -k -X POST "https://IP_serwera_Wazuh:55000/security/user/authenticate"
Po wykonaniu komendy skopiuj, także bez nawiasów ciąg znaków za sekcją „token”:
Zapisz token np. w notatniku, będzie później potrzebny do konfiguracji w pliku main.tf !
Instalacja Terraform
Kolejnym krokiem jest utworzenie serwera (ubuntu lub debian) oraz zainstalowanie na nim Terraform. Po zainstalowaniu serwera, zaloguj się na niego. Zainstaluj wymagane paczki:
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common

Zainstaluj klucz GPG:
wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null

Dodaj oficjalne repozytorium HashiCorp:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

Aktualizuj repozytoria:
sudo apt update

Zainstaluj Terraform i potwierdź instalację klawiszem „y„:
sudo apt-get install terraform

Sprawdź zainstalowaną wersję Terraform (w dniu pisania artykułu, moja wersja to 1.44.6):
terraform -v

Instalacja agenta Wazuh za pomocą Terraform
Na serwerze z zainstalowanym Terraform, utwórz plik main.tf
locals {
wazuh_url = "https://Adres_IP_SERWERA_WAZUH:55000"
wazuh_token = "Twój_API_Token"
}
resource "null_resource" "wazuh_agent_host74" {
triggers = {
agent_ip = "Adres_IP_AGENTA"
agent_name = "terraform"
}
provisioner "local-exec" {
command = <<-EOT
AGENT_EXISTS=$(curl -s -k -X GET \
"${local.wazuh_url}/agents?search=terraform" \
-H "Authorization: Bearer ${local.wazuh_token}" | python3 -c "
import sys, json
data = json.load(sys.stdin)
print(data['data']['total_affected_items'])
")
if [ "$AGENT_EXISTS" = "0" ]; then
curl -s -k -X POST "${local.wazuh_url}/agents" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${local.wazuh_token}" \
-d '{"name":"terraform","ip":"Adres_IP_AGENTA","groups":["default"]}' \
| python3 -m json.tool
echo "Agent zarejestrowany"
else
echo "Agent terraform już istnieje - pomijam"
fi
EOT
}
}
resource "null_resource" "wazuh_agent_install" {
depends_on = [null_resource.wazuh_agent_host74]
triggers = {
agent_ip = "Adres_IP_AGENTA"
}
provisioner "remote-exec" {
connection {
type = "ssh"
host = "Adres_IP_AGENTA"
user = "root"
password = var.ssh_password
}
inline = [
"wget -q https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.14.3-1_amd64.deb",
"sudo WAZUH_MANAGER='Adres_IP_SERWERA_WAZUH' WAZUH_AGENT_GROUP='linux-servers,default' WAZUH_AGENT_NAME='terraform' dpkg -i ./wazuh-agent_4.14.3-1_amd64.deb",
"systemctl stop wazuh-agent",
"/var/ossec/bin/agent-auth -m Adres_IP_SERWERA_WAZUH",
"systemctl enable wazuh-agent",
"systemctl start wazuh-agent",
"echo 'Wazuh agent zainstalowany, enrolled i uruchomiony'"
]
}
}
Utwórz plik provider.tf
provider "restapi" {
uri = "https://Adres_IP_SERWERA_WAZUH:55000"
write_returns_object = true
insecure = true
headers = {
"Content-Type" = "application/json"
"Authorization" = "Bearer Twój_API_Token"
}
}
Utwórz plik variables.tf
variable "ssh_password" {
sensitive = true
}
Utwórz plik versions.tf
terraform {
required_providers {
restapi = {
source = "Mastercard/restapi"
version = "~> 1.19"
}
}
}
Po skonfigurowaniu zapisaniu wszystkich czterech plików, wykonaj komendę pobrania providera oraz zainicjalizowanie Terraform
terraform init
Jeśli konfiguracja jest poprawna ujrzysz „Terraform has been successfully initialized!”

Kolejna komenda planuje i podsumowuje konfigurację:
terraform plan
Wyskoczy prośba o wpisanie hasła serwera na którym ma być zainstalowany Wazuh agent (serwer musi mieć skonfigurowane ssh, do poprawnej komunikacji), wpisz hasło do serwera i zatwierdź enter

Jeśli wszystko masz dobrze skonfigurowane ujrzysz, podsumowanie planu:
By wykonać automatyzacje, wpisz komendę terraform apply, ponownie zostaniesz zapytany o hasło do serwera ,na którym ma być zainstalowany agent:
terrarom apply

Po zatwierdzeniu hasła, za sekcją Enter a value: wpisz „yes„
Po upływie +- minuty pojawi się podsumowanie z utworzonym agentem w Wazuh:
Przejdź do przeglądarki, zaloguj się do Wazuh, pojawi się aktywny agent Terraform
Jeśli chcesz dodać kolejnego agenta, wpisz komendę terraform destroy, podaj hasło i wpisz „yes„:
terraform destroy

Następnie w pliku main.tf, podmień adresy IP na docelowy serwer, na którym ma być zainstalowany agent Wazuh, oraz zmień nazwę agenta:

Wykonaj analogicznie komendy:
terraform plan
terraform apply
Gotowe! Masz już skonfigurowanego Terraform, który dodaje agenta na wskazaną maszynę z pliku konfiguracyjnego main.tf!
Podsumowanie
Artykuł opisuje integrację Wazuh z Terraformem w celu automatyzacji wdrażania infrastruktury oraz instalacji i rejestracji agentów w modelu Infrastructure as Code (IaC). Terraform odpowiada za tworzenie i zarządzanie infrastrukturą, natomiast Wazuh zapewnia centralny monitoring bezpieczeństwa wszystkich wdrożonych zasobów.
W typowym scenariuszu Terraform tworzy maszyny wirtualne, sieci oraz inne zasoby w chmurze lub środowisku lokalnym. W trakcie procesu provisioning na każdej maszynie instalowany jest agent Wazuh, który następnie automatycznie rejestruje się w Wazuh Manager. Dzięki temu nowe serwery od razu trafiają pod nadzór systemu bezpieczeństwa i są monitorowane pod kątem integralności plików, logów systemowych, podatności, zgodności z politykami bezpieczeństwa oraz zdarzeń incydentalnych.
Wazuh jest platformą klasy SIEM/XDR/EDR służącą do analizy logów, wykrywania zagrożeń, monitorowania podatności, kontroli zgodności oraz reagowania na incydenty. Architektura składa się z Wazuh Managera, agentów instalowanych na hostach, API REST działającego na porcie 55000 oraz warstwy indeksowania opartej na OpenSearch. W środowisku laboratoryjnym może pełnić rolę centralnego systemu detekcji dla maszyn wirtualnych.
Terraform jest narzędziem Infrastructure as Code, które pozwala definiować infrastrukturę w plikach konfiguracyjnych, planować zmiany oraz je wdrażać w sposób automatyczny. Konfiguracja jest zapisywana w kodzie, a stan infrastruktury jest przechowywany w pliku stanu Terraform. Zastępuje to ręczne wykonywanie operacji w interfejsach graficznych lub poprzez pojedyncze komendy administracyjne.
Integracja polega na wykorzystaniu providera restapi w Terraform do komunikacji z API Wazuh. Terraform może rejestrować agenta przez REST API, a następnie poprzez mechanizm remote-exec łączyć się przez SSH z maszyną docelową i instalować na niej agenta. W efekcie cały proces obejmuje rejestrację w systemie Wazuh, instalację oprogramowania oraz jego uruchomienie.
Do działania rozwiązania wymagany jest uruchomiony Wazuh Manager z aktywnym API, dostęp do portu 55000, wygenerowany token uwierzytelniający oraz poprawnie skonfigurowany serwer z Terraformem. Maszyna docelowa musi mieć dostęp SSH oraz możliwość instalacji pakietu agenta. Po wykonaniu komend terraform init, terraform plan i terraform apply agent zostaje automatycznie dodany i pojawia się jako aktywny w panelu Wazuh.
Artykuł wskazuje również możliwość usunięcia konfiguracji za pomocą terraform destroy oraz ponownego wdrożenia agenta na innej maszynie poprzez zmianę adresów IP i nazwy w pliku konfiguracyjnym. Całość pozwala na budowę zautomatyzowanego środowiska, w którym infrastruktura i jej monitoring są zarządzane jako kod.
Bezpłatne warsztaty: NMAP – Skanowanie Urządzeń i Portów w Sieci
Dowiedz się, jak wykrywać urządzenia w sieci, skanować porty i identyfikować usługi przy użyciu narzędzia NMAP. Poznasz podstawy skanowania, analizę wyników oraz praktyczne zastosowania w audycie bezpieczeństwa i testach penetracyjnych.
Środa, 18 marca o 14:00

