stefu1
Goto Top

Tool zum Trennen von Usersessions auf Terminalserver ohne Adminrechte

Hallo,
ich suche ein Tool, was folgendes macht.
Wir haben ein Software, die auf einem Terminalserver (Windows) läuft. Ab und zu bleiben dies Sessions hängen, der User muss "hinausgekickt" werden. Das kann auch jemand anders als der einzige Admin machen, allerdings will der Admin nicht das Passwort verraten.
Gibt es ein Tool, welches man anderen (ausgewählten) User zur Verfügung stellen kann, welches das macht? Die Zugangsdaten müssten im Tool hinterlegt sein oder sehe ich das falsch?
Danke für eure Mühe.
Beste Grüsse
Stefan

Content-Key: 354097

Url: https://administrator.de/contentid/354097

Printed on: April 20, 2024 at 02:04 o'clock

Mitglied: 134464
134464 Nov 08, 2017 updated at 14:14:08 (UTC)
Goto Top
Geplanten Task für User deployen (Rechte entsprechend im Task setzen) welcher die Aufgabe übernimmt, und dann vom User starten mit Verknüpfung
schtasks /run /TN "Name des Tasks"
Member: stefu1
stefu1 Nov 08, 2017 at 14:15:34 (UTC)
Goto Top
Es ist kein geplanter Task, die Session muss auf Zuruf getrennt werden
Mitglied: 134464
134464 Nov 08, 2017 updated at 14:17:03 (UTC)
Goto Top
Zitat von @stefu1:

Es ist kein geplanter Task, die Session muss auf Zuruf getrennt werden
Kannst du doch, ein Task kannst du auf Zuruf starten! Und dieser wird dann mit den im Task hinterlegten Credentials ausgeführt.
Member: DerWoWusste
DerWoWusste Nov 08, 2017 updated at 14:30:13 (UTC)
Goto Top
Hi.

So einfach geht es leider nicht. Wenn ein Task mit hohen Rechten läuft, hat der User kein Recht, ihn zu starten. In Windowsversionen vor Windows 10 konnte man simpel die Rechte auf die Taskdatei anpassen - dies funktioniert nicht mehr. Abhilfe siehe: Nutzer zur Ausführung von fremden Tasks berechtigen - Windows 10 kann es offenbar nicht

Edit: dieses kompliziertere Triggering ist also nur auf Win10/Server 2016 nötig, bei den Vorversionen reicht die Anpassung der ACL des Tasks.
Mitglied: 134464
134464 Nov 08, 2017 updated at 14:33:06 (UTC)
Goto Top
Man könnte dem User auch granulare Rechte nur zum Logoff auf die RD Sessions geben
Configure Permissions for Remote Desktop Services Connections
Und dann den User mit Invoke-RDUserLogoff (Powershell) oder cmd-Skript die Session trennen lassen.
Member: DerWoWusste
DerWoWusste Nov 08, 2017 at 14:40:06 (UTC)
Goto Top
Joa, das geht auf 2008 R2 noch. Auf 2012/16 ist dies komplizierter. Muss ich nochmal recherchieren.
Member: emeriks
emeriks Nov 08, 2017 at 14:49:53 (UTC)
Goto Top
Zitat von @134464:
Man könnte dem User auch granulare Rechte nur zum Logoff auf die RD Sessions geben
Configure Permissions for Remote Desktop Services Connections
Und dann den User mit Invoke-RDUserLogoff (Powershell) oder cmd-Skript die Session trennen lassen.
Mit diesen Rechten sollte der betreffende "Hilfs-Admin" dann auch einfach über den Taskmanager einen Benutzer abmelden können.
Member: DerWoWusste
DerWoWusste Nov 08, 2017 at 14:52:16 (UTC)
Goto Top
Ja.

Und das Kommando zum Berechtigen von non-Admins dürfte sein:
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName="RDP-Tcp") CALL AddAccount "domain\Dein_NonAdmin",2  
Mitglied: 134464
Solution 134464 Nov 08, 2017 updated at 15:10:04 (UTC)
Goto Top
Hier mal getestet (Server 2012R2 TS), funktioniert mit einem eingeschränkten User dann problemlos dem Admin seine RDP Session unter dem Hintern wegzuziehen face-smile.

