Integracja Terraform + Wazuh + Wazuh agent

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:

  1. Terraform tworzy infrastrukturę (VM, sieci, security groups, load balancer, itp.) np. w AWS, Azure lub on-prem.
  2. W ramach procesu provisioning:
    • instalowany jest agent Wazuh na każdej maszynie,
    • agent automatycznie rejestruje się w Wazuh Manager.
  3. 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.

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

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 


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:

  1. Terraform używa provider restapi do komunikacji z API Wazuh.
  2. Rejestruje agenta przez REST API.
  3. Następnie przez remote-exec instaluje 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

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 

 

 

Darmowe warsztaty NMAP - Skanowanie Urządzeń i Portów W Sieci

X