Setup erkennt Docker oder Podman und deployt entsprechend

- setup.sh erkennt Engine (Docker, Podman, podman-docker-Wrapper) und
  Compose-Werkzeug (docker compose, docker-compose, podman-compose, podman compose)
- Rootless Podman wird mit Hinweis abgelehnt (Ulimits, Port 443, Zertifikatsrechte)
- Als root: vm.max_map_count, firewalld-Port und podman-restart.service setzen
- Neue Befehle: up, down, ps, logs, info; WAZUH_SKIP_SYSCTL und CONTAINER_ENGINE
- Images voll qualifiziert (docker.io/..., localhost/...) wegen Podman-Short-Name-Policy
- Bind-Mounts mit :z fuer SELinux (RHEL)
- README: Abschnitt Red Hat / Podman, Befehle ueber setup.sh

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-10-07 12:21:32 +02:00
co-authored by Claude Opus 5.5
parent 8ddceda9e2
commit 61232af61c
6 changed files with 223 additions and 61 deletions
+40 -10
View File
@@ -56,18 +56,43 @@ device changed“), mit dem Diff im Alarmtext.
## Installation
Voraussetzungen: Docker und docker-compose, ca. 8 GB RAM frei, ca. 10 GB Platz für Images und
Daten. Für den Indexer:
Voraussetzungen: Docker **oder** Podman, ca. 8 GB RAM frei, ca. 10 GB Platz für Images und Daten.
```bash
echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/99-wazuh.conf && sudo sysctl --system
```
`setup.sh` erkennt die Umgebung selbst (`./setup.sh info` zeigt, was erkannt wurde):
| Erkannt | Verwendet |
|---|---|
| Docker | `docker compose` oder `docker-compose` |
| Podman (z. B. RHEL, auch mit podman-docker-Wrapper) | `podman-compose` oder `podman compose` |
| SELinux aktiv | Alle Bind-Mounts haben `:z`. Ohne SELinux wirkt das nicht. |
Als root (`sudo ./setup.sh ...`) passt das Skript das System zusätzlich an:
- `vm.max_map_count=262144` (dauerhaft in `/etc/sysctl.d/99-wazuh.conf`)
- firewalld: Port für das Dashboard freigeben
- Podman: `podman-restart.service` aktivieren, damit der Stack nach einem Reboot startet
Ohne root gibt es dafür nur Hinweise. Mit `WAZUH_SKIP_SYSCTL=1` bleibt der Kernel-Parameter
unangetastet. Mit `CONTAINER_ENGINE=docker|podman` lässt sich die Erkennung übersteuern.
```bash
./setup.sh # Passwörter (.env), TLS-Zertifikate, SSH-Key ssh/id_ed25519, Images bauen
nano hosts.yml # Hosts eintragen (siehe hosts.yml.example)
```
### Red Hat / Podman
```bash
sudo dnf install -y podman openssh-clients
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm # RHEL 9
sudo dnf install -y podman-compose
sudo ./setup.sh # Podman bitte als root, alle weiteren Befehle ebenfalls mit sudo
```
Podman muss als root laufen. Rootless scheitert an den Ulimits der Wazuh-Container (memlock,
nofile), an Port 443 und an den Zertifikatsrechten. `setup.sh` bricht in diesem Fall mit einem
Hinweis ab.
### Zielhosts vorbereiten
Auf jedem Host wird ein Benutzer `wazuh-pull` angelegt. Er bekommt die Gruppen
@@ -87,7 +112,7 @@ Das Skript erst ansehen, dann ausführen: `./setup.sh host-script`
```bash
./setup.sh keyscan # Host-Keys -> ssh/known_hosts, Fingerprints mit den Hosts vergleichen!
./setup.sh test # prüft Login, Gruppen, Journal-/Datei-Leserechte
docker-compose up -d
./setup.sh up # starten (down, ps, logs [dienst] analog)
./setup.sh passwords # Login fürs Dashboard: https://<server>/ (admin / ...)
```
@@ -143,13 +168,18 @@ Ports 1514 und 1515 sind nicht nach außen veröffentlicht. Nur der Collector er
## Fehlersuche
```bash
docker-compose logs -f sshpull.collector # Verbindungen/Reconnects pro Host
docker-compose exec wazuh.manager grep -i agentless /var/ossec/logs/ossec.log
docker-compose exec wazuh.manager ls -la /remote-logs/web01/ # kommen Logs an?
./setup.sh logs sshpull.collector # Verbindungen/Reconnects pro Host
./setup.sh logs wazuh.manager | grep -i agentless
```
Für `exec` die passende Engine nehmen (`docker` oder `sudo podman`). Die Containernamen zeigt
`./setup.sh ps`, z. B.:
`sudo podman exec wazuh_wazuh.manager_1 ls -la /remote-logs/web01/`
- `journal=WARNUNG:nur-eigene-Logs…` bei `./setup.sh test`: Der Benutzer ist nicht in der
Gruppe `systemd-journal`. Danach neu einloggen bzw. den Collector neu starten.
- Podman: Hängt `./setup.sh up` bei „podman wait“, konnte ein Container nicht angelegt werden.
Die Ursache zeigt `sudo podman-compose --verbose up -d 2>&1 | grep -i error`.
- `Host key verification failed`: `./setup.sh keyscan` ausführen, oder in `hosts.yml`
`ssh.host_key_checking: accept-new` setzen.
- Agentless-Checks laufen das erste Mal kurz nach dem Start, danach alle `interval` Sekunden.
@@ -157,6 +187,6 @@ docker-compose exec wazuh.manager ls -la /remote-logs/web01/ # kommen Logs an?
laufen nacheinander. Bei vielen Hosts mit großen Pfaden (`/usr`) das `interval` großzügig
wählen.
- Baseline eines Hosts neu anlegen (z. B. nach einem gewollten Update):
`docker-compose exec wazuh.manager rm /var/ossec/agentless/.sshpull/web01.json`
`<docker|podman> exec wazuh_wazuh.manager_1 rm /var/ossec/agentless/.sshpull/web01.json`
- Ohne `sudo` sind root-only Dateien (z. B. `/etc/shadow`, Host-Keys) nur über Größe, Rechte
und Besitzer überwacht, nicht über den Inhalt.