thomasbln
Goto Top

WMI-Remote-Steuerung der Windows-Firewall

Hallo,

ich habe folgendes Problem:

Ich soll die Remote-Steuerung von Windows-Firewalls in VBScript realisieren.

Laut [1] ist das gar nicht so ohne weiteres möglich. Das Firewall-Objekt kann nämlich nur lokal erstellt werden. Das bedeutet, dass ich das Script lokal ausführen lassen muss (die Systemlösung, für die ich die Scripts schreibe, lässt das sogar in Echtzeit zu). Lokal heißt aber eben auch, dass ich mir so richtig Gedanken machen muss, wie ich die Kommunikation zwischen Admin und Client regeln will - wie kann ich dem Admin das FW-Setup übermitteln, wenn doch das Script lokal beim Client läuft? Oder noch simpler: Wie kann ich dem Client-Script einen Port übermitteln, der geschlossen/geöffnet werden soll?

In [1] werden zwei Wege genannt: Zum einen über eine auf einem Server ausgelagerte Textfile. Und zum anderen über Win32_Process-Klassen.

Der erste Vorschlag ist intuitiv, das Admin-Script erstellt aufm Client eine Datei mit Anweisungen für das lokal ausgeführte Client-Script, welches dann seinerseits wieder eine Datei aufm Client erstellt und das Ergebnis da hinein schreibt. Ich kann keinen bestimmten Server festlegen, auf dem die logfiles gespeichert werden sollen, schließlich wird die Software, die ich hier skripte, verkauft - und weiß der Geier wie die Leute ihre Server so nennen ;) So sehe ich das.

Zu dem anderen Vorschlag wird leider überhaupt nichts weiter erzählt, aufgrund meiner diesbezüglichen Unwissenheit habe ich jetzt die Hoffnung, dass dieser Weg etwas einfacher sein könnte - hat jemand vllt einen Plan, wie ich da vorgehen könnte?

Gruß,
Thomas


[1] http://www.microsoft.com/technet/scriptcenter/resources/tales/sg1104.ms ...
Absatz 'Scripting the Windows Firewall'

Content-Key: 109829

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

Printed on: April 25, 2024 at 22:04 o'clock

Member: problemsolver
problemsolver Feb 24, 2009 at 11:50:52 (UTC)
Goto Top
Hallo,

mach es Dir nicht unnötig kompliziert. Zwei Beispiele, um die Firewall ein bzw auszuschalten:
netsh firewall set opmode mode = ENABLE

netsh firewall set opmode mode = DISABLE

Wenn Du jetzt ein wenig tiefer gräbst und dir eine Batchdatei baust und das ganze mit psexec aus der sysinternals suite verbindest, kommt ein nettes Rezept heraus.
Du kannst aber auch gleich mit Gruppenrichtlinien und Standardprofilen / Domänenprofilen arbeiten, um deine Einstellungen für die Arbeitsplätze vorzunehmen.

Die dickgedruckten Wörter sollte vorerst zum Graben und Nachschlagen für Dich reichen face-smile

Gruß

Markus

EDIT: natürlich sind das oben nur BEISPIELE. Du kannst über netsh firewall auch Ausnahmen definieren... wollte ich nur noch schnell erwähnen.
Member: thomasbln
thomasbln Feb 24, 2009 at 12:30:14 (UTC)
Goto Top
Hey Markus, vielen Dank erstmal - ich werds ausprobieren und wenns nich klappt, schrei ich!
bg
Member: thomasbln
thomasbln Feb 24, 2009 at 12:38:05 (UTC)
Goto Top
Sysinternals/PsExec ist nicht drin - ist hier nicht installiert und ich kann erst recht nicht voraussetzen, dass die Kunden das tun..

Ist es möglich, dass nur ein Teil eines VBScripts lokal ausgeführt wird?
Member: problemsolver
problemsolver Feb 24, 2009 at 12:53:44 (UTC)
Goto Top
Hallo,

ja.
Batchdatei als Beispiel lokal ausführen (s.o.) Du hast gerade bewiesen, dass Du meinen Text nicht gelesen hast... face-sad

Firewall aktivieren.
netsh firewall set opmode mode = ENABLE

oder Programmausnahme festlegen
netsh firewall set allowedprogram "C:\MyApp\MyApp.exe" MyApp ENABLE  

oder Datenverkehr für TCP auf Port 80 erlauben:
netsh firewall set portopening TCP 80 MyWebPor


Setz dich bitte mit dem Thema ein wenig auseinander. Verlange nicht, dass wir für Dich deine Arbeit machen face-smile
Start --> Ausführen --> netsh [ENTER]
Danach gibst Du ein "?" ein... der Rest ist selbsterklärend...

Gruß

