141582
Goto Top

Powershell Skript kann nicht geladen werden

Hallo,
ich habe folgendes Anliegen:

In unserer Organisation setzen wir AlwaysOn VPN ein. Das funktioniert soweit auch ohne Probleme. Seit ein paar Wochen funktioniert allerdings die Installation des Profils auf den Clients nicht mehr richtig. Das Profil (als XML-File in der NETLOGON-Freigabe unserer Domäne) wird mithilfe eines Powershell Skripts installiert (bei Anmeldung eines Benutzers als Task hinterlegt). Die Ausführung des Skripts wird als NT-AUTORITÄT\System vorgenommen. Das Skript befindet sich auch in der NETLOGON-Freigabe unserer Domäne. Das hat bis vor kurzem auch wunderbar funktioniert. Nun wurden vor einiger Zeit Änderungen am Profil vorgenommen. Dabei ist aufgefallen, dass die Ausführung bzw. das Laden des Skripts verhindert wird.

Fehlermeldung: \\Pfad zum Profil\skript.ps1: Die Datei "\\Pfad zum Profil\skript.ps1" kann nicht geladen werden, da der Vorgang durch Richtlinien für die Softwareeinschränkung, z.B. die von der Gruppenrichtlinie erstellten Richtlinien, blockiert wird.

