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:
co-authored by
Claude Opus 5.5
parent
8ddceda9e2
commit
61232af61c
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user