Update 4.0 - Zusammenfuehrung AD/Local, Config-Datei, Ntfy-Support

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
2026-04-26 13:02:04 +02:00
parent e35985aad7
commit 6fd1167cd8
15 changed files with 563 additions and 331 deletions

92
docs/configuration.md Normal file
View File

@@ -0,0 +1,92 @@
# Konfiguration
Alle Einstellungen werden in der `config.conf` vorgenommen, die im selben Verzeichnis wie das Script liegen muss.
## Modus
| Wert | Beschreibung |
|---|---|
| `MODE=ad` | Empfaenger werden aus einer AD-Sicherheitsgruppe gelesen |
| `MODE=local` | Empfaenger werden manuell in der Konfiguration definiert |
**RSAT-Modul installieren (nur fuer AD-Modus):**
```powershell
Install-WindowsFeature RSAT-AD-PowerShell
```
## Benachrichtigungsmethoden
Kommasepariert — einzeln oder kombiniert:
```
NOTIFICATION_METHODS=email
NOTIFICATION_METHODS=ntfy
NOTIFICATION_METHODS=email,ntfy
```
## E-Mail
| Key | Beschreibung |
|---|---|
| `SMTP_SERVER` | SMTP-Server Adresse |
| `SMTP_FROM_NAME` | Anzeigename des Absenders |
| `SMTP_FROM_EMAIL` | E-Mail-Adresse des Absenders |
Beispiel:
```
SMTP_SERVER=smtp.example.com
SMTP_FROM_NAME=Notification Service
SMTP_FROM_EMAIL=noreply@example.com
```
## AD-Modus
Nur relevant wenn `MODE=ad`.
| Key | Beschreibung |
|---|---|
| `AD_SECURITY_GROUP_DN` | Distinguished Name der AD-Sicherheitsgruppe, deren Mitglieder benachrichtigt werden |
Beispiel:
```
AD_SECURITY_GROUP_DN=CN=Gruppe,OU=Gruppen,DC=domain,DC=local
```
## Local-Modus
Nur relevant wenn `MODE=local`. Mehrere Empfaenger mit Semikolon trennen.
| Key | Beschreibung |
|---|---|
| `LOCAL_RECIPIENTS` | Empfaengerliste im Format `Name,Email;Name,Email` |
Beispiel:
```
LOCAL_RECIPIENTS=Max Mustermann,max@example.com;Lisa Mueller,lisa@example.com
```
## Ntfy Push-Benachrichtigung
Nur relevant wenn `ntfy` in `NOTIFICATION_METHODS` enthalten ist.
| Key | Beschreibung |
|---|---|
| `NTFY_SERVER` | URL des Ntfy-Servers |
| `NTFY_TOPIC` | Ntfy-Topic |
| `NTFY_PRIORITY` | Prioritaet 1-5 (1=min, 3=default, 5=max) |
| `NTFY_TAGS` | Kommaseparierte Emoji-Tags |
| `NTFY_AUTH_TOKEN` | Bearer-Token (leer lassen wenn nicht benoetigt) |
Beispiel:
```
NTFY_SERVER=https://ntfy.sh
NTFY_TOPIC=rdp-access
NTFY_PRIORITY=3
NTFY_TAGS=warning,computer
NTFY_AUTH_TOKEN=tk_geheim123
```

51
docs/prerequisites.md Normal file
View File

