Firewall-Check fuer den Dashboard-Port einbauen
- firewall-check.sh (auch ./setup.sh firewall): prueft Listener, Container- Portweiterleitung (DNAT), ip_forward, firewalld, ufw/ufw-docker, iptables (INPUT, DOCKER-USER), natives nftables, CSF, Shorewall und lokalen HTTPS-Test - Legt fehlende Regeln an (Rueckfrage, --yes ohne, --check nur pruefen); Podman: podman network reload --all bei fehlender Weiterleitung - Erkennt "TCP offen, aber kein HTTPS" (conmon haelt Port nur reserviert) - setup.sh: kein firewall-cmd --reload mehr (loescht ggf. Container-Regeln), up ruft stattdessen den Firewall-Check auf - README: Abschnitt Firewall-Check 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
e6aad53fb5
commit
174c10505a
@@ -69,7 +69,7 @@ Voraussetzungen: Docker **oder** Podman, ca. 8 GB RAM frei, ca. 10 GB Platz für
|
||||
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
|
||||
- Firewall-Check: Dashboard-Port prüfen und fehlende Regeln anlegen (siehe unten)
|
||||
- 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
|
||||
@@ -147,6 +147,38 @@ Der erste Start dauert 1–3 Minuten, bis der Indexer bereit ist.
|
||||
erzeugt. Der Manager schreibt seine Agentless- und Localfile-Konfiguration beim Start aus
|
||||
`hosts.yml` neu (`manager/generate.py`).
|
||||
|
||||
## Dashboard nicht erreichbar? Firewall-Check
|
||||
|
||||
```bash
|
||||
sudo ./setup.sh firewall # = sudo ./firewall-check.sh (prüft, fragt vor Änderungen)
|
||||
sudo ./setup.sh firewall --yes # fehlende Regeln ohne Rückfrage anlegen
|
||||
./setup.sh firewall --check # nur prüfen
|
||||
```
|
||||
|
||||
Geprüft wird der Dashboard-Port aus `.env` (anderer Port: `--port N`, Dienst ohne HTTPS: `--tcp`):
|
||||
|
||||
| Prüfung | Automatische Behebung |
|
||||
|---|---|
|
||||
| Lauscht etwas auf dem Port (nicht nur auf 127.0.0.1)? | – |
|
||||
| Container-Portweiterleitung (DNAT) vorhanden? | Podman: `podman network reload --all`. Docker: nur Hinweis, weil `systemctl restart docker` alle Container neu startet. |
|
||||
| `net.ipv4.ip_forward` | einschalten (dauerhaft) |
|
||||
| firewalld (Zone des Interfaces mit Default-Route) | Port freigeben, sofort und dauerhaft, **ohne** `--reload` |
|
||||
| ufw, auch ufw-docker | `ufw allow` bzw. `ufw route allow` |
|
||||
| iptables (INPUT-Policy, DOCKER-USER) | ACCEPT-Regel. Wird gespeichert, wenn netfilter-persistent oder iptables-services vorhanden ist. |
|
||||
| natives nftables (eigene `input`-Kette mit drop) | `nft insert rule …` (dauerhaft selbst in nftables.conf eintragen) |
|
||||
| CSF, Shorewall | erkennen, nur Hinweis |
|
||||
| Lokaler HTTPS-Test (localhost und Server-IP) | – |
|
||||
|
||||
**Typischer Fall „netstat zeigt den Port, aber nichts kommt an“:** Bei Podman hält `conmon`
|
||||
den Port reserviert, auch wenn die Portweiterleitung fehlt. Das passiert z. B., wenn die
|
||||
Firewall nach dem Container-Start neu geladen wurde (`firewall-cmd --reload`, Neustart von
|
||||
iptables/nftables). Der Check erkennt das am fehlenden DNAT bzw. an „TCP offen, aber kein
|
||||
HTTPS“ und lädt die Podman-Regeln neu.
|
||||
|
||||
`./setup.sh up` ruft den Check nach dem Start automatisch auf, als root mit `--yes`. Sperren
|
||||
außerhalb des Servers (Cloud-Firewall, Proxmox-Firewall, Netzwerk-Firewall) kann er nicht
|
||||
sehen. Dafür von einem anderen Rechner testen: `curl -kI https://<server>:443`
|
||||
|
||||
## Wo finde ich die Daten im Dashboard?
|
||||
|
||||
Per SSH geholte Logs und Agentless-Ergebnisse laufen **über den Manager**. Im Dashboard
|
||||
@@ -180,6 +212,8 @@ Ports 1514 und 1515 sind nicht nach außen veröffentlicht. Nur der Collector er
|
||||
| Pfad | Zweck |
|
||||
|---|---|
|
||||
| `hosts.yml` | Die einzige Stelle für Hosts und Optionen |
|
||||
| `setup.sh` | Einrichtung und Betrieb (erkennt Docker/Podman) |
|
||||
| `firewall-check.sh` | Erreichbarkeit des Dashboard-Ports prüfen und reparieren |
|
||||
| `docker-compose.yml` | Stack. Nach außen geht nur das Dashboard (`DASHBOARD_PORT`) |
|
||||
| `.env` | Version, Zeitzone, Passwörter (von `setup.sh` erzeugt, nicht committen) |
|
||||
| `ssh/` | `id_ed25519` (privater Schlüssel, nicht committen), `known_hosts` |
|
||||
|
||||
Reference in New Issue
Block a user