docs(issues): #0008 - retract the open resolver, keep the lesson

Measured from the cluster the port is shut; measured from sorb's Mac it answered,
because the lab reaches CFGMON over the site coupling, which the cloud firewall does
not filter. The rule is fine and so is the service.

What was actually broken is my check: its counter-probe proves the method works, not
that the vantage point is external. pruefe-ports.sh now probes its own location
first and refuses to score the closed-port half from a privileged network.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Thore Cimbal
2026-08-19 12:00:00 +00:00
co-authored by Claude Opus 5
parent c362294bed
commit 23117472e6
@@ -128,26 +128,32 @@ Sauber gelöst ist der Rest von CFGMON: SSH (2248), Grafana (3000), Coolify (900
80008001) und WireGuard (51841) sind quellbeschränkt auf sorbs Anschluss; cadvisor
(8080) und node-exporter (9100) nur für `157.90.155.206`.
### ⚠️ Offener rekursiver DNS-Resolver auf CFGMON
### ~~Offener rekursiver DNS-Resolver auf CFGMON~~ — WIDERRUFEN am selben Tag
Beim Nachmessen der freigegebenen Ports gefunden, **nicht Gegenstand dieses Issues,
aber schwerwiegender**: `188.245.193.243:53` beantwortet Anfragen **aus dem
öffentlichen Internet**, über TCP *und* UDP, **rekursiv für beliebige Fremddomains**:
**Der Befund war falsch.** Ich hatte gemeldet, `188.245.193.243:53` löse für jeden im
Internet rekursiv auf, samt Amplifikations-Rechnung. sorbs Rückfrage („dir ist schon
klar, dass beide Netze gerade per VPN verbunden sind?") hat es aufgeklärt.
```
dig @188.245.193.243 google.com A
;; flags: qr rd ra; QUERY: 1, ANSWER: 6 <- ra = Rekursion verfügbar
```
Nachgemessen **aus dem Cluster** (Hetzner-Egress, weder Lab noch Standortkopplung):
Die sichtbare Firewall-Regel für 53 erlaubt als Quelle nur `10.58.73.17` — erreichbar
ist der Dienst trotzdem von einer öffentlichen IP. Entweder existiert eine zweite,
weiter gefasste Regel, oder die Beschränkung greift nicht.
| Port | von sorbs Mac | aus dem Cluster |
|---|---|---|
| 443 (Gegenprobe) | offen | **offen** — Methode gültig |
| 53 | offen, rekursiv | **zu** |
| 9001 (nur sorbs Anschluss) | offen | **zu** |
**Warum das zählt:** Ein offener Resolver ist der klassische Reflektor für
DDoS-Amplifikation. Mit gefälschter Absender-IP wird CFGMON zum Werkzeug in einem
Angriff auf **Dritte** — gemessen ~275 Byte Antwort auf ~40 Byte Anfrage, und der
Faktor lässt sich vom Angreifer über die Abfrage vergrößern. Die Folgen treffen dabei
uns: Beschwerden beim Provider, Sperrlisten, im Zweifel Abuse-Verfahren.
Öffentlich ist 53 also **geschlossen**. Die Firewall-Regel (Quelle `10.58.73.17` =
Dokploy/git) ist in Ordnung; Verkehr über die Standortkopplung filtert die
Cloud-Firewall nicht, deshalb antwortet der Dienst aus dem Lab. Genau so gedacht.
Das ist die Klasse dieses Issues, nur an einem Port, auf den niemand geschaut hat.
Gehört als eigener Befund verfolgt, nicht hier mitentschieden.
**Die eigentliche Lehre betrifft mein Werkzeug, nicht die Infrastruktur.** Die
Gegenprobe in `pruefe-ports.sh` beweist, dass die *Messmethode* funktioniert — sie
beweist **nicht**, dass man von *außen* misst. Zwei verschiedene Fragen, und ich hatte
nur eine beantwortet. Das Skript führt jetzt vor allem anderen eine **Standort-Probe**
aus (ein Port, den die Firewall nur für sorbs Anschluss freigibt): Antwortet er, werden
alle „soll zu"-Prüfungen berichtet, aber **nicht gewertet**. Für diese Hälfte muss das
Skript aus einem fremden Netz laufen.
Zweiter Fehlalarm binnen zweier Tage aus derselben Wurzel — erst `/dev/tcp` in der zsh,
das jeden Port als geschlossen meldete, jetzt der Standort. Beide Male sah das Ergebnis
plausibel aus.