umbau 1.3
This commit is contained in:
@ -74,3 +74,51 @@
|
||||
daemon_reload: true
|
||||
enabled: true
|
||||
state: started
|
||||
|
||||
# --- Aufraeumen der RDP-Laufwerksverzeichnisse (Befund E6, Nachtrag 3.9.) ----
|
||||
#
|
||||
# Die App kann ihre eigenen Sitzungsverzeichnisse unter
|
||||
# {{ jumphost_data_dir }}/rdp-drives NICHT entfernen: das Verzeichnis gehoert
|
||||
# guacd (0750 guacd:guacd, Rolle "guacd"), die darin von guacd selbst
|
||||
# angelegten Sitzungsverzeichnisse haben Modus 0700 guacd:guacd, und der
|
||||
# App-Benutzer "{{ jumphost_app_user }}" ist nicht in der Gruppe "guacd".
|
||||
# Der bisherige shutil.rmtree()-Aufruf in app/rdp_proxy/ws_tunnel.py lief
|
||||
# deshalb seit jeher ins Leere -- und hat den PermissionError wegen
|
||||
# ignore_errors=True auch noch stillschweigend verschluckt. Aufgeraeumt wird
|
||||
# daher hier, per Timer und als root.
|
||||
|
||||
- name: Aufraeum-Skript fuer RDP-Laufwerke ausrollen
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../scripts/cleanup_rdp_drives.py"
|
||||
dest: "{{ jumphost_home }}/scripts/cleanup_rdp_drives.py"
|
||||
owner: root
|
||||
group: "{{ jumphost_app_group }}"
|
||||
mode: "0755"
|
||||
|
||||
- name: systemd-Unit fuer das Aufraeumen der RDP-Laufwerke ausrollen
|
||||
ansible.builtin.template:
|
||||
src: jumphost-rdp-drives-cleanup.service.j2
|
||||
dest: /etc/systemd/system/jumphost-rdp-drives-cleanup.service
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
notify: reload systemd
|
||||
|
||||
- name: systemd-Timer fuer das Aufraeumen der RDP-Laufwerke ausrollen
|
||||
ansible.builtin.template:
|
||||
src: jumphost-rdp-drives-cleanup.timer.j2
|
||||
dest: /etc/systemd/system/jumphost-rdp-drives-cleanup.timer
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
notify: reload systemd
|
||||
|
||||
- name: Anstehende systemd-Handler anwenden, bevor der Timer gestartet wird
|
||||
ansible.builtin.meta: flush_handlers
|
||||
|
||||
- name: Aufraeum-Timer aktivieren und starten
|
||||
ansible.builtin.systemd:
|
||||
name: jumphost-rdp-drives-cleanup.timer
|
||||
daemon_reload: true
|
||||
enabled: true
|
||||
state: started
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
Reference in New Issue
Block a user