umbau 1.3.2
This commit is contained in:
30
ansible/roles/guacd/templates/guacd.conf.j2
Normal file
30
ansible/roles/guacd/templates/guacd.conf.j2
Normal file
@ -0,0 +1,30 @@
|
||||
# /etc/guacamole/guacd.conf -- von Ansible verwaltet (Rolle "guacd").
|
||||
#
|
||||
# WICHTIG, zweimal falsch gemacht am 3.9.: guacd.conf ist eine INI-Datei mit
|
||||
# FESTEN Abschnitten, und jeder Parameter gehoert in genau einen davon.
|
||||
# guacd bricht bei einem Parameter im falschen Abschnitt den START ab
|
||||
# ("Parse error at line N, column 1: Invalid parameter or section name") --
|
||||
# der Dienst laeuft dann gar nicht mehr.
|
||||
#
|
||||
# [daemon] pid_file, log_level
|
||||
# [server] bind_host, bind_port
|
||||
# [ssl] server_certificate, server_key
|
||||
#
|
||||
# "log_level" gehoert also unter [daemon], NICHT unter [server]. Und es heisst
|
||||
# "log_level" -- "max_log_level" gibt es nicht (das war der zweite Fehlversuch).
|
||||
#
|
||||
# Deshalb jetzt eine vollstaendige Vorlage statt einzelner lineinfile-Eintraege:
|
||||
# lineinfile haengt eine Zeile ans DATEIENDE, also in den zuletzt geoeffneten
|
||||
# Abschnitt, ohne den Zusammenhang zu kennen. Fuer eine abschnittsbasierte
|
||||
# Konfigurationsdatei ist das die falsche Werkzeugwahl.
|
||||
|
||||
[daemon]
|
||||
# trace | debug | info | warning | error
|
||||
# "info" protokolliert bereits "Certificate validation bypassed" bzw.
|
||||
# "... failed" -- die entscheidende Unterscheidung bei RDP-Fehler 519.
|
||||
# Fuer den konkreten FreeRDP-/OpenSSL-Fehler voruebergehend "debug".
|
||||
log_level = {{ guacd_log_level }}
|
||||
|
||||
[server]
|
||||
bind_host = 127.0.0.1
|
||||
bind_port = {{ guacd_port }}
|
||||
@ -7,6 +7,16 @@
|
||||
[Service]
|
||||
User=guacd
|
||||
Group=guacd
|
||||
{% if guacd_tls_seclevel | string | length > 0 %}
|
||||
# OpenSSL-Sicherheitsstufe fuer FreeRDP erzwingen (Befund 3.9.). FreeRDP setzt
|
||||
# sie selbst (Vorgabe 1) und ueberschreibt damit jede OPENSSL_CONF-Vorgabe;
|
||||
# guacamole-server reicht die zustaendige FreeRDP-Option nicht durch. Die
|
||||
# Zwischenschicht greift NUR in diesem Prozess und nur, solange
|
||||
# JUMPHOST_GUACD_TLS_SECLEVEL gesetzt ist -- ausfuehrliche Begruendung im
|
||||
# Kopfkommentar von roles/guacd/files/guacd_tls_seclevel_shim.c.
|
||||
Environment=LD_PRELOAD=/usr/local/lib/jumphost/guacd-tls-seclevel-shim.so
|
||||
Environment=JUMPHOST_GUACD_TLS_SECLEVEL={{ guacd_tls_seclevel }}
|
||||
{% endif %}
|
||||
{% 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
|
||||
|
||||
@ -15,6 +15,14 @@
|
||||
# diesem Fall irrefuehrend; die Hosteinstellung "Zertifikat ignorieren"
|
||||
# kann daran folglich nichts aendern.
|
||||
#
|
||||
# Gemessener Fall (jumphost-97 -> 10.0.0.12, 3.9.): der Handshake gelingt erst
|
||||
# ab Sicherheitsstufe 0; Stufe 1 UND 2 scheitern beide gleich mit einem TCP-RST
|
||||
# der Gegenstelle. Das deutet auf die signature_algorithms-Erweiterung: OpenSSL
|
||||
# 3.0 bietet ab Stufe 1 kein SHA-1 mehr als Signaturverfahren an, und das Ziel
|
||||
# kann den ServerKeyExchange offenbar nicht anders signieren. Nicht das
|
||||
# ZERTIFIKAT ist das Problem -- dessen Signatur prueft bei ignore-cert ohnehin
|
||||
# niemand (eigens gegengeprueft).
|
||||
#
|
||||
# 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
|
||||
@ -22,6 +30,9 @@
|
||||
# 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.
|
||||
# Auch bei SECLEVEL=0 schliesst 'DEFAULT' weiterhin NULL- und anonyme Cipher
|
||||
# aus -- eine ungeschuetzte Verbindung wird dadurch also nicht moeglich.
|
||||
# Zusammen mit MinProtocol=MaxProtocol=TLSv1.2 bleibt die Lockerung eng.
|
||||
|
||||
openssl_conf = default_conf
|
||||
|
||||
@ -37,6 +48,16 @@ MinProtocol = {{ guacd_tls_min_protocol }}
|
||||
MaxProtocol = {{ guacd_tls_max_protocol }}
|
||||
{% endif %}
|
||||
CipherString = DEFAULT@SECLEVEL={{ guacd_tls_security_level }}
|
||||
{% if guacd_tls_signature_algorithms | default('', true) | length > 0 %}
|
||||
# Explizite Liste der angebotenen Signaturverfahren. Gemessen am 3.9.:
|
||||
# die Cipher-Liste ist auf allen Sicherheitsstufen IDENTISCH
|
||||
# (openssl ciphers -s 'DEFAULT@SECLEVEL=0|1|2' -> jeweils dieselben 30),
|
||||
# der Unterschied liegt also in der signature_algorithms-Erweiterung:
|
||||
# OpenSSL 3.0 bietet SHA-1 ab Stufe 1 nicht mehr an. Achtung -- die
|
||||
# Sicherheitsstufe filtert diese Liste NACHTRAEGLICH nochmals, ohne
|
||||
# guacd_tls_security_level: 0 bleibt SHA-1 also trotzdem draussen.
|
||||
SignatureAlgorithms = {{ guacd_tls_signature_algorithms }}
|
||||
{% endif %}
|
||||
{% if guacd_tls_unsafe_legacy_renegotiation %}
|
||||
# Manche aeltere Windows-/SCHANNEL-Staende koennen die in OpenSSL 3
|
||||
# standardmaessig abgeschaltete unsichere Neuverhandlung verlangen.
|
||||
|
||||
Reference in New Issue
Block a user