@@ -0,0 +1,51 @@
# Voraussetzungen
## PowerShell ExecutionPolicy
Windows blockiert standardmaessig die Ausfuehrung von PowerShell-Scripts. Es gibt zwei Moeglichkeiten, das Script ausfuehrbar zu machen:
**Variante 1 — Nur fuer die Task-Scheduler-Aufgabe (empfohlen):**
In der Aufgabe wird `-ExecutionPolicy Bypass` als Argument uebergeben. Das betrifft nur diese eine Ausfuehrung und aendert keine systemweite Einstellung. Details dazu in der [Task-Scheduler-Dokumentation](task-scheduler.md).
**Variante 2 — Systemweit erlauben:**
```powershell
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
```
## RSAT ActiveDirectory PowerShell-Modul
Das AD-Modul wird nur benoetigt, wenn `MODE=ad` in der `config.conf` gesetzt ist. Im Local-Modus (`MODE=local`) kann dieser Abschnitt uebersprungen werden.
### Windows Server
```powershell
Install-WindowsFeature RSAT-AD-PowerShell
```
Ein Neustart ist in der Regel nicht erforderlich.
### Windows Client (Windows 10 / 11 Pro oder Enterprise)
```powershell
Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
```
Alternativ ueber DISM:
```cmd
DISM /Online /Add-Capability /CapabilityName:Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
```
Nach der Installation pruefen, ob das Modul verfuegbar ist:
```powershell
Get-Module -ListAvailable -Name ActiveDirectory
```
### Wichtige Hinweise zum AD-Modus
- Das Zielsystem muss Mitglied der Domaene sein.
- Das Script laeuft als `SYSTEM` (S-1-5-18) und nutzt das Computerkonto fuer AD-Abfragen. Dafuer sind keine separaten Credentials noetig.
- Die Windows Home-Edition unterstuetzt weder RDP-Host noch RSAT und ist daher nicht kompatibel.

67
docs/task-scheduler.md Normal file
View File

@@ -0,0 +1,67 @@
# Task-Scheduler einrichten
Die Aufgabe wird durch das Windows-Event **1149** im Log `Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational` ausgeloest. Dieses Event wird bei jeder erfolgreichen RDP-Anmeldung geschrieben.
## Variante 1 — XML importieren (empfohlen)
Die mitgelieferte Datei `rdp-access-notification.xml` kann direkt importiert werden:
**Per PowerShell:**
```powershell
Register-ScheduledTask -Xml (Get-Content "C:\scripts\rdp-access-notification.xml" -Raw) -TaskName "RDP Access Notification"
```
**Per Aufgabenplanung (GUI):**
1. Aufgabenplanung oeffnen (`taskschd.msc`)
2. Aktion > Aufgabe importieren
3. Die Datei `rdp-access-notification.xml` auswaehlen
4. Bei Bedarf den Pfad zum Script unter *Aktionen* anpassen
## Variante 2 — Manuell anlegen
### Allgemein
| Einstellung | Wert |
|---|---|
| Name | `RDP Access Notification` |
| Ausfuehren als | `SYSTEM` |
| Unabhaengig von der Benutzeranmeldung ausfuehren | Ja |
| Mit hoechsten Privilegien ausfuehren | Nein |
### Trigger
| Einstellung | Wert |
|---|---|
| Trigger-Typ | Bei einem Ereignis |
| Protokoll | `Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational` |
| Quelle | `Microsoft-Windows-TerminalServices-RemoteConnectionManager` |
| Ereignis-ID | `1149` |
### Aktion
| Einstellung | Wert |
|---|---|
| Programm/Script | `C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe` |
| Argumente | `-ExecutionPolicy Bypass -File "C:\scripts\rdp-access-notification.ps1"` |
Der Parameter `-ExecutionPolicy Bypass` sorgt dafuer, dass das Script auch ohne systemweite Aenderung der ExecutionPolicy ausgefuehrt wird. Er gilt nur fuer diesen einen Prozess.
### Einstellungen
| Einstellung | Wert |
|---|---|
| Aufgabe bei Bedarf starten | Ja |
| Aufgabe beenden, falls laenger als | 72 Stunden |
| Nicht starten, falls im Akkubetrieb | Nein |
## Aufgabe testen
Nach dem Anlegen kann die Aufgabe manuell ausgeloest werden:
```powershell
Start-ScheduledTask -TaskName "RDP Access Notification"
```
Oder im Aufgabenplaner per Rechtsklick > *Ausfuehren*.