Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Server Forum


Alles zum Thema Windows Server sowie Windows IT Pro Themen — Q & A zu den Windows Server Versionen NT / 2000 / 2003 / 2003 R2 / 2008 / 2008 R2: Rollen, Features, Konfiguration, Troubleshooting


Antwort
     
Themen-Optionen
Alt 20.02.2009, 15:53   #1
Newbie
 
Offline
Registriert seit: 04-2008
Beiträge: 16
2K8 - Befehl im Script als Administrator ausführen

Gibt es in der Befehlszeile von Windows Server 2008 eine vernünftige Möglichkeit, um einen Befehl oder ein Script mit Admin-Rechten auszuführen, ohne den lokalen Admin verwenden zu müssen. Oder heißt bei 2k8 "als Administrator" immer unter dem Konto des lokalen Administrators?

Konkretes Problem sieht so aus, das User ein Script starten, welches wieder über psexec auf einem W2k8-Server ein weiteres Script startet, in dem wiederum einige Befehle wie Appcmd.exe ausgeführt werden, die Admin-Rechte benötigen. Dieses Script soll dann Rückmeldungen oder auch ganze Dateien auf den Rechner des Users zurückschreiben. Benötigt also dort Schreibrechte.
Bei W2k3 ware das ganze simple: Das Script am Server ist als Domain-Admin ausgeführt worden, das hat gereicht. In W2k8 hat ja ein Domain-Admin die Hürde, dass man Befehle die höhere Privilegien benötigen "Als Administrator ausführen" muss. Wie nimmt man diese Hürde im Script?
Muss man das unpraktische runas bemühen und den lokalen Admin angeben? Da müsste ich dem Ding irgendwie erst beibringen, dass er sich das Passwort merkt, was sich bei einem Benutzerkonto (fürs Scripting), das sich nicht am Rechner anmelden darf, schwierig gestalten könnte.

Bessere Ideen?

LG,
Richard
    Mit Zitat antworten
Alt 20.02.2009, 16:22   #2
Expert Member
 
Benutzerbild von NilsK
 
Offline
Registriert seit: 06-2008
Ort: Hannover
Beiträge: 7.376
Moin,

euer ganzes Konstrukt sieht mir höchst zweifelhaft aus. Das war es schon unter 2003, nur dass man es unter 2008 eben jetzt merkt.

Man kann keine einzelnen Befehle mit höheren Privilegien ausführen. Auch runas wäre in deinem Fall keine Hilfe, weil es, von der Kommandozeile aufgerufen, keine Privilegienerhöhung durchführt. Und abgesehen davon, kann man da auch kein Kennwort mitgeben (wäre ja noch schöner).

Bester Ausweg also: Baue dein Konstrukt so auf, dass es den Sicherheitsbedingungen von Windows entspricht, statt sie zu umgehen.

Gruß, Nils

Signatur
Nils Kaczenski

MVP Directory Services: Architecture
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!

    Mit Zitat antworten
Alt 20.02.2009, 16:48   #3
Junior Member
 
Offline
Registriert seit: 10-2004
Beiträge: 115
Hallo.

Dem NilsK gebe ich grundsätzlich Recht. Aber schaue dir das Tool CPAU.exe an, vielleicht hilfts...

Signatur
Wer nicht fragt bleibt dumm!
Wer dumm fragt bleibt dumm!

    Mit Zitat antworten
Alt 20.02.2009, 18:48   #4
Newbie
 
Offline
Registriert seit: 04-2008
Beiträge: 16
Zitat von NilsK Beitrag anzeigen
Moin,

