Rolling Documentation: Opportunistisches Host-Scanning hinzugefügt
This commit is contained in:
155
CLAUDE.md
155
CLAUDE.md
@@ -466,6 +466,161 @@ Nach Abschluss der Dokumentationsarbeit, erstelle eine Vergleichstabelle:
|
||||
|
||||
**Dieser Prozess ist nicht optional.** Dokumentationsverlust durch unvollständige Arbeit ist inakzeptabel.
|
||||
|
||||
### Rolling Documentation: Opportunistisches Host-Scanning
|
||||
|
||||
**Prinzip:** Wenn du während deiner Arbeit Zugriff auf einen Host bekommst, führe einen VOLLSTÄNDIGEN Scan durch - nicht nur für die aktuelle Aufgabe.
|
||||
|
||||
#### Auslöser
|
||||
|
||||
- SSH-Zugriff auf einen Host
|
||||
- Web-UI Zugriff (pfsense, NPM, etc.)
|
||||
- API-Zugriff
|
||||
|
||||
#### Workflow bei Host-Zugriff
|
||||
|
||||
1. **Prüfe:** Existiert `infrastructure/hosts/[hostname].md`?
|
||||
2. **Falls nein oder unvollständig:** Vollständigen Scan durchführen
|
||||
3. **Dann erst:** Ursprüngliche Aufgabe erledigen
|
||||
|
||||
#### Scan-Checkliste nach Host-Typ
|
||||
|
||||
**Netzwerk-Geräte (pfsense, Router):**
|
||||
- [ ] Interfaces (Name, IP, Netz)
|
||||
- [ ] ALLE Firewall-Regeln (nicht nur relevante!)
|
||||
- [ ] ALLE Aliases
|
||||
- [ ] NAT-Regeln (Port-Forwards, Outbound)
|
||||
- [ ] DHCP/DNS-Konfiguration
|
||||
- [ ] System-Version
|
||||
- [ ] **ABHÄNGIGKEITEN:** Welche Hosts/Dienste hängen von diesem Gerät ab?
|
||||
|
||||
**Linux-Server:**
|
||||
- [ ] OS/Version
|
||||
- [ ] Interfaces und IPs
|
||||
- [ ] Laufende Dienste
|
||||
- [ ] Docker-Container
|
||||
- [ ] Offene Ports
|
||||
- [ ] Wichtige Configs
|
||||
- [ ] **ABHÄNGIGKEITEN:** Welche anderen Hosts braucht dieser Server? Wer braucht ihn?
|
||||
|
||||
**Windows-Server:**
|
||||
- [ ] OS/Version
|
||||
- [ ] Interfaces und IPs
|
||||
- [ ] Dienste und geplante Tasks
|
||||
- [ ] Installierte Rollen
|
||||
- [ ] **ABHÄNGIGKEITEN:** Verbindungen zu anderen Systemen
|
||||
|
||||
#### PFLICHT: Abhängigkeiten dokumentieren
|
||||
|
||||
**Bei JEDEM Host-Scan müssen die Abhängigkeiten erfasst werden:**
|
||||
|
||||
| Frage | Dokumentieren in |
|
||||
|-------|------------------|
|
||||
| Welche Hosts/Dienste braucht dieser Host? | `hosts/[host].md` → Abschnitt "Abhängigkeiten" |
|
||||
| Welche Hosts/Dienste hängen von diesem Host ab? | `hosts/[host].md` → Abschnitt "Abhängig von diesem Host" |
|
||||
| Gibt es Abhängigkeitsketten? | `dependencies.md` → Mermaid-Diagramm |
|
||||
|
||||
**Ziel:** Anhand der Dokumentation muss erkennbar sein:
|
||||
- Was passiert wenn Host X ausfällt?
|
||||
- Welche Dienste sind von Änderungen an Host X betroffen?
|
||||
- Welche Hosts müssen vor Host X gestartet werden?
|
||||
|
||||
**Beispiel Abhängigkeits-Dokumentation:**
|
||||
|
||||
```markdown
|
||||
## Abhängigkeiten
|
||||
|
||||
Dieser Host benötigt:
|
||||
- **srv-docker02** (10.10.10.81) - n8n Backend
|
||||
- **srv-nu-dc01** (10.10.10.111) - DNS-Auflösung
|
||||
|
||||
## Abhängig von diesem Host
|
||||
|
||||
Folgende Dienste/Hosts sind von diesem Host abhängig:
|
||||
- **flow.wvits.de** - Webhook-Zugang fällt aus wenn dieser Host down ist
|
||||
- **n8n.vinos.de** - Interner Zugang über diesen NPM
|
||||
|
||||
## Impact bei Ausfall
|
||||
|
||||
| Ausfall-Szenario | Betroffene Dienste |
|
||||
|------------------|-------------------|
|
||||
| Komplett-Ausfall | flow.wvits.de, n8n.vinos.de, ... |
|
||||
| Nur Port 443 | HTTPS-Zugriff auf alle proxied Dienste |
|
||||
```
|
||||
|
||||
**dependencies.md aktualisieren:**
|
||||
|
||||
Nach jedem Host-Scan prüfen ob `infrastructure/dependencies.md` aktualisiert werden muss:
|
||||
- Neue Abhängigkeitskette entdeckt? → Mermaid-Diagramm ergänzen
|
||||
- Impact-Analyse hinzufügen
|
||||
- Repo-Links aktualisieren
|
||||
|
||||
#### Beispiel
|
||||
|
||||
**Aufgabe:** Firewall-Regel für srv-revproxy01 prüfen
|
||||
|
||||
| Falsch | Richtig |
|
||||
|--------|---------|
|
||||
| Nur die eine Regel prüfen | Erst: Existiert hosts/gw-nu-dmz02.md? |
|
||||
| Session beenden | Nein → Vollständigen Scan aller Regeln, Aliases, Interfaces |
|
||||
| | Host-Datei erstellen |
|
||||
| | Dann: Ursprüngliche Aufgabe |
|
||||
|
||||
#### Rekursive Host-Entdeckung (WICHTIG!)
|
||||
|
||||
**Wenn du bei einem Scan Referenzen zu anderen Hosts siehst, gehe AUTOMATISCH weiter:**
|
||||
|
||||
Entdeckungsquellen:
|
||||
- Firewall-Regeln (Ziel-IPs, Aliases)
|
||||
- NAT-Regeln (Forward-Ziele)
|
||||
- DNS-Einträge
|
||||
- Docker-Compose (externe Hosts)
|
||||
- Konfigurationsdateien
|
||||
- Log-Einträge
|
||||
- Netzwerk-Verbindungen
|
||||
|
||||
**Workflow:**
|
||||
|
||||
```
|
||||
Host A scannen
|
||||
↓
|
||||
Entdecke Referenz zu Host B (z.B. in Firewall-Regel)
|
||||
↓
|
||||
Kann ich Host B erreichen?
|
||||
├─ JA → Host B scannen (rekursiv)
|
||||
└─ NEIN → Host B in Entdeckungsliste aufnehmen
|
||||
```
|
||||
|
||||
**Entdeckungsliste führen:**
|
||||
|
||||
Wenn ein Host nicht gescannt werden kann (kein Zugriff, keine Credentials, etc.):
|
||||
|
||||
```markdown
|
||||
## Entdeckte aber nicht gescannte Hosts
|
||||
|
||||
| Host | IP | Entdeckt in | Grund für fehlenden Scan |
|
||||
|------|----|-------------|-------------------------|
|
||||
| srv-xyz01 | 10.10.10.99 | gw-nu-dmz02 Firewall-Regel | Kein SSH-Zugriff |
|
||||
| db-server | 10.10.20.5 | docker-compose.yml | Credentials unbekannt |
|
||||
```
|
||||
|
||||
**Der User muss dich NICHT auf jeden Host einzeln hinweisen!**
|
||||
|
||||
Du sollst selbstständig:
|
||||
1. Referenzen zu anderen Hosts erkennen
|
||||
2. Versuchen diese zu scannen
|
||||
3. Falls nicht möglich: Dokumentieren was du entdeckt hast
|
||||
4. Beim nächsten Mal nachfragen ob Zugriff jetzt möglich ist
|
||||
|
||||
#### Effizienz
|
||||
|
||||
Nutze parallele Agenten für umfangreiche Scans und rekursive Entdeckung.
|
||||
|
||||
#### Ausnahmen
|
||||
|
||||
- Zeitkritische Notfälle (erst fixen, dann dokumentieren)
|
||||
- Explizite User-Anweisung nur aktuelle Aufgabe zu erledigen
|
||||
- User sagt explizit "nicht weiter scannen"
|
||||
|
||||
### Skills-Referenz
|
||||
|
||||
| Skill | Zweck |
|
||||
|
||||
Reference in New Issue
Block a user