Powershell Äquivalent des Befehls von @DerWoWusste
gwmi -namespace root\CIMV2\TerminalServices Win32_TSPermissionsSetting | ?{$_.TerminalName -eq 'RDP-TCP'} | %{$_.AddAccount('DOMAIN\userxyz',2)}
Member: DerWoWusste
DerWoWusste Nov 08, 2017 at 15:09:54 (UTC)
Goto Top
Und wie ist es mit shadowing, funktioniert das auch ohne Rückfrage? Das wäre schlecht. Ich meine, das genannte Kommando erlaubt alles.
Mitglied: 134464
134464 Nov 08, 2017 updated at 15:23:08 (UTC)
Goto Top
Zitat von @DerWoWusste:

Und wie ist es mit shadowing, funktioniert das auch ohne Rückfrage? Das wäre schlecht. Ich meine, das genannte Kommando erlaubt alles.
Das funktioniert auch, aber nur solange dies die RDP Policy des Systems erlaubt "ohne Rückfrage" zu shadowen, ansonsten kommt bei
mstsc /shadow <id> /noConsentPrompt /control
die Meldung

screenshot
Member: DerWoWusste
DerWoWusste Nov 08, 2017 updated at 15:31:11 (UTC)
Goto Top
Na denn.

Somit gibt es zwei funktionierende Wege. Ich würde den mit dem Task bevorzugen, da das näher an "least privilege" dran ist.
Also: Task erstellen mit geeigneter Batch, Task Trigger: Application Even Log, ID 999
Zum Ausführen: User ins Eventlog schreiben lassen mit Powershell:
write-eventlog -logname Application -source SceCli -eventID 999 -entrytype Information -message "'This was created to trigger the KickRaus task'"  
Mitglied: 134464
134464 Nov 08, 2017 updated at 15:38:07 (UTC)
Goto Top
Zum Ausführen: User ins Eventlog schreiben lassen mit Powershell:
Das geht nur mit Admin-Rechten, bzw. man müsste das dem User auch erst explizit erlauben.
Member: emeriks
emeriks Nov 08, 2017 at 15:46:52 (UTC)
Goto Top
Das geht nur mit Admin-Rechten, bzw. man müsste das dem User auch erst explizit erlauben.
Nein. Jeder Benutzer kann zumindest ins Application Log schreiben.
Member: emeriks
Solution emeriks Nov 08, 2017 at 15:47:36 (UTC)
Goto Top
Somit gibt es zwei funktionierende Wege. Ich würde den mit dem Task bevorzugen, da das näher an "least privilege" dran ist.
Also: Task erstellen mit geeigneter Batch, Task Trigger: Application Even Log, ID 999
Zum Ausführen: User ins Eventlog schreiben lassen mit Powershell:
write-eventlog -logname Application -source SceCli -eventID 999 -entrytype Information -message "'This was created to trigger the KickRaus task'"  
Und wie willst Du darüber steuern, welcher Benutzer abgemeldet werden soll?
Mitglied: 134464
134464 Nov 08, 2017 updated at 15:56:02 (UTC)
Goto Top
Zitat von @emeriks:

Das geht nur mit Admin-Rechten, bzw. man müsste das dem User auch erst explizit erlauben.
Nein. Jeder Benutzer kann zumindest ins Application Log schreiben.
Stimmt nochmal verifiziert, dann ist die Doku auf
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
nicht richtig
To use Write-EventLog, start Windows PowerShell by using the Run as administrator option.
Member: DerWoWusste
Solution DerWoWusste Nov 08, 2017 at 16:02:23 (UTC)
Goto Top
@specht's
Das geht nur mit Admin-Rechten, bzw. man müsste das dem User auch erst explizit erlauben.
Glücklicherweise auch ohne (zumindest ins Applicationlog). Naja, über Powershell geht es ohne - verwendet man Batch mit der eventcreate.exe und tut das Selbe, meint Windows, Adminrechte zu brauchen. Niedlich.

@emeriks
Und wie willst Du darüber steuern, welcher Benutzer abgemeldet werden soll?
Ja, berechtigter Einwand. Man könnte per Skript alle Getrennten abmelden:
qwinsta |findstr Getr >%temp%\discon1.txt
findstr /v services %temp%\discon1.txt>%temp%\discon2.txt
for /f "tokens=1-3" %%a in (%temp%\discon2.txt) do logoff %%b