euer ganzes Konstrukt sieht mir höchst zweifelhaft aus. Das war es schon unter 2003, nur dass man es unter 2008 eben jetzt merkt.
Dieses Konstrukt erledigt verschiedene Dinge, die tlw. Admin-Rechte erfordern. Die entsprechende Konfiguration dafür (Pfade, virt. Server) holt sich erst das Script am jeweiligen Server, das psexec dort ausführt. Das ursprünglich gestartete Script soll also verschiedene Server bedienen. Das heikelste ist wohl das temporäre Anhalten eines virtuellen Webservers, weil es diesen wieder automatisch starten soll, wenn der User etwa darauf vergisst und es dadurch aktiv bleiben muss. Dazwischen sind Rückmeldungen an den User nötig.

Zitat von NilsK Beitrag anzeigen
Moin,
Bester Ausweg also: Baue dein Konstrukt so auf, dass es den Sicherheitsbedingungen von Windows entspricht, statt sie zu umgehen.
Keine Idee, wie ich das anstellen soll .
Der User, der die Sache startet, hat eben nicht die benötigten Rechte und bei W2k8 sind noch dazu (glaube ich) lokale Admin-Rechte nötig.
Ob letzteres auch tatsächlich so ist, war eine der eigentlichen Fragen.

Zitat von de.le Beitrag anzeigen
Aber schaue dir das Tool CPAU.exe an, vielleicht hilfts...
CPAU.exe kenne ich nicht, werde mich aber auf die Suche machen.


Danke.


Gruß,
Richard
    Mit Zitat antworten
Alt 20.02.2009, 19:15   #5
Expert Member
 
Benutzerbild von NilsK
 
Offline
Registriert seit: 06-2008
Ort: Hannover
Beiträge: 7.376
Moin,

Zitat von viragomann Beitrag anzeigen
Ob letzteres auch tatsächlich so ist, war eine der eigentlichen Fragen.
die du aber erstens gar nicht gestellt hast und die wir zweitens auch kaum beantworten können, ohne den Vorgang zu kennen.

Solange du so nebulös bleibst, werden wir keine "besseren Ideen" liefern können.

Gruß, Nils

Signatur
Nils Kaczenski

MVP Directory Services: Architecture
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!

    Mit Zitat antworten
Alt 20.02.2009, 20:51   #6
Newbie
 
Offline
Registriert seit: 04-2008
Beiträge: 16
Hallo!

Zitat von NilsK Beitrag anzeigen
die du aber erstens gar nicht gestellt hast und die wir zweitens auch kaum beantworten können, ohne den Vorgang zu kennen.
Die Frage hatte ich in folgenden zwei Sätzen gestellt, wenn auch nicht so direkt:
Zitat von viragomann Beitrag anzeigen
Oder heißt bei 2k8 "als Administrator" immer unter dem Konto des lokalen Administrators?

die Hürde, dass man Befehle die höhere Privilegien benötigen "Als Administrator ausführen" muss. Wie nimmt man diese Hürde im Script?
Zitat von NilsK Beitrag anzeigen
Moin,
Solange du so nebulös bleibst, werden wir keine "besseren Ideen" liefern können.
Ich hätte gedacht, ich hätte alles nötige aufgezählt. Wenn ich alle möglichen Funktionen beschreibe, würde das Seiten füllen, die wohl niemand lesen möchte.
Das eine Problem ist das Werkzeug Appcmd.exe das aus dem Script am entfernten Server aufgerufen wird und höhere Privilegien erfordert. Das andere Problem ist, dass auch in Dateien des User-Rechners eine Rückmeldung geschrieben werden soll.
Ersteres erfordert, Stand meines Wissens, lokale Admin-Rechte, das zweite zumindest Domain-Benutzer-Rechte. Für etwaige nötige Verbesserung wäre ich sehr dankbar.

Funktionen am enternten Server im Überblick:
Website stoppen
Application Pools recyclen
über CollabNet SVN ein Verzeichnis aus dem Repository (erfordert Authentifizierung in dessen String) aktualisieren
Website umleiten
Website-Konfiguration wieder in ursprünglichen Zustand setzen
Website starten
Logs und Rückmeldungen generieren
diese auf den auslösenden Rechner kopieren bzw.
per Mail (bmail.exe) versenden
einen geplanten Task (Aufgabe in W2k8isch) löschen

