feat: Major updates to backend structure and security enhancements
- Removed `COMMON_ERRORS.md` file to streamline documentation. - Added `Flask-Limiter` for rate limiting and `redis` for session management in `requirements.txt`. - Expanded `ROADMAP.md` to include completed security features and planned enhancements for version 2.2. - Enhanced `setup_myp.sh` for ultra-secure kiosk installation, including system hardening and security configurations. - Updated `app.py` to integrate CSRF protection and improved logging setup. - Refactored user model to include username and active status for better user management. - Improved job scheduler with uptime tracking and task management features. - Updated various templates for a more cohesive user interface and experience.
This commit is contained in:
177
backend/SECURITY.md
Normal file
177
backend/SECURITY.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# MYP Platform - Sicherheitsdokumentation
|
||||
|
||||
## Übersicht
|
||||
Diese Dokumentation beschreibt die Sicherheitsmaßnahmen der MYP Platform, insbesondere für den Kiosk-Modus.
|
||||
|
||||
## Kiosk-Sicherheit
|
||||
|
||||
### Passwort-Schutz
|
||||
- **Deaktivierungspasswort**: `744563017196A`
|
||||
- Das Passwort ist als sicherer Hash gespeichert
|
||||
- Fehlgeschlagene Versuche werden protokolliert
|
||||
|
||||
### Systemhärtung
|
||||
- Kernel-Parameter für erhöhte Sicherheit
|
||||
- SSH-Härtung mit Fail2Ban
|
||||
- Firewall-Konfiguration (UFW)
|
||||
- Automatische Sicherheitsupdates
|
||||
|
||||
### Überwachung
|
||||
- Audit-Logs für Systemzugriffe
|
||||
- Monitoring verdächtiger Prozesse
|
||||
- Integritätsprüfung des Dateisystems
|
||||
- Automatische Benachrichtigungen bei Sicherheitsereignissen
|
||||
|
||||
## Netzwerksicherheit
|
||||
|
||||
### Firewall-Regeln
|
||||
```bash
|
||||
# Eingehende Verbindungen
|
||||
Port 22 (SSH) - Nur von lokalen Netzwerken
|
||||
Port 80 (HTTP) - Für Web-Interface
|
||||
Port 443 (HTTPS) - Für sichere Verbindungen
|
||||
|
||||
# Ausgehende Verbindungen
|
||||
Nur notwendige Dienste erlaubt
|
||||
```
|
||||
|
||||
### Rate Limiting
|
||||
- Login-Versuche: 5 pro Minute
|
||||
- API-Aufrufe: 200 pro Tag, 50 pro Stunde
|
||||
- Automatische IP-Sperrung bei Missbrauch
|
||||
|
||||
## Authentifizierung
|
||||
|
||||
### Benutzerrollen
|
||||
- **Admin**: Vollzugriff auf alle Funktionen
|
||||
- **User**: Eingeschränkter Zugriff auf eigene Daten
|
||||
- **Kiosk**: Nur Anzeige-Berechtigung
|
||||
|
||||
### Session-Management
|
||||
- Sichere Session-Cookies
|
||||
- Automatische Abmeldung nach Inaktivität
|
||||
- CSRF-Schutz für alle Formulare
|
||||
|
||||
## Datenschutz
|
||||
|
||||
### Verschlüsselung
|
||||
- Passwörter mit bcrypt gehashed
|
||||
- HTTPS für alle Verbindungen
|
||||
- Sichere Cookie-Einstellungen
|
||||
|
||||
### Logging
|
||||
- Keine sensiblen Daten in Logs
|
||||
- Strukturierte Logs für Audit-Zwecke
|
||||
- Automatische Log-Rotation
|
||||
|
||||
## Kiosk-Deaktivierung
|
||||
|
||||
### Notfall-Deaktivierung
|
||||
1. Zugriff auf Terminal (Strg+Alt+T)
|
||||
2. API-Aufruf: `POST /api/kiosk/deactivate`
|
||||
3. Passwort eingeben: `744563017196A`
|
||||
4. System wird automatisch neu gestartet
|
||||
|
||||
### Manuelle Deaktivierung
|
||||
```bash
|
||||
# Service stoppen
|
||||
sudo systemctl stop myp-kiosk
|
||||
sudo systemctl disable myp-kiosk
|
||||
|
||||
# Desktop wiederherstellen
|
||||
sudo systemctl set-default graphical.target
|
||||
|
||||
# Neustart
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
## Wartung
|
||||
|
||||
### Regelmäßige Aufgaben
|
||||
- Sicherheitsupdates installieren
|
||||
- Log-Dateien überprüfen
|
||||
- Backup-Integrität testen
|
||||
- Benutzerkonten auditieren
|
||||
|
||||
### Monitoring-Befehle
|
||||
```bash
|
||||
# System-Status
|
||||
systemctl status myp-kiosk
|
||||
systemctl status myp-backend
|
||||
|
||||
# Logs überprüfen
|
||||
journalctl -u myp-kiosk -f
|
||||
tail -f /var/log/myp/security.log
|
||||
|
||||
# Netzwerk-Status
|
||||
ufw status
|
||||
fail2ban-client status
|
||||
```
|
||||
|
||||
## Incident Response
|
||||
|
||||
### Bei Sicherheitsvorfällen
|
||||
1. System isolieren (Netzwerk trennen)
|
||||
2. Logs sichern
|
||||
3. Forensische Analyse
|
||||
4. System neu aufsetzen
|
||||
5. Sicherheitsmaßnahmen verstärken
|
||||
|
||||
### Kontakte
|
||||
- IT-Sicherheit: security@mercedes-benz.com
|
||||
- System-Administrator: admin@mercedes-benz.com
|
||||
- Notfall-Hotline: +49 711 17-0
|
||||
|
||||
## Compliance
|
||||
|
||||
### Standards
|
||||
- ISO 27001 Informationssicherheit
|
||||
- DSGVO Datenschutz
|
||||
- Mercedes-Benz IT-Sicherheitsrichtlinien
|
||||
|
||||
### Audit-Anforderungen
|
||||
- Monatliche Sicherheitsberichte
|
||||
- Jährliche Penetrationstests
|
||||
- Kontinuierliche Vulnerability-Scans
|
||||
|
||||
## Konfiguration
|
||||
|
||||
### Sicherheitsparameter
|
||||
```python
|
||||
# Flask-Konfiguration
|
||||
SECRET_KEY = "zufälliger-256-bit-schlüssel"
|
||||
SESSION_COOKIE_SECURE = True
|
||||
SESSION_COOKIE_HTTPONLY = True
|
||||
SESSION_COOKIE_SAMESITE = 'Lax'
|
||||
|
||||
# Rate Limiting
|
||||
RATELIMIT_STORAGE_URL = "redis://localhost:6379"
|
||||
RATELIMIT_DEFAULT = "200 per day, 50 per hour"
|
||||
```
|
||||
|
||||
### Systemparameter
|
||||
```bash
|
||||
# Kernel-Härtung
|
||||
net.ipv4.conf.all.send_redirects = 0
|
||||
net.ipv4.conf.default.send_redirects = 0
|
||||
net.ipv4.conf.all.accept_redirects = 0
|
||||
net.ipv4.conf.default.accept_redirects = 0
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Häufige Probleme
|
||||
1. **Kiosk startet nicht**: Service-Status prüfen
|
||||
2. **Passwort funktioniert nicht**: Hash-Integrität überprüfen
|
||||
3. **Netzwerk blockiert**: Firewall-Regeln kontrollieren
|
||||
|
||||
### Debug-Modus
|
||||
```bash
|
||||
# Kiosk im Debug-Modus starten
|
||||
sudo systemctl stop myp-kiosk
|
||||
sudo -u kiosk /opt/myp/kiosk/start_kiosk.sh --debug
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**WICHTIG**: Diese Dokumentation enthält sicherheitskritische Informationen und darf nur autorisierten Personen zugänglich gemacht werden.
|
Reference in New Issue
Block a user