73 lines
3.8 KiB
YAML
73 lines
3.8 KiB
YAML
---
|
|
# Gemeinsame Variablen. Umgebungsspezifische Werte in
|
|
# jumphost_with_nginx.yml / jumphost_no_nginx.yml ueberschreiben
|
|
# (oder direkt hier anpassen, wenn nur eine Umgebung existiert).
|
|
|
|
jumphost_app_user: jumphost
|
|
jumphost_app_group: jumphost
|
|
jumphost_home: /opt/jumphost
|
|
jumphost_data_dir: /var/lib/jumphost
|
|
jumphost_venv: "{{ jumphost_home }}/venv"
|
|
jumphost_repo_src: "{{ playbook_dir }}/.." # Projekt-Root (enthaelt app/, static/, templates/)
|
|
|
|
jumphost_listen_uds: /run/jumphost/app.sock
|
|
jumphost_app_port: 8443 # nur relevant wenn enable_nginx_proxy: false
|
|
|
|
guacd_port: 4822
|
|
|
|
# --- nginx / TLS ------------------------------------------------------------
|
|
enable_nginx_proxy: true
|
|
tls_mode: internal_pki # internal_pki | external_reverse_proxy | acme_public
|
|
# Nur fuer tls_mode: external_reverse_proxy relevant:
|
|
external_reverse_proxy_cidr: "10.10.5.0/24"
|
|
internal_hop_plaintext_accepted: false # bewusste Ausnahme, siehe Konzept 7.2a
|
|
# Nur fuer tls_mode: acme_public relevant:
|
|
acme_domain: "jumphost.example.com"
|
|
acme_email: "admin@example.com"
|
|
|
|
# --- Firewall ----------------------------------------------------------------
|
|
ssh_admin_access_cidr: "10.10.1.0/24" # Management-Netz fuer SSH-Zugriff AUF den Jumphost selbst
|
|
# 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
|
|
backup_retention_days: 30
|