Alles, was den Webserver betrifft macht appcmd.exe. So würd ich es mir jedenfalls wünschen.

Wenn du mich auch prügelst, ich weiß nicht, was ich dazu mehr aufzählen sollte.

Gruß,
viragomann
    Mit Zitat antworten
Alt 21.02.2009, 08:14   #7
Expert Member
 
Benutzerbild von lefg
 
Online
Registriert seit: 12-2003
Ort: Lübeck
Beiträge: 14.543
Schon das ein User auf einem Server, DC per Skript Operationen ausführen kann, dass halt ich für sicherheitsbedenklich; diese dann noch mit den "Rechten" als Administrator, da tut sich doch potentiell eine Sicherheitslücke auf, besonders ein mögliches Mitgeben eines Passwortes als Parameter für psexec.

Es kann natürlich sein, Sicherheit ist nachrangig.

Ich habe sowas ähnliches mal gebaut, allerdings nicht zur Manipulation des Server, es wurde vom Dozentenrechner aus nur die Druckerwarteschlangen auf den Studentenrechnern beendet oder gestartet.

Wurde mal geprüft, ob das Problem über die Objektverwaltung(Delegation) lösbar ist?

Geändert von lefg (21.02.2009 um 08:40 Uhr).

Signatur
Das Messbare messen, das Nichtmessbare messbar machen. Galilei.

    Mit Zitat antworten
Alt 21.02.2009, 11:48   #8
Expert Member
 
Benutzerbild von NilsK
 
Offline
Registriert seit: 06-2008
Ort: Hannover
Beiträge: 7.376
Moin,

der sinnvollste Ansatz für das, was ihr da macht, ist ein Dienst, der die Aufgaben ausführt. Nur dieser braucht dann die lokalen Berechtigungen. Der Dienst selbst prüft dann, ob der User, von dem er angetriggert wird, dies seinerseits darf.

Euer Konstrukt ist aus Sicherheitssicht nicht sinnvoll, weswegen es auch an den erhöhten Sicherheitsbedingungen von Windows 2008 scheitert.

Gruß, Nils

Signatur
Nils Kaczenski

MVP Directory Services: Architecture
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!

    Mit Zitat antworten
Alt 21.02.2009, 13:39   #9
Junior Member
 
Offline
Registriert seit: 10-2004
Beiträge: 115
Hallo viragomann.

Das Konstrukt steht aus sicherheitstechnischer Sicht auf sehr wackeligen Füssen, wobei uns aber nicht alle Hintergründe bekannt sind. Ob es sich bei dem Benutzer, welcher dieses Script bedient, um einen "normalen" Benutzer handelt oder um einen Administrator, der lediglich keine administrative Berechtigung auf dem entsprechenden Server besitzt, ist hier nicht ersichtlich. Daher muss Du dir die Sicherheitsfrage für deine Umgebung selbst beantworten.

