umbau 1.0

This commit is contained in:
2026-09-02 20:30:44 +02:00
parent afe6719f51
commit 5c95b21be7
77 changed files with 10733 additions and 1914 deletions

View File

@ -27,8 +27,45 @@ acme_email: "admin@example.com"
# --- Firewall ----------------------------------------------------------------
ssh_admin_access_cidr: "10.10.1.0/24" # Management-Netz fuer SSH-Zugriff AUF den Jumphost selbst
target_networks: # Netze der Zielsysteme (fuer ausgehende Regeln)
- "10.20.0.0/16"
# Netze der Zielsysteme (fuer ausgehende Regeln der Output-Chain, siehe
# ansible/roles/firewall_nftables/templates/jumphost.nft.j2). War bislang
# 10.20.0.0/16 -- die tatsaechlichen RDP-/SSH-Ziele liegen in 10.0.0.0/8
# (Befund B5, Umsetzungsauftrag_Sonnet5.md Teil A.3): stand die Adresse
# ausserhalb dieses Bereichs, wurden guacds ausgehende RDP-Pakete von der
# Output-Chain (policy drop) still verworfen -- kein Reject, kein Log --
# und der Benutzer sah nur "Server timeout" statt eines erklaerbaren
# Fehlers. An das tatsaechliche Zielnetz anpassen, falls es abweicht.
target_networks:
- "10.0.0.0/8"
# --- Login-Rate-Limiting (E8, Umsetzungsauftrag Teil E) ----------------------
# Drei unabhaengige Bremsen, alle IP-basiert (siehe app/security/rate_limit.py,
# app/config.py login_rate_limit_*): App-Rate-Limiter (JUMPHOST_LOGIN_RATE_
# LIMIT_MAX_EVENTS/_WINDOW_S), dieses nginx-limit_req und die fail2ban-
# Schwelle unten. ACHTUNG: greifen pro Quell-IP -- sitzen mehrere interne
# Benutzer hinter derselben NAT-Adresse (typischer Buerofall), teilen sie
# sich dieses Budget, und ein paar Tippfehler beliebiger Kollegen koennen
# die ganze Gruppe aussperren. Der kontenbezogene Lockout
# (JUMPHOST_MAX_FAILED_LOGINS) bleibt davon unberuehrt und ist die
# eigentliche scharfe Bremse. Bewusst an die erwartete Umgebung anpassen
# (z.B. hier anheben und/oder bekannte interne Netze in der Firewall-Regel
# gesondert behandeln) und die Entscheidung im Betriebshandbuch festhalten
# -- NICHT ungeprueft mit den unten stehenden Standardwerten produktiv gehen,
# wenn mehrere Benutzer hinter derselben Adresse sitzen koennen.
jumphost_login_rate_limit: "10r/m" # nginx limit_req_zone rate=
jumphost_fail2ban_maxretry: 8 # fail2ban [jumphost-login] maxretry
# --- Obergrenzen gleichzeitiger Sitzungen (E.4, Umsetzungsauftrag Teil E) ----
# jumphost_uvicorn_limit_concurrency ist die AEUSSERSTE Bremse (uvicorn lehnt
# neue Verbindungen ab, bevor die Anwendung ueberhaupt beteiligt ist) und
# sollte daher spuerbar UEBER JUMPHOST_MAX_SESSIONS_GLOBAL liegen (siehe
# app/config.py) -- sie deckt zusaetzlich kurzlebige HTTP-Anfragen
# (Katalog, Dateitransfer, Adminbereich) mit ab, nicht nur WS-Sitzungen.
# jumphost_limit_nofile mit Marge fuer: 2x Sockets je Sitzung + guacd-
# Verbindung (RDP) + Aufzeichnungsdatei + normale Prozess-FDs.
jumphost_uvicorn_limit_concurrency: 150
jumphost_uvicorn_backlog: 100
jumphost_limit_nofile: 4096
# --- Backup --------------------------------------------------------------------
backup_dir: /var/backups/jumphost