umbau 1.3.1

This commit is contained in:
2026-09-03 08:24:30 +02:00
parent 96d9f331b5
commit 2741910a72
6 changed files with 343 additions and 0 deletions

View File

@ -39,3 +39,25 @@ guacd_git_ref: "main"
# zuruecksetzen: "debug"/"trace" sind gespraechig und koennen Details der
# Zielumgebung ins Journal schreiben.
guacd_log_level: "info"
# --- TLS-Kompatibilitaet guacd -> Windows-Ziel (Live-Test 3.9.) -------------
#
# Standardmaessig AUS: guacd erbt dann die strengen systemweiten
# OpenSSL-Vorgaben von Debian 12 (MinProtocol=TLSv1.2, DEFAULT@SECLEVEL=2).
#
# Auf true setzen, wenn scripts/diagnose_rdp_tls.py den Befund
# "scheitert NUR an den OpenSSL-Vorgaben dieses Jumphosts" liefert -- also
# der TLS-Handshake zum Windows-Ziel mit den System-Vorgaben scheitert, mit
# gelockerten aber gelingt. Symptom in der Oberflaeche:
# "Ziel nicht erreichbar (Code 519): SSL/TLS connection failed
# (untrusted/self-signed certificate?)", OHNE dass im guacd-Journal eine
# "Certificate validation ..."-Zeile steht.
#
# Wirkt NUR auf den guacd-Prozess (Environment=OPENSSL_CONF in dessen Unit),
# nicht systemweit. Immer nur so weit lockern wie noetig: das Diagnoseskript
# nennt die tatsaechlich vom Ziel gesprochene TLS-Version, danach
# guacd_tls_min_protocol genau darauf setzen statt pauschal auf TLSv1.
guacd_tls_legacy_compat: false
guacd_tls_min_protocol: "TLSv1"
guacd_tls_security_level: 0
guacd_tls_unsafe_legacy_renegotiation: true

View File

@ -293,6 +293,29 @@
group: guacd
mode: "0750"
- name: TLS-Kompatibilitaetskonfiguration fuer guacd ausrollen (nur wenn eingeschaltet)
# Greift ausschliesslich ueber Environment=OPENSSL_CONF in der guacd-Unit
# und damit nur fuer diesen einen Prozess -- siehe Kopfkommentar der
# Vorlage. Standardmaessig ausgeschaltet.
ansible.builtin.template:
src: openssl-guacd.cnf.j2
dest: /etc/guacamole/openssl-guacd.cnf
owner: root
group: root
mode: "0644"
when: guacd_tls_legacy_compat | bool
notify: restart guacd
- name: TLS-Kompatibilitaetskonfiguration wieder entfernen, wenn abgeschaltet
# Damit ein Zurueckstellen von guacd_tls_legacy_compat auf false die
# Lockerung auch tatsaechlich zurueckdreht, statt eine verwaiste Datei
# liegen zu lassen, auf die dann nur noch die Unit nicht mehr zeigt.
ansible.builtin.file:
path: /etc/guacamole/openssl-guacd.cnf
state: absent
when: not (guacd_tls_legacy_compat | bool)
notify: restart guacd
- name: Override-Verzeichnis fuer guacd-Unit anlegen
ansible.builtin.file:
path: /etc/systemd/system/guacd.service.d

View File

@ -7,6 +7,13 @@
[Service]
User=guacd
Group=guacd
{% if guacd_tls_legacy_compat %}
# TLS-Kompatibilitaet fuer die Strecke guacd -> Windows-Ziel (Live-Test 3.9.).
# Setzt die OpenSSL-Vorgaben NUR fuer diesen Prozess; systemweit bleibt
# /etc/ssl/openssl.cnf unberuehrt. Siehe openssl-guacd.cnf.j2 und die
# Variablen guacd_tls_* in defaults/main.yml.
Environment=OPENSSL_CONF=/etc/guacamole/openssl-guacd.cnf
{% endif %}
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true

View File

@ -0,0 +1,41 @@
# OpenSSL-Konfiguration AUSSCHLIESSLICH fuer den guacd-Prozess.
#
# Wird ueber Environment=OPENSSL_CONF= in der guacd-Unit gesetzt (siehe
# guacd.service.j2) und gilt damit NUR fuer guacd/FreeRDP -- nicht fuer
# nginx, nicht fuer die Jumphost-App, nicht fuer SSH, nicht fuer apt.
# Systemweit (/etc/ssl/openssl.cnf) bleibt alles unveraendert streng.
#
# Wozu: Debian 12 setzt systemweit MinProtocol = TLSv1.2 und
# CipherString = DEFAULT@SECLEVEL=2. Ein Windows-Ziel, dessen SCHANNEL-
# Konfiguration nur aeltere TLS-Versionen oder schwaechere Cipher anbietet,
# ist damit von diesem Host aus NICHT erreichbar: OpenSSL bricht den
# Handshake ab, BEVOR ueberhaupt ein Zertifikat geprueft wird. guacd meldet
# das als "SSL/TLS connection failed (untrusted/self-signed certificate?)"
# -- der Klammerzusatz ist eine feste Vermutung im guacd-Quelltext und in
# diesem Fall irrefuehrend; die Hosteinstellung "Zertifikat ignorieren"
# kann daran folglich nichts aendern.
#
# ABWAEGUNG (bewusst zu treffen, deshalb standardmaessig AUS):
# Diese Datei senkt die TLS-Anforderungen fuer die Strecke
# Jumphost -> Windows-Ziel. Die Strecke Browser -> Jumphost ist davon nicht
# betroffen. Innerhalb eines abgeschotteten Verwaltungsnetzes ist das
# vertretbar; die saubere Loesung bleibt, TLS 1.2 auf dem Windows-Ziel zu
# aktivieren. Nur so weit lockern wie noetig -- guacd_tls_min_protocol und
# guacd_tls_security_level einzeln nachziehen, statt pauschal auf TLSv1/0.
openssl_conf = default_conf
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = {{ guacd_tls_min_protocol }}
CipherString = DEFAULT@SECLEVEL={{ guacd_tls_security_level }}
{% if guacd_tls_unsafe_legacy_renegotiation %}
# Manche aeltere Windows-/SCHANNEL-Staende koennen die in OpenSSL 3
# standardmaessig abgeschaltete unsichere Neuverhandlung verlangen.
Options = UnsafeLegacyRenegotiation
{% endif %}