Wie ich sehen kommst du um eine Privilegienerhöhung nicht drumherum, wobei der Ort (Server/Client) und der Zeitpunkt gut gewählt werden wollen.
Eine Lösung könnte wie folgt aussehen:
1. Erstellst für den Benutzer eine einfache Seite mit einem Button wie "jetzt aktualisieren" auf dem Server, wo die spätere Aktualisierung laufen soll. Die Seite dürfen natürlich nur berechtigte Personen benutzen. Dies ist mit relativ wenig Auffwand in ASP oder ASP.NET realisierbar. Die Seite läuft natürlich mit unpriviligierter Berechtigung, so wie es sich gehört.
2. Auf dem Server erstellt Du einen Job-Datei (siehe CPAU /?) für CPAU.exe (falls mit Windows Server 2008 noch kompatibel. Alternativ: PowerShell, was mit etwas mehr Aufwand verbunden ist), der ein Script mit erhöher Berechtigung startet. Diese Job-Datei sollte natürlich außerhalb des wwwroot-Verzeichnises liegen, damit es keiner einfach Downloaden kann.
3. Der Benutzer geht auf die Seite und klickt auf den "jetzt aktualisieren"-Button und die Seite führt auf dem Server die Job-Datei von CPAU aus. CPAU startet dein Script mit erhöhter Berechtigung und führt entsprechende Aktionen aus (Webseite stopen, ...). Wobei die Authentifizerung für das CollabNet über die Webseite abgefragt werden kann. Die Rückmeldungen werden dann entweder in eine Datei umgeleitet, die von deiner Seite wiederum Ausgewertet und dem Benutzer auf der Seite dargestellt werden oder es sendet dem Benutzer einen Email. Den Benutzernamen kennst Du ja bereits, da die Webseite dies bereits beim Aufruf dies auswerten muss.

Mit diesem Konzept würdest du ganz klar die Bedienoberfläche (in deinem jetztigen Konzept das Script, welches der Benutzer ausführt) vom Programmcode (Script auf dem Server), der mit erhöhter Berechtigung läuft, trennen. Es ist definitv ein Sicherheitsgewinn.

Signatur
Wer nicht fragt bleibt dumm!
Wer dumm fragt bleibt dumm!

    Mit Zitat antworten
Alt 23.02.2009, 19:03   #10
Newbie
 
Offline
Registriert seit: 04-2008
Beiträge: 16
Moin,

danke für eure Antworten. Es sind einige interessante Anätze dabei, die Sache wohl besser zu lösen.

Die Variante mit dem Dienst von NilsK finde ich gut. Doch müssen wohl die entsprechenden Berechtigungen, diesen Dienst zu starten wohl auch erst erteilt werden.

Die Lösung mit der ASP.Net Seite von de.le könnte ich mir auch ganz gut vorstellen.

Ich wollte aber für den einen 2k8 Webserver nicht soviel Aufwand treiben und die Bedienung des Ganzen hätte ich gern serverunabhängig gehabt.
Ich werd mir die Lösungen durch den Kopf gehen lassen.

Immer noch unbeantwortet ist allerdings die Frage, wie man auf dem 2k8-Server ein Script mit erhöhten Privilegien ausführen kann, oder muss ich jetzt fragen, ob dies überhaupt möglich ist? Und heißt unter Server 2k8 "als Administrator ausführen" dass das Programm unter dem Konto des lokalen Administrators ausgeführt wird. Als Domain-Admin angemeldet zu sein, reicht ja wohl nicht.

Anmerken möchte ich noch, dass die User die das Script starten auch Administratoren in ihrem Bereich sind und auf den Rechner, auf dem sie es starten, haben auch nur Administratoren Zugriff; auf dem Rechner, auf dem die Funktionen ausgeführt werden, haben sie administrative Berechtigungen.
Darum hatte ich mir über die Sicherheit bislang keine ernsthaften Sorgen gemacht.

Grüße,
viragomann
    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Vista - Als Administrator ausführen mit lokalen Administrator? wuuhooo Windows Vista Forum 5 26.08.2008 17:16
Ist ein, sind die Rechner im Netz present, Befehl ausführen lefg Windows Forum — Scripting 3 09.10.2007 15:38
Befehl remote ausführen s21it21 Windows Forum — LAN & WAN 2 31.03.2006 13:29
Hilfe:Befehl Ausführen als... erscheint immer beim Ausführen von Programmen PADWOLF Windows Forum — Allgemein 2 17.07.2003 09:16
Über Script Benutzerrichtlinie ( Script beim abmelden ausführen ) aktivieren Uli Windows Forum — Allgemein 3 26.02.2003 13:00


Alle Zeitangaben in MEZ/CET. Es ist jetzt 15:43 Uhr. Seite generiert in 0,046 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang