Sicherheitsleitfaden
Best Practices für die sichere Konfiguration und den Betrieb von TREVLIX.
TREVLIX handelt mit echtem Geld. Sicherheitsluecken koennen zum Verlust von Kryptowaehrungen fuehren. Befolge diesen Leitfaden sorgfaeltig!
1. Environment-Secrets
Alle sensiblen Daten werden in der .env-Datei gespeichert. Diese Datei darf niemals ins Git-Repository committed werden.
Sichere Schluessel generieren
# 32-Byte Hex Keys generieren python3 -c "import secrets; print(secrets.token_hex(32))" # Fernet Encryption Key generieren python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" # Oder per Makefile: make keys
ADMIN_PASSWORD— Mindestens 12 Zeichen, Gross-/Kleinbuchstaben, Zahlen, SonderzeichenJWT_SECRET— Einzigartiger 32-Byte Hex StringDASHBOARD_SECRET— Einzigartiger 32-Byte Hex StringSECRET_KEY— Einzigartiger 32-Byte Hex String (Flask Sessions)ENCRYPTION_KEY— Fernet Key (fuer API-Key-Verschluesselung).envin.gitignoreeintragen- Keine Secrets in Logs ausgeben
2. Exchange API-Keys
API-Keys sind der sensibelste Teil der Konfiguration. Ein kompromittierter Key kann zum Verlust aller Mittel fuehren.
- IP-Whitelisting — Beschraenke den API-Zugriff auf die Server-IP
- Minimale Berechtigungen — Nur «Trading» aktivieren, niemals «Withdrawal»
- Sub-Account — Erstelle einen separaten Sub-Account fuer den Bot
- Regelmaessige Rotation — Erstelle alle 90 Tage neue API-Keys
- Ueberwachung — Pruefe regelmaessig die API-Log deiner Exchange
3. Netzwerk-Sicherheit
HTTPS mit Nginx
Fuer den Produktivbetrieb ist HTTPS zwingend erforderlich. TREVLIX liefert eine vorkonfigurierte Nginx-Konfiguration mit.
# Let's Encrypt Zertifikat einrichten sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d deine-domain.de # Docker mit Nginx starten docker compose --profile production up -d
CORS konfigurieren
# .env — NUR eigene Domain erlauben! ALLOWED_ORIGINS=https://deine-domain.de # NIEMALS Wildcard verwenden: # ALLOWED_ORIGINS=* ← UNSICHER!
Firewall
# Nur noetige Ports oeffnen sudo ufw allow 22/tcp # SSH sudo ufw allow 80/tcp # HTTP (Redirect) sudo ufw allow 443/tcp # HTTPS sudo ufw enable
4. Authentifizierung
2FA aktivieren (TOTP)
Aktiviere Zwei-Faktor-Authentifizierung im Dashboard unter Einstellungen. TREVLIX unterstuetzt TOTP (Google Authenticator, Authy, etc.).
Session-Konfiguration
# .env — Kurze Session-Timeouts setzen SESSION_TIMEOUT_MIN=15 # Empfohlen: 15 Minuten
5. Datenbank
- MySQL nur auf
localhost/ Docker-Netzwerk binden - Root-Passwort setzen und
mysql_secure_installationausfuehren - Separaten DB-User mit minimalen Rechten erstellen
- Taegliche Backups einrichten:
make backup - Backup-Dateien verschluesselt und off-site speichern
6. Ueberwachung & Alerting
Discord Heartbeat
# .env — Discord Webhook fuer Alerts DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
Audit-Log
Alle sicherheitsrelevanten Aktionen (Login, Logout, Einstellungsaenderungen, API-Key-Aenderungen) werden im Audit-Log protokolliert. Pruefe das Log regelmaessig unter /api/v1/admin/audit.
7. Sicherheitsluecken melden
Wenn du eine Sicherheitsluecke in TREVLIX findest, melde sie bitte verantwortungsvoll:
- Nutze GitHub Security Advisories
- Erstelle kein oeffentliches Issue fuer Sicherheitsprobleme
- Wir antworten innerhalb von 48 Stunden
- Nach dem Fix wird ein Sicherheits-Advisory veroeffentlicht
8. Incident Response Plan
Was tun, wenn du einen Sicherheitsvorfall vermutets oder feststellst:
Im Dashboard auf STOP klicken oder kill des Python-Prozesses. Offene Positionen manuell prüfen und ggf. schliessen.
Sofort alle API-Keys auf deiner Exchange deaktivieren oder löschen. Betrachte sie als kompromittiert bis zur Klärung.
Prüfe /api/v1/admin/audit auf verdächtige Logins, unbekannte IPs, Konfigurationsänderungen. Sichere die Logs bevor sie rotieren.
Alle Secrets in .env neu generieren: JWT_SECRET, SECRET_KEY, ADMIN_PASSWORD, ENCRYPTION_KEY. Alle aktiven Sessions invalidieren.
Wenn ein Einbruch bestätigt: Security Advisory melden. Bei kompromittiertem Server: frische Instanz aufsetzen und aus sauberem Backup restoren.
9. Sicherheits-Selbstcheck
Führe diesen Check regelmäßig durch — mindestens einmal pro Quartal:
- 2FA im Dashboard aktiviert und getestet
- Admin-Passwort: mindestens 12 Zeichen, gemischt, kein Dictionary-Wort
- API-Keys: nur Trading-Permission, kein Withdrawal, IP-Whitelisting aktiv
- API-Keys in den letzten 90 Tagen rotiert
.envnicht im Git-Repository- HTTPS aktiv — kein HTTP in Produktion
- Firewall: nur Port 22 (SSH), 80 (Redirect), 443 (HTTPS) offen
- MySQL nicht öffentlich erreichbar (nur localhost / Docker-Netz)
- Audit-Log der letzten 7 Tage auf verdächtige Aktivität geprüft
- TREVLIX auf aktueller Version (GitHub Auto-Update nutzen)
- Discord/Telegram-Alert für Bot-Fehler konfiguriert
- Letztes Datenbankbackup nicht älter als 24 Stunden