From 548bab93e55f6e514557571d3c9da9b1c1d59c35 Mon Sep 17 00:00:00 2001
From: Server-Bibliothek <server-bibliothek@lokal>
Date: Do, 23 Jul 2026 15:07:49 +0200
Subject: [PATCH] Zugriffsbeschraenkung: voller Zugriff nur lokal am Server, Netzwerk nur Software-Anforderung + Zugriffsprotokoll

---
 CHANGELOG.md |   41 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8e0b841..97cb563 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -93,6 +93,47 @@
   automatisch selbst eingetragen (`Add-MpPreference`)
 - Firewall-Freigabe-Skript ergänzt, nachdem der Test im echten
   Firmennetzwerk anstand (Port 5000 war durch die Windows-Firewall blockiert)
+- **Installer-Dateien werden direkt ins Paket gebündelt statt zur Laufzeit
+  nachzuladen.** Auslöser: beim ersten Test im Firmennetz enthielt der
+  Download nur die Skript-Dateien, die eigentlichen Installer wurden erst
+  beim Ausführen auf dem Zielrechner per Netzwerk nachgeladen – das setzt
+  Netzwerkzugriff des Zielrechners auf den Server in genau dem Moment
+  voraus. Jetzt werden die Dateien beim Erzeugen des Pakets direkt mit
+  eingepackt, der Zielrechner braucht für die Installation selbst kein
+  Netzwerk mehr (nur die abschließende, optionale Protokoll-Meldung).
+
+## v9 – Zugriffsbeschränkung lokal (Server) vs. Netzwerk
+Auslöser: Wird der Server über das Netzwerk erreicht (nicht direkt am
+Server), soll nur die Software-Anforderung sichtbar sein, um "Blödsinn" zu
+verhindern (Katalog verändern, Protokolle einsehen usw. nur direkt am
+Server). Wer aus dem Netzwerk Software herunterlädt, muss sich mit Namen
+eintragen, und alle Zugriffe werden protokolliert.
+- Unterscheidung über `request.remote_addr` (127.0.0.1/::1 = lokal, alles
+  andere = Netzwerk)
+- Für Netzwerk-Zugriffe: alle Routen außer der Software-Anforderung
+  (`/einrichten`) geben 403 mit Hinweisseite zurück
+- Software-Anforderung heißt bei Netzwerkzugriff bewusst anders
+  ("Software anfordern" statt "Rechner einrichten") und weist auf die
+  Protokollierung hin
+- Neues Zugriffsprotokoll (`/zugriffslog`, ebenfalls nur lokal einsehbar):
+  Zeitpunkt, IP-Adresse, per Reverse-DNS ermittelter Rechnername (falls
+  auflösbar), selbst angegebener Name, Aktion
+- **Bewusst nicht umgesetzt:** echte Windows-Benutzername-Erkennung. Das
+  bräuchte NTLM/Kerberos-Integration (z. B. IIS-Reverse-Proxy vor Flask),
+  was über reines Flask/HTTP nicht möglich ist – im Architektur-Dokument als
+  offener Punkt festgehalten, nicht stillschweigend als "erledigt" behandelt
+
+## Offene Design-Frage: Skript-Ansatz vs. automatische Verteilung
+Nach dem ersten Test im Firmennetz wurde nochmal grundsätzlich hinterfragt,
+ob der Skript-Ansatz (manueller Download + Ausführen auf dem Zielrechner)
+der richtige Weg ist, oder ob Daten "automatisch" auf dem Zielrechner landen
+sollten. Eine echte automatische Verteilung ohne manuellen Schritt am
+Zielrechner würde entweder eine dauerhaft laufende Helfer-Software auf jedem
+Zielrechner oder Windows-Remoting (PowerShell Remoting) voraussetzen – beide
+Wege brauchen im Kern eine Domänen-Infrastruktur bzw. zentrale
+Zugangsdaten-Verwaltung, die aktuell nicht vorhanden ist. Diese Frage wurde
+bewusst nicht in diesem Prototyp entschieden, sondern als offener Punkt für
+die Übernahme festgehalten (siehe README.md).
 
 ## Testmethodik (durchgehend)
 Da die Zielumgebung Windows ist, die Entwicklung aber in einer Linux-Umgebung

--
Gitblit v1.9.3