Powershell Sicherheitswarnung für PS1-Scripts trotz „unrestricted“ loswerden

Das man an der Kommandozeile nahezu keine selbst- oder Fremdgebauten PS-Scripts ausführen kann hat sich mittlerweile herumgesprochen. Das kaum ein Admin seine kleinen Helferchen einzeln und bei jeder Änderung signieren wird ist ebeso offensichtlich.

Umso ärgerlicher, als das der Script-aktive Admin ab und an über den doppelten Boden der Powershell-Ausführungsverhinderung stolpert. Trotz der ExecutionPolicy ohne Restriktionen:

Set-ExecutionPolicy Unrestricted

gibt es doch weiterhin Scriptausführungsverhinderungen die sich in deutlich nicht-aussagekräftigen Fehlermeldung an der Kommandozeile und ISE bemerkbar machen:

powershell-ise-warnung

 

…  an der Shell:

PS C:scripts> .format-c.ps1
Sicherheitswarnung
Führen Sie ausschließlich vertrauenswürdige Skripts aus. Skripts aus dem Internet können zwar nützlich sein,
stellen jedoch auch eine potenzielle Gefahr für Ihren Computer dar. Möchten Sie "C:scriptsformat-c.ps1"
ausführen?
[N] Nicht ausführen  [M] Einmal ausführen  [H] Anhalten  [?] Hilfe (Standard ist "N"):

Automatisierungen jeder Art sind so offensichtlich undurchführbar und auch das deutlichste „Als Stapelverarbeitungsauftrag anmelden“ Recht verpufft an diesem Scriptverhüterli wirkungslos.

Lösung

Seit Windows 8 und dem zugehörigen Server 2012 gibt es im Dateisystem ein magisches Flag, das die (telepatisch festgestellte) Herkunft des Scripts als lokal oder „Siebter Kreis der Hölle“ markiert. Das Flag lässt sich mit einem Klick auf „Zulassen“ in den Dateieigenschaften wie für die lokale Ausführung erwartet zulassen.

powershell-ise-warnung-loesung

Selbstverständlich ist der Vorgang irreversibel, denn die telepatischen Fähigkeiten von Windows sind über jeden Zweifel erhaben. Die Anwesenheit des Flags lässt sich durch kopieren/einfügen beibehalten, durch Snippletkopiererei (ein TOTAL ungewöhnlicher Vorgang beim scripten) reproduzieren und nicht automatisiert beheben.

Windows Server 2012 schwarzer Bildschirm nach der Anmeldung (sowohl RDS/RDP/Lokal)

Windows Server 2012 und Server 2008/R2 können dem gestandenen Admin ab und an auch mal neue Schrecken einjagen. Praktisch direkt nach der Installation, dem ersten Schwung Updates und vielleicht ein bisschen Rollen-Gewühle bleibt nach einem Reboot der fast-frische Serverbildschirm nach dem Login plötzlich schwarz. Sowohl via RDP als auch bei der loaklen Anmeldung – alles schwarz. STRG+ALT+ENTF zaubert zwar den Taskmanager-Auswahlbildschirm wieder in die sichtbare Realität, mehr aber auch nicht. Ich habe dieses Phänomen jetzt unter VMWare gesehen, unter Hyper-V und auf echter Hardware (selten, aber sowas gibt’s noch). Hardware ist nicht schuld.

Im Eventlog, das via RPC erreichbar ist, offenbart sich der Effekt durch die Warnung:

The Windows logon process has failed to spawn a user application. Application name: . Command line parameters: C:Windowssystem32userinit.exe.

Lösung

Der Fehler liegt irgendwo zwischen der Erzeugung des Twintoken bei der Anmeldung und der UAC-Steuerung. Beides benötigt zur Anzeige rechte für die Interaktive Anmeldung; irgendetwas zerstört offenbar diese (lokal). Daher: Die lokale Gruppe „Benutzer“ verfüg über diese – und bekommt die beiden neuen Mitglieder „Authentifizierte Benutzer“ und „Interaktive Anmeldung“. Das ist remote möglich – reboot und der Bildschirm ist wieder da. Auf einem DC gibt es bekanntlich keine Lokalen Gruppen, daher müssen für solche Server die Domänen-Prinzipale in builtin herhalten. Einfach dort beide Prinzipale einfügen, fertig.

Samba (Debian) – Windows Offlinedateien (Offlinesynchronisation) abschalten

Nach langem Suchen bin ich nun doch fündig geworden. Die Offlinesynchronisation die sich im Windows-Dateiserver so wunderbar einfach pro Freigabe deaktivieren lässt, ist auch unter Linux durchaus konfigurabel.

Die zuständige Option heißt „CSC Policy“ und wird in die smb.conf im jeweiligen Abschnitt der Freigabe eingefügt, in der die Offlinedaten angepasst werden sollen.

