Update 4.0 - Zusammenfuehrung AD/Local, Config-Datei, Ntfy-Support
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
92
docs/configuration.md
Normal file
92
docs/configuration.md
Normal 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
51
docs/prerequisites.md
Normal 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
67
docs/task-scheduler.md
Normal 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*.
|
||||
Reference in New Issue
Block a user