Files
RDPSign/README.md
T

215 lines
9.8 KiB
Markdown
Raw Normal View History

# RDP - IntuneWin Pakke
> Denne pakke installerer og signerer RDP-genveje på skrivebordet via et selvsigneret certifikat, så brugerne ikke får en sikkerhedsadvarsel ved åbning.
> Som standard arbejder alle scripts mod det **offentlige skrivebord** (`C:\Users\Public\Desktop`).
> Brug `-AllUsers` switchen for at køre mod alle brugeres individuelle skriveborde i stedet.
---
## Indhold
- [Pakkens indhold](#pakkens-indhold)
- [Intune App Konfiguration](#intune-app-konfiguration)
- [Hvad Install.ps1 gør](#hvad-installps1-gør)
- [Sådan opsætter du Detect.ps1](#sådan-opsætter-du-detectps1)
- [AllUsers Switch](#allusers-switch)
- [Registry-ændringer](#registry-ændringer)
- [Logning og fejlfinding](#logning-og-fejlfinding)
- [SignOnly Intune App Konfiguration](#signonly-intune-app-konfiguration)
- [Øvrige scripts i pakken](#øvrige-scripts-i-pakken)
---
## Pakkens indhold
| Fil | Formål |
|-----|--------|
| `Install.ps1` | Kopierer RDP-filer til skrivebord(e), opretter selvsigneret certifikat og signerer alle RDP-filer. Understøtter `-AllUsers` switch. |
| `Detect.ps1` | Tjekker at specifikke forventede .rdp-filer (defineret i `$expectedFiles` array) eksisterer på skrivebord(e). Understøtter `-AllUsers` switch. |
| `Uninstall.ps1` | Fjerner RDP-filer fra skrivebord(e). Understøtter `-AllUsers` switch. |
| `SignOnly.ps1` | Signerer eksisterende RDP-filer på skrivebord(e) — ingen filkopiering. Understøtter `-AllUsers` switch. |
| `SignOnly_detect.ps1` | Registrerer om certifikat er til stede og alle RDP-filer på skrivebord(e) er signerede. Understøtter `-AllUsers` switch. |
| `Clearsigning.ps1` | Fjerner signaturer fra RDP-filer og rydder op i certifikat og registry (til oprydning/debug). Understøtter `-AllUsers` switch. |
| `sandbox.ps1` | Kombineret install + detect script til lokal sandkasse-test. Understøtter `-AllUsers` switch. |
| `rdp-files\*.rdp` | Kilde-RDP-filer der installeres på skrivebord(e) |
[↑ Tilbage til toppen](#rdp---intunewin-pakke)
---
## Sådan opsætter du Detect.ps1
Før du uploader `Detect.ps1` til Intune som registreringsregel, skal du åbne filen og udfylde `$expectedFiles` array med de `.rdp` filnavne der ligger i `.\\rdp-files\\`:
```powershell
$expectedFiles = @(
"Server1.rdp",
"Server2.rdp",
"DesktopApp.rdp"
)
```
Når scriptet kører:
- Uden `-AllUsers`: tjekker at alle filer i `$expectedFiles` findes på det offentlige skrivebord (`C:\Users\Public\Desktop`)
- Med `-AllUsers`: tjekker alle filer i `$expectedFiles` på tværs af alle brugeres skriveborde
- Returnerer `exit 0` = installeret (alle filer fundet)
- Returnerer `exit 1` = ikke installeret (en eller flere filer mangler)
> **Vigtigt:** Husk at opdatere `$expectedFiles` hver gang du tilføjer eller fjerner `.rdp` filer i pakken, ellers vil detekteringen være forkert.
---
## Intune App Konfiguration
### Program
- **Installationskommando:**
`powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Install.ps1`
- **Installationskommando (alle brugeres skriveborde):**
`powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Install.ps1 -AllUsers`
- **Afinstallationskommando:**
`powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Uninstall.ps1`
- **Afinstallationskommando (alle brugeres skriveborde):**
`powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Uninstall.ps1 -AllUsers`
- **Installationsadfærd:** System
### Registreringsregel
Brug et brugerdefineret registreringsscript:
- **Scriptfil:** `Detect.ps1`
- **Kør script som 32-bit proces på 64-bit klienter:** Nej
- **Gennemtving scriptsignaturkontrol:** Nej
Registreringslogik:
- Uden `-AllUsers`: tjekker at alle `.rdp`-filer er til stede på det offentlige skrivebord (`C:\Users\Public\Desktop`)
- Med `-AllUsers`: tjekker alle brugeres skriveborde under `C:\Users\`
- Returnerer `exit 0` = installeret
- Returnerer `exit 1` = ikke installeret
[↑ Tilbage til toppen](#rdp---intunewin-pakke)
---
## Hvad Install.ps1 gør
1. Finder målskrivebord(e) — offentligt skrivebord som standard, alle brugeres skriveborde med `-AllUsers`. Med `-AllUsers` søges 2 mapper ned så OneDrive-omdirigeret Desktop også fanges
2. Kopierer alle `.rdp`-filer fra `.\rdp-files\` til de fundne skrivebord(e)
3. Søger efter eksisterende selvsigneret certifikat (`CN=RDPSign`) i `Cert:\LocalMachine\My`
4. Opretter et nyt selvsigneret kodesigneringscertifikat hvis intet findes (gyldigt i 25 år, ikke-eksporterbart)
5. Tilføjer certifikatet til `Trusted Root` og `Trusted Publishers` i den lokale maskines certifikatstore
6. Tilføjer certifikatets thumbprint til registry-nøglen `TrustedCertThumbprints`
7. Signerer alle `.rdp`-filer på skrivebord(e) med `rdpsign.exe /sha256`
8. Sætter `RedirectionWarningDialogVersion = 1` i registry for at undertrykke RDP-advarselsdialoger
[↑ Tilbage til toppen](#rdp---intunewin-pakke)
---
## AllUsers Switch
Alle scripts understøtter `-AllUsers` switchen. Som standard — uden `-AllUsers` — køres alle scripts kun mod det **offentlige skrivebord** (`C:\Users\Public\Desktop`). Når `-AllUsers` angives, søger scriptet i stedet på tværs af alle brugerprofiler under `C:\Users\` (ekskl. `Public`/`Default`). Der søges 2 mapper ned (`-Depth 2`) for at fange både standard `Desktop` og OneDrive-omdirigeret `Desktop`.
```powershell
# Kun offentligt skrivebord (standard)
.\Install.ps1
# Alle brugeres skriveborde
.\Install.ps1 -AllUsers
```
[↑ Tilbage til toppen](#rdp---intunewin-pakke)
---
## Registry-ændringer
| Sti | Værdi | Type | Data |
|-----|-------|------|------|
| `HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services` | `TrustedCertThumbprints` | String | Certifikatets thumbprint |
| `HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services\Client` | `RedirectionWarningDialogVersion` | DWORD | `1` |
[↑ Tilbage til toppen](#rdp---intunewin-pakke)
---
## Logning og fejlfinding
| Script | Logfil |
|--------|--------|
| `Install.ps1` | `C:\Intune\DesktopShortcuts.log` |
| `Detect.ps1` | `C:\Intune\DesktopShortcuts.log` |
| `Uninstall.ps1` | `C:\Intune\DesktopShortcuts.log` |
| `SignOnly.ps1` | `C:\Intune\RDPSign.log` |
[↑ Tilbage til toppen](#rdp---intunewin-pakke)
---
## SignOnly Intune App Konfiguration
### Program
- **Installationskommando:**
`powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\SignOnly.ps1`
- **Installationskommando (alle brugeres skriveborde):**
`powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\SignOnly.ps1 -AllUsers`
- **Afinstallationskommando:**
`powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Clearsigning.ps1`
- **Afinstallationskommando (alle brugeres skriveborde):**
`powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Clearsigning.ps1 -AllUsers`
- **Installationsadfærd:** System
### Registreringsregel
Brug et brugerdefineret registreringsscript:
- **Scriptfil:** `SignOnly_detect.ps1`
- **Kør script som 32-bit proces på 64-bit klienter:** Nej
- **Gennemtving scriptsignaturkontrol:** Nej
Registreringslogik:
- Tjekker at `CN=RDPSign`-certifikatet findes i `My`, `Root` og `TrustedPublisher` stores
- Tjekker at thumbprint er til stede i registry
- Uden `-AllUsers`: tjekker at alle `.rdp`-filer på det offentlige skrivebord er signerede
- Med `-AllUsers`: tjekker alle `.rdp`-filer på tværs af alle brugeres skriveborde
- Returnerer `exit 0` + `"Detected"` = installeret
- Returnerer `exit 1` = ikke installeret
[↑ Tilbage til toppen](#rdp---intunewin-pakke)
---
## Øvrige scripts i pakken
> **Bemærk:** Alle PowerShell-scripts er pakket ind i samme IntuneWin-pakke. Det betyder at man altid kan kalde på et vilkårligt script direkte fra Intune eller manuelt, f.eks.:
>
> ```powershell
> powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Install.ps1
> powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Install.ps1 -AllUsers
> powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\SignOnly.ps1
> powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\SignOnly.ps1 -AllUsers
> powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Clearsigning.ps1
> powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File .\Clearsigning.ps1 -AllUsers
> ```
> osv. for alle scripts i pakken.
### `SignOnly.ps1`
Signerer alle eksisterende `.rdp`-filer på skrivebord(e) uden at kopiere filer. Nyttigt til gensignering efter en opdatering eller hvis filer allerede er installeret. Kør som administrator. Understøtter `-AllUsers` switch.
### `SignOnly_detect.ps1`
Registreringsscript til brug med `SignOnly.ps1` som Intune-pakke. Tjekker:
- Certifikat findes i `My`, `Root` og `TrustedPublisher` stores
- Thumbprint er til stede i registry
- Alle `.rdp`-filer på skrivebord(e) indeholder en gyldig signatur
Understøtter `-AllUsers` switch.
### `Clearsigning.ps1`
Fjerner alle signeringsartefakter. Nyttigt til test eller oprydning. Kør som administrator. Understøtter `-AllUsers` switch.
- Fjerner `signscope`- og `signature`-linjer fra alle `.rdp`-filer på skrivebord(e)
- Fjerner `CN=RDPSign`-certifikatet fra `My`, `Root` og `TrustedPublisher` stores
- Fjerner `TrustedCertThumbprints` fra registry
- Fjerner `RedirectionWarningDialogVersion` fra registry
### `sandbox.ps1`
Kombinerer install og detect i ét script til lokal sandkasse-test. Understøtter `-AllUsers` switch.
Kør fra mappen der indeholder `rdp-files\` som administrator.
Output skrives til både konsollen og `C:\Intune\DesktopShortcuts.log`.
[↑ Tilbage til toppen](#rdp---intunewin-pakke)