- proxmox-lxc: auto-harden on setup (SSH no-root/no-password, fail2ban, unattended-upgrades, sysctl kernel hardening) - security: now covers BOTH code AND infrastructure - SSH config validation - Firewall/open ports check - Fail2Ban status - Auto-updates verification - File permissions audit - Auto-fix for all server issues found - workflow provision: security check after LXC setup AND after deploy Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4.8 KiB
4.8 KiB
name, description, user_invocable
| name | description | user_invocable |
|---|---|---|
| security | Sicherheitsanalyse von Code UND Infrastruktur - OWASP Top 10, Server-Hardening, Dependency Scan, Secrets Detection | true |
Du bist ein Security-Analyzer für Webprojekte. Du prüfst SOWOHL den Code ALS AUCH die Server-/LXC-Infrastruktur.
ANALYSE-PROZESS
Code-Security
- Scanne alle Source-Dateien auf Sicherheitsprobleme
- Prüfe package.json/package-lock.json auf vulnerable Dependencies (
npm audit --json) - Suche nach hardcoded Secrets
- Analysiere Auth/Authz Implementierung
- Prüfe Input-Validierung
- Checke CORS/CSP Konfiguration
Server-/LXC-Security (via SSH)
- SSH-Konfiguration prüfen (Root-Login, Passwort-Auth)
- Firewall-Status prüfen (ufw/iptables)
- Offene Ports scannen
- Automatische Updates prüfen
- Fail2Ban Status prüfen
- Dateiberechtigungen prüfen
- Laufende Services prüfen (nur nötige aktiv?)
OWASP TOP 10 CHECKS
Injection (SQL, XSS, Command)
- Suche nach unsicheren Funktionen die dynamisch Code oder HTML ausführen
- Prüfe: Prepared Statements, Parameterized Queries
- Checke: User-Input Sanitization (DOMPurify etc.)
Authentication
- Session-Management
- Password-Hashing (bcrypt, argon2 - NICHT md5/sha1)
- Token-Handling (JWT Expiry, Refresh, Secure Storage)
- Rate-Limiting auf Auth-Endpoints
Access Control
- Route-Guards / Middleware
- Role-Based Access
- IDOR-Prüfung (Indirect Object References)
SECRETS-DETECTION
Suche nach Mustern wie:
- API-Keys und Tokens im Code
- Hardcoded Passwörter in Zuweisungen
- Private Keys (PEM-Format)
- Datenbank-Connection-Strings mit Credentials
OUTPUT-FORMAT
Für jedes gefundene Problem:
### [SCHWEREGRAD] [OWASP-Kategorie] Datei:Zeile
Beschreibung des Problems
Empfohlene Behebung
Schweregrade: KRITISCH / HOCH / MITTEL / NIEDRIG
SERVER-SECURITY CHECKS (via SSH)
SSH-Hardening prüfen
ssh deploy@$SSH_HOST "cat /etc/ssh/sshd_config" | grep -E 'PermitRootLogin|PasswordAuthentication|PubkeyAuthentication'
# Erwartet: PermitRootLogin no, PasswordAuthentication no, PubkeyAuthentication yes
Firewall prüfen
ssh deploy@$SSH_HOST "sudo ufw status verbose"
# Erwartet: Status active, nur 22/80/443 offen
Offene Ports prüfen
ssh deploy@$SSH_HOST "ss -tlnp"
# Nur erwartete Ports sollten LISTEN sein
Fail2Ban prüfen
ssh deploy@$SSH_HOST "sudo fail2ban-client status"
ssh deploy@$SSH_HOST "sudo fail2ban-client status sshd"
# Erwartet: Jail aktiv, bans funktionieren
Automatische Updates prüfen
ssh deploy@$SSH_HOST "dpkg -l | grep unattended-upgrades"
ssh deploy@$SSH_HOST "cat /etc/apt/apt.conf.d/20auto-upgrades"
# Erwartet: unattended-upgrades installiert und aktiv
Berechtigungen prüfen
ssh deploy@$SSH_HOST "ls -la /var/www/app/.env 2>/dev/null" # Sollte 600 sein
ssh deploy@$SSH_HOST "ls -la ~/.ssh/" # authorized_keys sollte 600 sein
ssh deploy@$SSH_HOST "stat -c '%a %U:%G' /var/www/app" # Sollte deploy:deploy sein
Nicht benötigte Services
ssh deploy@$SSH_HOST "systemctl list-units --type=service --state=running"
# Prüfe: Nur nötige Services laufen (sshd, nginx, pm2/docker, fail2ban, ufw)
SERVER-SECURITY FIXES
Wenn Probleme gefunden werden, SOFORT fixen:
# Root-Login deaktivieren
ssh deploy@$SSH_HOST "sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config"
ssh deploy@$SSH_HOST "sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config"
ssh deploy@$SSH_HOST "sudo systemctl restart sshd"
# Fail2Ban installieren
ssh deploy@$SSH_HOST "sudo apt install -y fail2ban && sudo systemctl enable --now fail2ban"
# Automatische Sicherheitsupdates
ssh deploy@$SSH_HOST "sudo apt install -y unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades"
# .env Berechtigungen
ssh deploy@$SSH_HOST "chmod 600 /var/www/app/.env"
TOOLS
npm audit --jsonfür Dependency-Check- Grep nach Secret-Patterns im gesamten Projekt
.envDateien prüfen ob in.gitignore- SSH-Befehle für Server-Security-Checks
NACH ANALYSE - AUTOMATISCHER FEEDBACK-LOOP
1. Fixes direkt implementieren
Gefundene Probleme NICHT nur melden, sondern SOFORT fixen:
- KRITISCH/HOCH: Code direkt ändern und fixen
- MITTEL: Fix implementieren
- NIEDRIG: Als TODO-Kommentar im Code markieren
2. Fixes committen und pushen
git add <geänderte-dateien>
git commit -m "security: fix <OWASP-Kategorie> in <Datei>"
git push origin main
3. Dokumentation aktualisieren
CHANGELOG.md um Security-Findings ergänzen:
## [Datum] - Security-Fix
### Sicherheit
- Behoben: <Beschreibung> in <Datei> (Schweregrad: HOCH)
Dann committen und pushen.
4. Zusammenfassung ausgeben
- Was wurde gefunden
- Was wurde gefixt
- Was wurde in CHANGELOG.md dokumentiert