CategoryInfo: Sicherheitsfehler: (face-smile , PSSecurityException

FullyQualifiedErrorID: UnauthorizedAccess

Dazu muss ich sagen, dass wir keine Richtlinien für die Softwareeinschränkung nutzen. Allerdings nutzen wir den AppLocker. Im Applocker ist das Ausführen von Skripts für den Pfad, in dem das Profil und das Skript liegen freigegeben. Das Skript hat eine gültige digitale Signatur.

Setze ich in der AppLocker GPO die Erzwingung für die Skriptregeln auf "überwachen" gibt es keine Probleme. Werden die Regeln jedoch erzwungen, erscheint die o.g. Fehlermeldung.

Ein Blick in die Ereignisanzeige hat Folgendes ergeben:

Anwendungs- und Dienstprotokolle > Microsoft > Windows > AppLocker: MSI und Skript kein Eintrag
Anwendungs- und Dienstprotokolle > Microsoft > Windows > Powershell: Operational (Fehlermeldung siehe oben)

Domänenfunktionsebene: Windows Server 2016
Client: Windows 10 Enterprise 1809

Ich hoffe hier kann mir jemand weiterhelfen. Vielen Dank schon mal im Voraus!

Content-ID: 507190

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

Ausgedruckt am: 21.11.2024 um 17:11 Uhr

mathu
mathu 21.10.2019 um 12:58:40 Uhr
Goto Top
Hast du schon mal danach gegoogelt?
Ist wohl eine Sicherheitsfunktion von Powershell. face-wink

Siehe Born`s Seite
https://www.borncity.com/blog/2010/02/24/powershell-skripte-lassen-sich- ...

und hier:
https://www.windowspro.de/andreas-kroschel/powershell-executionpolicy-se ...
DerWoWusste
DerWoWusste 21.10.2019 um 12:59:16 Uhr
Goto Top
Hi.

Vermutlich ist der zugelassene Pfad eben doch nicht der, den du verwendest.
Nutze mal auf der Powershell den Test: https://docs.microsoft.com/en-us/powershell/module/applocker/test-apploc ...
141582
141582 22.10.2019 um 06:29:42 Uhr
Goto Top
Moin,

danke für die Links, allerdings hat es nicht geklappt. Die ExecutionPolicy ist auf "RemoteSigned" festgelegt. Den Button "Zulassen" in der Registerkarte Allgemein gibt es nicht. Auch "AllSigned" hat nicht funktioniert.
141582
141582 22.10.2019 um 06:50:22 Uhr
Goto Top
Moin,

der Test schlägt fehl.

Fehlermeldung: Von AppLocker kann nicht festgestellt werden, ob die angegebene Datei \\Dateipfad\Datei.ps1 zulässig ist. Grund: Unbekannter Fehler
'*' verstößt gegen pattern-Einschränkungen von '([0-9]{1,5}.){3}[0-9]{1,5}'.
In Zeile:1 Zeichen:89
+... vert-Path | Test-AppLockerPolicy -XMLPolicy C:\Pfad zur exportierten AppLocker-Richtlinie\Effective.xml
+
+ CategoryInfo: NotSpecified: ( : ) [Test-AppLockerPolicy], TestFileAllowedException
+ FullyQualifiedErrorID: TestAppLockerPolicyCmdlet-FailedProcessingFile,Microsoft.Security.ApplicationId.PolicyManagement.Cmdlets.TestAppLockerPolicyCmdlet


Folgende Schritte habe ich ausgeführt:
1. Get-AppLockerPolicy –Effective –XML > <PathofFiletoExport.XML>
2. Get-ChildItem \\Pfad zum Skript\ –filter *.ps1 –Recurse | Convert-Path | Test-AppLockerPolicy –XMLPolicy C:\Pfad zur exportierten AppLocker-Richtlinie\Effective.xml
DerWoWusste
DerWoWusste 22.10.2019 aktualisiert um 07:14:24 Uhr
Goto Top
Ok.

Bitte mal die echten Pfade, echte Testsyntax.
141582
141582 22.10.2019 um 07:26:40 Uhr
Goto Top
Okay:

Pfad in der AppLocker-Richtlinie, für den die Skriptausführung erlaubt ist: \\Domäne\NETLOGON\*

Richtlinie in XML exportieren: Get-AppLockerPolicy -Effective -XML > C:\Users\renatus85\Desktop\Effective.xml

Test: Get-ChildItem \\Domäne\NETLOGON\ –filter *.ps1 –Recurse | Convert-Path | Test-AppLockerPolicy –XMLPolicy C:\Users\renatus85\Desktop\Effective.xml
DerWoWusste
DerWoWusste 22.10.2019 um 08:59:36 Uhr
Goto Top
Hm, was ist denn da faul?

Der Test sollte gelingen.
'*' verstößt gegen pattern-Einschränkungen
Ist eine deiner Regeln komisch geformt? Ich würde diese mal Stück für Stück abrüsten (ober Hälfte, dann obere Hälfte vom Rest und so weiter, bis du das Problem gefunden hast.
141582
141582 22.10.2019 um 10:58:30 Uhr
Goto Top
Bin mir nicht sicher, ob ich dich richtig verstanden habe. Ich habe jetzt folgendes gemacht:

Pfad geändert von \\Domäne\NETLOGON\* --> \\Domäne\NETLOGON\ --> ohne Erfolg
Pfad geändert von \\Domäne\NETLOGON\*--> \\Domäne\* --> ohne Erfolg
Pfad geändert von \\Domäne\NETLOGON\*--> \\Domäne\ --> ohne Erfolg
Pfad geändert von \\Domäne\NETLOGON\*--> \\* --> ohne Erfolg
Pfad geändert von \\Domäne\NETLOGON\*--> \\ --> ohne Erfolg

Zugelassen für "Jeder"

Auch eine Erweiterung des Pfads blieb ohne Erfolg.

\\Domäne\NETLOGON\AlwaysOn\*

und

\\Domäne\NETLOGON\AlwaysOn\InstallProfile.ps1

Außerdem ist mir eben folgendes aufgefallen:

Ich habe die Richtlinie nochmal getestet (wie oben beschrieben, jedoch immer ohne Erfolg), habe dort den zu überprüfenden Pfad (\\Domäne\NETLOGON\) angepasst. Unter anderem habe ich den Pfad verkürzt auf \\Domäne\

Daraufhin erscheint die Fehlermeldung: Get-ChildItem: Der Pfad "\\D" kann nicht gefunden werden, da er nicht vorhanden ist.
DerWoWusste
DerWoWusste 22.10.2019 um 11:04:48 Uhr
Goto Top
Ich hatte Dich gebeten, deine Regeln abzurüsten (zu löschen), und zwar jeweils die Hälfte.
Dazu natürlich erst einmal die Regeln sichern über Export. Import siehe https://docs.microsoft.com/en-us/windows/security/threat-protection/wind ...
141582
141582 22.10.2019 um 13:01:15 Uhr
Goto Top
Alles klar. Sorry.

Ich dachte tatsächlich, den Fehler gefunden zu haben, aber Pustekuchen. Hab die Regeln gelöscht (vorher exportiert) und "festgestellt", dass die Standardregeln (diese habe ich zuletzt gelöscht) das Problem sind. Dann habe ich die Richtlinie über den Import wiederhergestellt. Hab dann die Standardregeln zuerst gelöscht, da ich ja der Meinung war, das diese schuld sind, und siehe da, es geht immer noch nix. Erst wenn alle Regeln gelöscht sind klappt alles einwandfrei. Füge ich eine Regel hinzu geht wieder gar nix...
DerWoWusste
DerWoWusste 22.10.2019 um 13:51:17 Uhr
Goto Top
Die Standardregeln sind nur für die Ersteinrichtung gedacht. Microsoft rät davon ab, sie beizubehalten, da unsicher.
141582
141582 22.10.2019 um 13:57:05 Uhr
Goto Top
Danke für den Hinweis, allerdings funktioniert es auch ohne Standardregeln nicht. Selbst wenn nur eine einzige Regel drin steht (Zulassen für "Jeder"; \\Domäne\NETLOGON\*) passiert nix...
DerWoWusste
DerWoWusste 22.10.2019 um 16:53:26 Uhr
Goto Top
Und was sagt nun der Test, welche Regel dafür verantwortlich ist?
141582
141582 22.10.2019 um 17:04:26 Uhr
Goto Top
So wie es aussieht ist es keine Skriptregel, die den Fehler verursacht. Habe mal alle Regeln gelöscht. Auch die Installer, ausführbaren und App Paketregeln. Hab dann nach und die Regeln wiederhergestellt und festgestellt, dass die Installer Regeln wahrscheinlich den Fehler verursachen. Dazu aber morgen mehr ;)
141582
141582 23.10.2019 um 06:40:19 Uhr
Goto Top
Moin,

kurzes Update: Die Installer-Regeln sind es nicht. So wie es aussieht habe ich zwei (oder mehr) Fehler. 1. Es funktioniert nur wenn alle Regeln, außer Skriptregeln, gelöscht werden und 2. funktioniert der AppLocker-Test (Test-AppLockerPolicy) immer noch nicht, obwohl die Skriptausführung funktioniert (so wie unter 1. beschrieben).

Diesmal ist die Fehlermeldung beim Test aber eine andere: Element nicht gefunden. (Ausnahme von HRESULT: 0x80070490)

Komischerweise listet der Test aber in der Fehlermeldung jedes einzelne Skript (*.ps1) auf, was er in dem zu überprüfenden Verzeichnis findet und erzählt mir dann was von "Element nicht gefunden"...