In meinem Fall (eine Abas-ERP Freigabe für die Offline-Verfügbarkeit sperren) sieht das in der smb.conf so aus:

csc policy: disable

CSC steht für „Client-side caching“ und bietet analog zur Windows-Einstellung die Varianten „manual“, „documents“, „programs“ und „disable“. Mehr gibt’s in der manpage für Samba3.

Windows Server 2008R2 DHCP Synchronize reserved IPs (DHCP-Reservierung von einem Server auf einen anderen kopieren)

DHCP SynchronisationRedundante DHCP-Server sind eine feine Sache. Microsoft geht sowas gerne mit der 70/30 Methode an, andere Hersteller haben andere Zahlen – nutzen aber die selbe Technik. Die Proportionen sind natürlich jeweils anpassbar, die Taktik aber gleich: Man baut einfach identische DHCP-Server, schliesst aber jeweils die Hälfte der Adressen (oder 70% und 30%) von der Verteilung pro Server aus. Funktioniert gut, ist aber nicht die performateste Möglichkeit – und löst das Problem der Reservierungen nicht. Reservierungen müssen jeweils auf beiden (oder mehr) Servern angelegt werden, sonst endet ein Client gerne mal mit einer falschen (oder vermeintlich reservieren) Adresse.

Dieses Script holt sich die DHCP-Reservierungen von einem „Master“ Server ab und importiert diese in (den selben Bereich) in einen Zielserver. Der Bereich muss schon existieren. Die restliche Konfiguration der Server bleibt dem Admin überlassen – ob 50/50, 70/30 oder 100/100 ist egal. Es werden nur die Reservierungen kopiert. Diese Aufgabe ist Scripttechnisch etwas hakelig, weil die Waffe der Wahl „netsh“ die Daten im DHCP zwar lesen und schreiben kann, dafür aber unterschiedliche Formatierungen benötigt. MAC-Adressen werden zum Beispiel im Format „aa-aa-aa-aa-aa-aa-“ (ja mit dem „-“ am Ende) ausgegeben, beim ‚delete reservedip‘ muss aber das Format „aaaaaaaaaaaa“ genutzt werden. Danke Microsoft *ARGH*.

Features

  • Benötigt keine Erweiterungen oder ekelige Tools (VBScript, Powershell, .NET, Whatever). Nur Einfaches Batch, SED (enthalten) und netsh
  • Läuft – abhängig vom DHCP-Server – recht schnell
  • Nutzung sehr einfach
  • Keine Parameter, einfach starten

Benutzung

  • Herunterladen, auspacken
  • Script bearbeiten, Variablen ausfüllen
  • Als Nutzer mit passenden Rechten (z.B. DHCP-Operator) starten. Sowohl Quell- als auch Ziel-DHCP Dienst müssen laufen.

Download

ToDo

  • Auf Server 2012 erweitern (DHCP-Failover nutzen)
  • Übersetzen 🙂

Internet Explorer Warnung „Die Sicherheitseinstellungsstufe ist ein Risiko für den Computer.“

Auf frisch installierten Windows 8 und vor allem Windows Server 2012 Maschinen erschreckt den findigen Administrator der es erst einmal geschafft hat den „geschützten Modus“ des Internet Explorer zu verlassen (um zum Beispiel einen anderen Browser herunterzuladen) diese Warnungsmeldung:

 Die Sicherheitseinstellungsstufe ist ein Risiko für den Computer.

ie10-warnungNatürlich lässt sich die Warnung und die unfreiwillige Startseite „about:SecurityRisk“ weder wegklicken noch per GPO deaktivieren. Selbstverständlich erst recht nicht auf Terminalservern, wo kämen wir denn hin wenn am Ende tatsächlich jemand den Internet Explorer wirklich zum Websurfen verwenden würde? Das sucht Microsoft ganz offensichtlich mit allen Mitteln zu verhindern. ARGH.

Lösung: Einen offiziellen GPO-Eintrag gibt es (noch) nicht (…). Dafür reicht für den IE8/9/10 unter Windows 7/2008R2/8/2012 aber ein kleiner Eintrag in die Registry:

[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerSecurity]
"DisableSecuritySettingsCheck"=dword:00000001

Dieser lässt sich natürlich auch (als Quick-Fix) per Logonscript verteilen:

reg add "HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerSecurity" /V "DisableSecuritySettingsCheck" /D 1 /T REG_DWORD

Bitte liebes Microsoft, gebt und Admins doch weigstens die Möglichkeit, den IE vernünftig zu verwenden. Angesichts der langen Historie von Sicherheitslücken im IE ist zwar nachvollziehbar das JavaScript ganz furchtbar gefährlich für den IE ist, aber ohne IE ist das Web nunmal heute unbrauchbar. Auch für Benutzer. Lasst uns Admins doch wenigstens die Sicherheitseinstellungen anpassen.