Markus
Member: thomasbln
thomasbln Feb 24, 2009 at 13:11:01 (UTC)
Goto Top
Natürlich habe ich deinen Beitrag gelesen. Lokal funktioniert das ja auch alles wunderschön. Ich habe die Firewall schon per netsh konfiguriert und mir auch schon Plänge für ein Interface gemacht, welches DAU-Angaben in Batch-Code wandelt.
Die batch-Datei kann ich auch auf den remote-Rechner schreiben - doch zum Ausführen brauche ich doch PsExec. Und das geht nicht. Daher bin ich von dem Trichter wieder abgegangen.

edit: Echt mal - natürlich bin ich dir total dankbar dafür, dass du mir aus freien Stücken hilfst. Aber ich bin keiner von den Leuten, die in Foren nach Komplettlösungen verlangen und ich reagier irgendwie allergisch, wenn mich jemand so bezeichnet..
Member: thomasbln
thomasbln Feb 24, 2009 at 14:00:45 (UTC)
Goto Top
Deswegen meine Frage - ist es irgendwie möglich einen Teil eines Scripts lokal auszuführen? Damit umginge ich ja PsExec, Batch & co..
Ich könnte dann aufm client eine Datei mit den benötigten Infos schreiben und die dann remote auslesen und wieder löschen..
Member: thomasbln
thomasbln Feb 24, 2009 at 14:21:34 (UTC)
Goto Top
Genau, auf den Punkt gebracht: Was ich brauche, ist eine Möglichkeit ein (auf dem remote-PC bereits vorhandenes, weil zuvor dort geschriebenes) Script zu starten. Ganz ohne PsExec.
Member: problemsolver
problemsolver Feb 24, 2009 at 14:35:54 (UTC)
Goto Top
Hallo,

hatte glaube ich deine Frage nicht richtig verstanden.
Hier die Lösung:
'Script: RemoteProcess.vbs  
'Aufruf von Kommandozeile über cscript <scriptname>  

Option Explicit
Dim strCommand, objProcess, intProcessID, strComputer

strComputer = "DEINZIELCOMPUTER"  
strCommand = "C:\firewallconfig.bat"  
Set objProcess = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")  
objProcess.Create strCommand,null,null,intProcessID

WSCript.Quit

Erläuterung:
Ändere strComputer und strCommand nach deinen Wünschen ab.
strCommand ist der Lagerort von dem Zielrechner aus gesehen.

Denke ich konnte Dir helfen...

Gruß

Markus
Member: thomasbln
thomasbln Feb 24, 2009 at 15:07:18 (UTC)
Goto Top
Hi,

also im Grunde war es schon das was ich gesucht habe. Aber jetzt 'Zugriff verweigert' (habe einfach mal eine batch file geschrieben, die einen ordner erstellt - geht nicht mit genannter Begründung). Ich nehme an, dass das mit den Rechten zu tun hat..!? Ich suche mal im Forum danach..

Danke dir erstmal!

bg
Thomas
Member: problemsolver
problemsolver Feb 24, 2009 at 17:07:23 (UTC)
Goto Top
Hi,

"Zugriff verweigert" liegt wahrscheinlich daran (vorausgesetzt, dass Du die beiden Werte korrekt abgeändert hast), dass Du keine (administrativen) Zugriffsrechte auf dem Remoterechner besitzt. (keine Domäneninfrastruktur? Kein Domänen-Admin?)

Abhilfe:
Füge einen Benutzer bei der Remotemaschine lokal hinzu, der den gleichen Anmeldenamen und das gleiche Passwort von dem Benutzer besitzt, der das Script auch lokal bei dir ausführt.

Falls das nicht funktioniert, müsste man noch einmal schauen.

Gruß

Markus
Member: thomasbln
thomasbln Feb 25, 2009 at 10:20:35 (UTC)
Goto Top
Gerade kann ich noch nicht allzu viel dazu sagen. Ich denke aber, dass ich mich nicht darauf verlassen kann, dass diese Funktionen tatsächlich nur von Domain-admins ausgeführt werden sollen.

Ich verstehe deinen Tipp nicht ganz. Meinst du, ich soll auf dem remote-PC einen Remote-Nutzer hinzufügen? Geht das denn überhaupt per remote? Das würde ja keinen Sinn machen.

Ich glaube fast ich werde nicht daran vorbeikommen, die Domain-admin-Eigenschaft beim Nutzer vorauszusetzen.
Member: thomasbln
thomasbln Feb 25, 2009 at 12:06:07 (UTC)
Goto Top
Member: problemsolver
problemsolver Feb 27, 2009 at 16:35:14 (UTC)
Goto Top
Hallo,

du benötigst einfach administrative Rechte auf dem Remote-PC. Von du von deinem lokalen PC Zugriff auf den Remoterechner benötigst, muss entweder der gerade am lokalen PC angemeldete Benutzer dem Remote Rechner bekannt sein, oder Du musst dich an ihm manuell authentifizieren.
Recht hast du natürlich damit, dass es einfacher ist, die Domänen-Admin Rechte vorauszusetzen... aber ob das immer so gut ist... naja.

Wünsch Dir trotzdem noch viel Erfolg beim Lösen face-smile

Gruß

Markus