umbau 1.3

This commit is contained in:
2026-09-03 08:01:27 +02:00
parent 13542163d8
commit 96d9f331b5
10 changed files with 654 additions and 44 deletions

View File

@ -0,0 +1,36 @@
[Unit]
Description=Jumphost: beendete RDP-Laufwerksverzeichnisse aufraeumen
Documentation=file://{{ jumphost_home }}/scripts/cleanup_rdp_drives.py
After=jumphost-app.service
[Service]
Type=oneshot
# BEWUSST als root: /var/lib/jumphost/rdp-drives gehoert guacd (0750) und die
# darin von guacd angelegten Sitzungsverzeichnisse haben Modus 0700 guacd:guacd.
# Weder der App-Benutzer "{{ jumphost_app_user }}" noch guacd selbst koennen
# sie zuverlaessig wieder entfernen (guacd kennt das Sitzungsende nicht) --
# ausfuehrliche Begruendung im Kopfkommentar des Skripts.
User=root
Group=root
Environment=JUMPHOST_DATA_DIR={{ jumphost_data_dir }}
ExecStart={{ jumphost_venv }}/bin/python {{ jumphost_home }}/scripts/cleanup_rdp_drives.py
# Hardening: der Dienst braucht ausschliesslich Lesezugriff auf die
# Sitzungsdatenbank und Schreibzugriff auf rdp-drives -- sonst nichts.
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictNamespaces=true
# Kein Netzwerk noetig (reiner Datei-/SQLite-Zugriff).
PrivateNetwork=true
RestrictAddressFamilies=AF_UNIX
RestrictSUIDSGID=true
LockPersonality=true
ReadWritePaths={{ jumphost_data_dir }}/rdp-drives
ReadOnlyPaths={{ jumphost_data_dir }}
UMask=0077

View File

@ -0,0 +1,17 @@
[Unit]
Description=Jumphost: RDP-Laufwerksverzeichnisse regelmaessig aufraeumen
[Timer]
# Alle 15 Minuten. Das Skript loescht ausschliesslich Verzeichnisse, deren
# Sitzung in der Datenbank als BEENDET markiert ist -- ein kurzes Intervall
# ist deshalb ungefaehrlich (keine Altersheuristik, die eine lange, aber
# stille Sitzung mitten im Betrieb treffen koennte) und haelt die Zeitspanne
# klein, in der uebertragene Dateien nach Sitzungsende noch auf der Platte
# liegen.
OnBootSec=5min
OnUnitActiveSec=15min
AccuracySec=1min
Persistent=true
[Install]
WantedBy=timers.target