Sicherheitsstatus
Dieser Commit ist enthalten in:
122
JOURNAL.md
122
JOURNAL.md
@@ -567,4 +567,124 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
|
||||
- ✅ "Nicht sicher" Warnung in Chrome behoben
|
||||
- ✅ Saubere SSL-Konfiguration ohne Mixed Content
|
||||
- ✅ Verbesserte Sicherheits-Header implementiert
|
||||
- ✅ Admin Panel zeigt jetzt grünes Schloss-Symbol
|
||||
- ✅ Admin Panel zeigt jetzt grünes Schloss-Symbol
|
||||
|
||||
### 2025-06-07 - Sicherheitslücke geschlossen: License Server Port
|
||||
- Direkter Zugriff auf License Server Port 8443 entfernt
|
||||
- Sicherheitsanalyse der exponierten Ports durchgeführt
|
||||
|
||||
**Identifiziertes Problem:**
|
||||
- License Server war direkt auf Port 8443 von außen erreichbar
|
||||
- Umging damit die Nginx-Sicherheitsschicht und Security Headers
|
||||
- Besonders kritisch, da nur Platzhalter ohne echte Sicherheit
|
||||
|
||||
**Durchgeführte Änderung:**
|
||||
- Port-Mapping für License Server in docker-compose.yaml entfernt
|
||||
- Service ist jetzt nur noch über Nginx Reverse Proxy erreichbar
|
||||
- Gleiche Sicherheitskonfiguration wie Admin Panel
|
||||
|
||||
**Aktuelle Port-Exposition:**
|
||||
- ✅ Nginx: Port 80/443 (benötigt für externen Zugriff)
|
||||
- ✅ PostgreSQL: Keine Ports exponiert (gut)
|
||||
- ✅ Admin Panel: Nur über Nginx erreichbar
|
||||
- ✅ License Server: Nur über Nginx erreichbar (vorher direkt auf 8443)
|
||||
|
||||
**Weitere identifizierte Sicherheitsthemen:**
|
||||
1. Credentials im Klartext in .env Datei
|
||||
2. SSL-Zertifikate im Repository gespeichert
|
||||
3. License Server noch nicht implementiert
|
||||
|
||||
**Empfehlung:** Docker-Container neu starten für Änderungsübernahme
|
||||
|
||||
### 2025-06-07 - License Server Port 8443 wieder aktiviert
|
||||
- Port 8443 für direkten Zugriff auf License Server wieder geöffnet
|
||||
- Notwendig für Client-Software Lizenzprüfung
|
||||
|
||||
**Begründung:**
|
||||
- Client-Software benötigt direkten Zugriff für Lizenzprüfung
|
||||
- Umgehung von möglichen Firewall-Blockaden auf Port 443
|
||||
- Weniger Latenz ohne Nginx-Proxy
|
||||
- Flexibilität für verschiedene Client-Implementierungen
|
||||
|
||||
**Konfiguration:**
|
||||
- License Server erreichbar über:
|
||||
- Direkt: Port 8443 (für Client-Software)
|
||||
- Via Nginx: https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com (für Browser/Tests)
|
||||
|
||||
**Sicherheitshinweis:**
|
||||
- Port 8443 ist wieder direkt exponiert
|
||||
- License Server muss vor Produktivbetrieb implementiert werden mit:
|
||||
- Eigener SSL-Konfiguration
|
||||
- API-Key Authentifizierung
|
||||
- Rate Limiting
|
||||
- Input-Validierung
|
||||
|
||||
**Status:**
|
||||
- Port-Mapping in docker-compose.yaml wiederhergestellt
|
||||
- Änderung erfordert Docker-Neustart
|
||||
|
||||
### 2025-06-07 - Rate-Limiting und Brute-Force-Schutz implementiert
|
||||
- Umfassender Schutz vor Login-Angriffen mit IP-Sperre
|
||||
- Dashboard-Integration für Sicherheitsüberwachung
|
||||
|
||||
**Implementierte Features:**
|
||||
1. **Rate-Limiting System:**
|
||||
- 5 Login-Versuche erlaubt, danach 24h IP-Sperre
|
||||
- Progressive Fehlermeldungen (zufällig aus 5 lustigen Varianten)
|
||||
- CAPTCHA nach 2 Fehlversuchen (Google reCAPTCHA v2 vorbereitet)
|
||||
- E-Mail-Benachrichtigung bei Sperrung (vorbereitet, deaktiviert für PoC)
|
||||
|
||||
2. **Timing-Attack Schutz:**
|
||||
- Mindestens 1 Sekunde Antwortzeit bei allen Login-Versuchen
|
||||
- Gleiche Antwortzeit bei richtigem/falschem Username
|
||||
- Verhindert Username-Enumeration
|
||||
|
||||
3. **Lustige Fehlermeldungen (zufällig):**
|
||||
- "NOPE!"
|
||||
- "ACCESS DENIED, TRY HARDER"
|
||||
- "WRONG! 🚫"
|
||||
- "COMPUTER SAYS NO"
|
||||
- "YOU FAILED"
|
||||
|
||||
4. **Dashboard-Sicherheitswidget:**
|
||||
- Sicherheitslevel-Anzeige (NORMAL/ERHÖHT/KRITISCH)
|
||||
- Anzahl gesperrter IPs
|
||||
- Fehlversuche heute
|
||||
- Letzte 5 Sicherheitsereignisse mit Details
|
||||
|
||||
5. **IP-Verwaltung:**
|
||||
- Übersicht aller gesperrten IPs
|
||||
- Manuelles Entsperren möglich
|
||||
- Login-Versuche zurücksetzen
|
||||
- Detaillierte Informationen pro IP
|
||||
|
||||
6. **Audit-Log Erweiterungen:**
|
||||
- LOGIN_SUCCESS - Erfolgreiche Anmeldung
|
||||
- LOGIN_FAILED - Fehlgeschlagener Versuch
|
||||
- LOGIN_BLOCKED - IP wurde gesperrt
|
||||
- UNBLOCK_IP - IP manuell entsperrt
|
||||
- CLEAR_ATTEMPTS - Versuche zurückgesetzt
|
||||
|
||||
**Neue/Geänderte Dateien:**
|
||||
- v2_adminpanel/init.sql (login_attempts Tabelle)
|
||||
- v2_adminpanel/app.py (Rate-Limiting Logik, neue Routen)
|
||||
- v2_adminpanel/templates/login.html (Fehlermeldungs-Styling, CAPTCHA)
|
||||
- v2_adminpanel/templates/dashboard.html (Sicherheitswidget)
|
||||
- v2_adminpanel/templates/blocked_ips.html (neu - IP-Verwaltung)
|
||||
|
||||
**Technische Details:**
|
||||
- IP-Ermittlung berücksichtigt Proxy-Header (X-Forwarded-For)
|
||||
- Fehlermeldungen mit Animation (shake-effect)
|
||||
- Farbcodierung: Rot für Fehler, Lila für Sperre, Orange für CAPTCHA
|
||||
- Automatische Bereinigung alter Einträge möglich
|
||||
|
||||
**Sicherheitsverbesserungen:**
|
||||
- Schutz vor Brute-Force-Angriffen
|
||||
- Timing-Attack-Schutz implementiert
|
||||
- IP-basierte Sperrung für 24 Stunden
|
||||
- Audit-Trail für alle Sicherheitsereignisse
|
||||
|
||||
**Hinweis für Produktion:**
|
||||
- CAPTCHA-Keys müssen in .env konfiguriert werden
|
||||
- E-Mail-Server für Benachrichtigungen einrichten
|
||||
- Rate-Limits können über Konstanten angepasst werden
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren