Microsoft Server Update Services (WSUS)

Beachten Sie auch die Seite Update und Patchmanagement und das dort beschrieben "C't Update"-Projekt 

Es ist mitten im Sommer 2005, also Microsoft den lange erwarteten Nachfolger von SUS und anderen Update Strategien endlich als finale Version heraus gebracht hat. Es hat ganz schön lange gedauert, bis nach SUS und SUS SP1 nach über 2 Jahren und vielem Hin und Her endlich WSUS Einzug hält. Ich habe etwas das Gezerre zwischen Entwicklern, Marketing und Rechtabteilung mitbekommen, weil die Entwickler gerne mehr Funktionen eingebaut hätten, aber das Marketing noch Luft für SMS angemahnt hat, während die Anwälte natürlich besorgt waren, dass "eine Updatelösung von Microsoft" wieder den Verfechtern einer Zwangsteilung des Konzerns zugearbeitet hätte. Sicher auch ein Grund für die Verzögerungen. Gleich vorneweg:

Jede Firma sollte WSUS einsetzen, es sei denn sie haben eine bessere Patchverteilung und Inventarisierung, wie z.B.: SMS etc. Die Unterstützung der alten Version "Software Update Services" (SUS) entfällt ab dem 06. Dezember 2006 (siehe  http://www.Microsoft.com/windowsserversystem/updateservices/evaluation/faqs.mspx)

WSUS 3.0 SP2 (Released 25.8 2009)
http://www.microsoft.com/downloads/details.aspx?FamilyID=A206AE20-2695-436C-9578-3403A7D46E40&displaylang=en
Support für Windows 7

WSUS 3.0 Management Pack for MOM 2005 http://go.microsoft.com/?linkid=6814354

Für die Verteilung von Vista und Windows 2008 ist ein Blick auf das AIK interessant
Automated Installation Kit (AIK) for Windows Vista SP1 and Windows Server 2008
http://www.microsoft.com/downloads/details.aspx?FamilyID=94BB6E34-D890-4932-81A5-5B50C657DE08&displaylang=en

Unterstützung durch Net at Work:
Wenn Sie WSUS nicht korrekt konfigurieren, werden mehrere Gigabyte Daten (DE und EN) herunter geladen. Das kostet Internetbandbreite und vielleicht verärgert es nur ihr Anwender. Tipp: Die Patches vom WSUS-Server ihres Dienstleisters übernehmen. Net at Work bietet diesen Service seinen Kunden und Partnern an. Wir bringen die WSUS-Update z.B. auf einer Wechselfestplatte mit und installieren ihnen WSUS in kürzester Zeit.

WSUS kostet nichts, wenn Sie die passenden Windows Clients CALs haben und kann im Gegensatz zu SUS und anderen Ansätzen in der ersten Auslieferung die folgenden Microsoft Produkte zentral aktualisieren:

Der Umfang erstreckt sich aber nicht nur über Hotfixe und Security Updates, sondern auch Treiber, Tools, Servicepacks und andere Komponenten sind aktualisierbar. Da das Prinzip modular ist, ist zu erwarten, dass auch weitere Produkte von Microsoft über WSUS zukünftig aktualisiert werden können.

Da WSUS zudem kostenfrei und ziemlich einfach zu installieren ist, wird es sicher in vielen Firmen zum Einsatz kommen. Diese Seite ist auch für mich immer wieder als Gedankenstütze für die Installation hilfreich und wird laufend gepflegt.

Wie funktioniert WSUS ?

Schon seit längerem kennen Sie den Dienst "Windows Update" auf ihrem PC, welcher über die Systemsteuerung "Automatische Update" oder vom Administrator über Gruppenrichtlinien gesteuert werden kann.

Die Aufgabe des Windows Update Clients

Der "Windows Update Dienst" auf jedem Endgerät kann schon seit Windows 2000 folgende Aktionen ausführen.

Diese Funktion ist sowohl beim Einsatz eines SUS-Servers als  auch direkt beim Zugriff über das Internet auf windowsupdate.Microsoft.com gegeben. Die Einstellung, wie sich der Client verhält, können Sie auf Einzelplatz-PCs mit der Systemsteuerung einstellen.

In Firmennetzwerk kommen natürlich eher Gruppenrichtlinien zum Einsatz, so dass alle PCs gleich konfiguriert sind und die Einstellungen wie im Bild sichtbar nicht durch den Anwender zu ändern sind.

Vorteile durch WSUS

Im Firmennetzwerk ist es aber notwendig, dass ein eigener Dienst die Anfragen der Clients anfordert. Dies bringt handfeste Vorteile, für die Sie außer einem Server und etwas Zeit nichts weiter investieren müssen. Der WSUS-Server selbst kostet nichts

Steuerung durch den Administrator

Dabei kann der Administrator folgendes steuern

Dabei gibt es aber eine klare Trennung zwischen Client und Server. Der WSUS-Server kann Patches maximal zur Erkennung oder zum Download bereitstellen. Über die Installation entscheidet allein die Einstellung der Gruppenrichtlinie.

Was nicht möglich ist !

Es gibt noch genug Raum zu kommerziellen Patchlösungen und Programmen zur Softwareverteilung.

Meine persönliche Best Practice

Jeder muss natürlich einen eigenen "Patchplan" für seine System entwickeln, aber aus meiner Sicht haben sich folgende Einstellungen bewährt:

Diese Kurzanleitung bewirkt, dass alle erforderlichen Updates für Server bereitgestellt gestellt und auf Clients installiert werden. Wenn Sie

Mit diesen Einstellungen sollte erreicht werden, dass Clients automatisch aktuell bleiben und Server sowohl auf der Konsole als auch im WSUS auf fehlende Updates hinweisen.

Für die Überwachung gibt es im WSUS-Resource Kit einige nette Hilfsprogramme um eine Mail zu erhalten, wenn Udpates fehlen.

Was passiert wann ?

Folgende kleine Tabelle soll ihnen zeigen, unter welchen Konstellationen was passiert:

Patch bei Microsoft Einstellung in WSUS Einstellung auf dem Client Sichtbarkeit auf dem Client Ergebnis
Kein neuer Patch egal egal keine Störung nichts zu tun
neuer Patch nicht ermitteln egal keine Störung Info wird auf WSUS herunter geladen.
Ermitteln egal keine Meldung an User Durch die Ermittlung prüfen alle Clients den Patch und melden das Ergebnis an den WSUS. Der Administrator kann dann sehen, ob der Patch wirklich benötigt wird
Installieren vor Download und Installation fragen

Nachfrage zu Download eines neuem Patch

Nachfrage zur Installation

Anwender kann den Zeitpunkt des Download und der Installation selbst bestimmen.
Autodownload
vor Installation fragen
Nachfrage zur Installation. Anwender kann den Zeitpunkt der Installation selbst bestimmen.
AutoDownload und AutoInstall aber kein Neustart

Download und Installation im Hintergrund unsichtbar

Keine Rückfrage

Als Administrator vertrauen Sie darauf, dass der PC vom Anwender z.B. jeden Abend herunter gefahren wird und damit die Installation abgeschlossen wird. Dies ist bei Notebooks und Dank "Hibernate" und "Suspend" allerdings keine Garantie. Im WSUS-Report ist aber zu erkennen, welche Endgeräte noch einen Reboot benötigen.
Vollautomatik

Download und Installation im Hintergrund unsichtbar.

Ist ein Neustart erforderlich, dann wird informiert und kurz darauf gestartet !

Patches werden komplett durchinstalliert inklusive Neustart des PCs. Diese Einstellung ist daher für Server eher ungeeignet.

Der Neustart passiert automatisch, wenn niemand angemeldet ist.

Angemeldete Administratoren werden regelmäßig mit einer Aufforderung konfrontiert., die irgendwann auch den hartnäckigsten Anwender nervt, so dass er den Neustart durchführt.

Nicht Administratoren werden gewarnt, aber können den Neustart NICHT verzögern

Installieren mit Ablaufdatum ? ? Diese Einstellung erreicht, dass Clients den Patch nach Ablauf der Frist installieren.

Informationen zu den Spalten:

Wichtig:
Auch wenn Sie ein Patch auf dem WSUS-Server auf "Installieren" stellen, dann bedeutet das nur eine "Bereitstellung". Welcher Client den Patch wie installiert ist eine Frage der Gruppenrichtlinien auf dem Client.

WSUS-Update
Es gibt Update, die die Funktion von WSUS selbst verbessern. Diese werden per Default automatisch zur Installation bereit gestellt. Dies kann zu einer ersten Meldung unerwarteten Meldung beim Anwender führen.

Installation, Konfiguration und Betrieb

Die Installation des WSUS-Servers ist eine einfach und geradlinig. Sie benötigen Als Voraussetzung einen Windows 2000 oder 2003 Server, auf dem der IIS und ASP.NET installiert ist. das 120 MByte-Paket von Microsoft enthält gleich eine MSDE-Laufzeitversion, die ebenfalls als eigene Instanz installiert wird. Bei der Installation werden Sie im wesentlichen nach den Pfaden zur Ablage der Updates und der SQL-Datenbank sowie die Webseite gefragt, in die sich WSUS integriert oder die von WSUS eingerichtet wird.

Die komplette Bedienung des WSUS-Server erfolgt über Webbrowser und kann von jedem PC aus erfolgen. Die nächsten Schritte sind:

Lesen Sie am Ende, wie sie die WSUS-Datendateien eines anderen Servers per DVD oder Wechselfestplatte übernehmen

"Normale Anwender" werden vom WSUS-Client nicht benachrichtigt, wenn Patches zum Download oder zur Installation bereit liegen. Wenn ihre Benutzer daher "nur" Anwender sind, dann sollten Sie die Richtlinie so einstellen, dass die Patches zumindest automatisch herunter geladen und installiert werden oder Sie ändern die Einstellung so, dass auch "nicht Administratoren" die Informationen bekommen.
Den Zwang zum Neustart können Sie selbst bestimmen

Nun kommt die lange Zeit des Wartens, da Gruppenrichtlinien nicht sofort aktiv werden. Zum einen müssen die Richtlinien erst im Active Directory repliziert und dann von den Client auch angewendet werden. Den Erfolg der Richtlinien erkennen Sie daran, dass sich die Clients am WSUS-Server melden.

Diese Schritte sind demnach auch die Haupttätigkeiten des Administrators in der Folgezeit.

WSUS Daten übernehmen

Wenn Sie einen WSUS-Server installieren, dann werden normalerweise die konfigurierten Updates von Microsoft herunter geladen und auf dem lokalen Server zwischengespeichert. Dies sind bei mir im Juni 2006 mittlerweile 16 GByte, die sich im Verzeichnis WSUSContent angesammelt haben.

Wenn ich natürlich nun zu einem Kunden fahre und WSUS installieren soll, dann möchte der Kunde nicht unbedingt diese Datenmenge über sein Internet herunterladen und ich möchte nicht warten, bis die Updates auch lokal vorhanden sind. Aber auch die Umzug eines WSUS-Servers auf einen neuen Server oder eine neue Festplatte ist ein Schritt, bei dem die Daten mitgenommen werden sollten. Es gibt hier mehrere Optionen.

Der letzte Weg ist aus meiner Sicht der einfachste. Die Schritte dazu sind kurz erklärt:

"%ProgramFiles%\update services\tools\wsusutil.exe" export .\wsus.cab .\wsusexport.log"

"%ProgramFiles%\update services\tools\wsusutil.exe" import .\wsus.cab .\wsusimport.log

Der Import kann je nach System auch einige Stunden dauern !!!
Ein guter Hinweis zum Fortschritt ist die Größe der SQL-Datenbankdatei.

Unterstützung durch Net at Work:
Wenn Sie einen WSUS-Server installieren und die Updates nicht herunterladen wollen, können Sie meine Kollegen oder mich gerne anfordern. Wir bringen dann gerne die Patches (DE/EN) mit und installieren ihnen den WSUS-Server.

WSUS Details

Der WSUS-Server selbst ist eigentlich eine sehr einfache Anwendung und besteht aus folgenden Komponenten:

Was mir bei WSUS fehlt bzw. meine Wunschliste

Nicht ist perfekt und auch wenn WSUS ein großer Fortschritt gegenüber SUS etc. ist, so gibt es einige Punkte, die ich mir noch gewünscht hätte:

Alles in allem sehr interessante Funktionen, wenn gleich noch genug Platz zu SMS und anderen Patchlösungen ist.

Überwachung des WSUS Client

In Ermangelung eines bestehenden MOM Management Packs für WSUS habe ich ein eigenes Management Pack für den WSUS-Client erstellt.

Dieses MP kann nur Systeme überwachen, die auch von MOM Agenten überwacht werden. Es überwacht die Einträge vom "Automatischen Update Dienst". Es überwacht nicht den WSUS-Server !

naw-wsus.akm

Die Überwachung erfolgt auf die Meldungen im SYSTEM-Eventlog des WSUS Clients.

Eventlog: SYSTEM
Ereignisquelle: Windows Update Agent
Ereigniskategorie: Installation

Ereigniskennung Beschreibung
16 Kann keine Verbindung zum WSUS Server aufbauen
17 Es sind Updates verfügbar. Administrator muss aktiv werden
18 Updates wurden herunter geladen und sind Installationsbereich
Event kommt mehrfach vor und die letzte Meldung enthält Liste der ausstehenden Updates
19 Installation von Updates erfolgreich. kein Neustart erforderlich
20 Fehler bei der Installation von Updates
21 Installation von Updates erfolgreich - manueller Neustart erforderlich
Leider kommt nach dem Neustart kein weiterer Erfolgsevent
22 Installation von Updates erfolgreich - Automatischer Neustart
Leider kommt nach dem Neustart kein weiterer Erfolgsevent
27 Update Dienst wurde angehalten

Entsprechend der Meldungen werden durch das AKM Events und Alerts generiert. Dies funktioniert nur mit Systemen, die natürlich mittels MOM überwacht werden und der "Windows Update Agent" muss bereits installiert und konfiguriert sein. Leider habe ich noch keinen eigenen View für WSUS definiert.

Zudem können Sie ein Detailprotokoll anlegen

Weitere Links zu MOM und Erweiterungen durch die MSXFAQ finden Sie z.B. auf:

WSUS Client Datenbank

Der WSUS-Client nutzt eine EDB-Datenbank, welche per Default im Verzeichnis "SoftwareDistribution\datastore" liegt. Diese Datei kann man mit dem Programm ESENTUTL.EXE auch defragmentieren.

net stop wuauserv  [ use this if you restarted the AU service ]
esentutl /g %windir%\softwaredistribution\datastore\datastore.edb
net start wuauserv  [use this is you stopped the AU service above ]
exit

Manchmal hilft das auch, wenn WUAU dafür sorgt, dass SVCHOST auf 100% Last ist. Wenn nichts mehr geht und die 100% last sich auch nach Stunden nicht löst, dann "kann" es funktionieren, das Verzeichnis "SoftwareDistribution" komplett zu löschen. Allerdings kann man ohne die Datenbank natürlich auch keine Hotfixes oder updates einzeln deinstallieren.

WSUS ohne GPO und Domäne

WSUS funktioniert auch ohne Active Directory oder Domäne. Allerdings kann man dann nicht so schön einfach per Gruppenrichtlinien die Einstellungen anpassen, sondern muss diese von Hand eintragen. Dies kann aber auch über eine REG-Datei erfolgen, die Sie auf dem Client importieren können.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]
"WUServer"="http://wsus:8530"
"WUStatusServer"="http://wsus:8530"
"TargetGroupEnabled"=dword:00000001
"TargetGroup"="Clients"

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
"NoAUShutdownOption"=dword:00000000
"NoAutoUpdate"=dword:00000000
"AUOptions"=dword:00000003
"ScheduledInstallDay"=dword:00000000
"ScheduledInstallTime"=dword:00000003
"UseWUServer"=dword:00000001
"DetectionFrequencyEnabled"=dword:00000001
"DetectionFrequency"=dword:00000001

Passen Sie die Datei ihren Anforderungen entsprechend an und importieren Sie diese über andere Wege. Der Import kann aber nicht durch einen normalen Benutzer erfolgen, da dieser nicht die ausreichenden Berechtigungen hat. Sie können die Einstellungen jedoch z.B. aus der Ferne ausführen, wenn der PC aktiv ist. Besonders interessant sind hier die folgenden Schlüssel in diesem Registryzweig

HKEY_LOCAL_MACHINE\ Software\ Policies\ Microsoft\ Windows\ WindowsUpdate\ AU

Automatisches Update beschleunigen

Der Windows Update Client wird zwar über die Richtlinien gesteuert, aber parallel dazu muss der Client natürlich auch hinterlegen, wann die letzten Update geprüft und installiert wurden um die nächsten Aktionen zu planen. Normalerweise legen Sie einen Installationszeitpunkt fest, an oder nach dem die nächste Installation stattfindet. Manchmal möchten Sie aber Updates schnell verteilen. Das macht der Client nach der Installation natürlich auch schnell selbst aber wenn alles installiert ist und erst dann ein neuer Patch anliegt, wird eben bis ein Tag gewartet, bis diese installiert werden. Auch ein "Push" als solches findet nicht statt. Aber mit dem Wissen, wo der Client die Daten hinterlegt, kann man auch etwas nachhelfen. Die relevanten Informationen liegen an folgender Stelle:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update]
"NextDetectionTime"="2006-01-11 10:06:06"
"ScheduledInstallDate"="2006-01-12 06:00:00"

In diesen beiden Werten stehen die Zeiten der nächsten Erkennung als auch der Zeitpunkt der nächsten geplanten Installation (wenn eine automatische Installation konfiguriert ist. Und das ist auch der Hebel, um Updates dann doch zu beschleunigen:

Der Windows Update Client prüft anscheinend beim Start, ob der Zeitpunkt von "ScheduledInstallDate" schon vorbei ist, weil dann die Installation starten muss. Der Trick ist, diese Zeit weit genug in die Vergangenheit zu legen und dann den Dienst neu zu starten um indirekt eine sofortige Installation zu erreichen.

So können Sie z.B. folgendes einfaches VBScript mit einer Gruppenrichtlinie für Computer beim Hochfahren ausführen lassen. (Zeilenumbruch beachten"

' Remove WSUS Key to force Update/install after reboot

Set WSHShell = WScript.CreateObject("WScript.Shell")
wshShell.LogEvent 4, "ForceWSUS start succesfully
WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\ScheduledInstallDate" , "2006-01-11 06:00:00" , "REG_SZ"

wshShell.LogEvent 4, "ForceWSUS Done
wscript.quit

Wenn der Windows Update Dienst dann startet, nimmt er an, dass die letzte Installation schon lange zurückliegt und er nach dem Neustart des PCs gleich mit der Installation startet.

Ich kann nicht garantieren, dass dieser Trick immer funktioniert. Eventuell muss der Dienst "Automatische Updates" nach dem Import noch einmal gestartet (net stop wuauserv und net start wuauserv) werden.

Wenn Sie jedoch erweiterte Anforderungen an Patchmanagement stellen, werden Sie kommerzielle Lösungen vorziehen.

WSUS und Self Update

WSUS nutzt den lokal installierten IIS, um den Clients einen Zugriff zu erlauben. Bei der Installation werden Sie gefragt, ob WSUS die Standardwebseite auf Port 80 oder eine eigene Webseite nutzen soll. Zwar ist die erste Option vorgeschlagen, aber viele Administratoren möchten WSUS gerne als eigene Webseite betreiben. WSUS arbeitet dann mit dem Port 8530. Allerdings benötigt der WSUS-Server selbst immer noch die Funktion "SelfUpdate". und diese funktioniert nur, wenn der Zugriff auf "Localhost" einen Webserver erreicht, auf dem das virtuelle Verzeichnis "Self Update" vorhanden ist.

Es gibt aber nun mehrere Gründe, die das verhindern. So könnte ein anderer Webserver auf Port 80 arbeiten, oder Sie haben den IIS umgestellt, dass die eigentliche Standardwebseite auf einem anderen Port arbeitet und Sie port80 für eigene Zwecke verwenden können. Es gibt zwei mögliche Lösungen:

Oliver Münchow hat mir hier geschrieben, dass es nicht immer ein IIS sein muss, auf dem "SelfUpdate" bereit gestellt wird. Wenn Sie z.B. die WSUS-Seite mit dem IIS auf Port 8530 laufen lassen (Wegen ASP erforderlich) aber auf Port 80 z.B. ein Apache seinen Dienst als Firmenwebseite tut, dann können Sie auch im Apache dieses "Selfupdate" veröffentlichen.

<VirtualHost *>
ServerName wsus.meine-firma.de
DocumentRoot "C:/Programme/Update Services/Selfupdate"
CustomLog logs/windowsupdate_access.log combined ErrorLog logs/windowsupdate_error.log </VirtualHost>

Alias /selfupdate "C:/Programme/Update Services/Selfupdate"
Alias /SelfUpdate "C:/Programme/Update Services/Selfupdate"
Alias /clientwebservice "C:/Programme/Update Services/WebServices/ClientWebService"
Alias /ClientWebService "C:/Programme/Update Services/WebServices/ClientWebService"
 

Für WSUS sind beide Alternativen in Ordnung und nach einem Neustart des "Update Service" sollten Sie in der Webseite dann auch nicht mehr die Warnung sehen, dass SelfUpdate nicht funktioniert.

Kontrolle auf dem Client

Aber auch auf dem Desktop kann man mit dem neuen Windows Update Client aktiv werden. Dazu dienst das Programm "wuauclt.exe", welches im System32-Verzeichnis gespeichert wird. Es kann direkt mit Kommandozeilen aufgerufen werden:

wuauclt.exe /detectnow

  1. Update mit neuer GUI
    Diese erweiterte Kommandozeile auf dem Client startet nicht nur eine sofortige Prüfung, sondern generiert auch eine neue GUID für den Client. Dies ist sinnvoll, wenn Sie einen Client "clonen". WSUS orientiert sich nicht an der SID oder dem Namen des Computers, sondern hat eine eigenen Schlüssel. Wenn der Client daher vorher schon im WSUS bekannt war, dann wird er nun ein zweites mal erscheinen. Der alte Eintrag wird aber immer weiter veralten und kann manuell oder automatisch gelöscht werden.

wuauclt.exe /resetauthorization /detectnow

Weitere Details finden Sie auch auf folgenden Seiten

Ein häufiger Fehler kann auch sein, dass der User IUSR_Servername deaktiviert ist. Dieser ist aber erforderlich, damit der Zugriff per "Anonymous" funktioniert.

Zusetzt gibt es natürlich auch auf dem Client noch COM-Objekte, die zur Auswertung heran gezogen werden können:

Ein Beispiel könnte wie folgt aussehen:

Set updateSession = CreateObject("Microsoft.Update.Session","PCNAME")
Set updateSearcher = updateSession.CreateupdateSearcher()
WScript.Echo "Searching for Software updates..." & vbCRLF
Set searchResult = updateSearcher.Search("IsInstalled = 0 and IsHidden = 0")
WScript.Echo "Pending Updates:" & searchResult.Updates.Count

Noch schöner ist aber die Powershell-Version, da man hier schon per Kommandozeile einfach "schauen" kann, was passiert:

$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$Searcher.GetTotalHistoryCount()
$list = $Searcher.Search("IsInstalled = 0 and IsHidden = 0")
write-host "Pending Updates " $list.updates.count

Bestimmte Daten wie z.B. wann das letzte Mal nach Updates gesucht oder Updates installiert wurden, konnte ich bislang nicht per API ermitteln. Die Daten stehen aber in der Registrierung

Oder als Textform

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Detect
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\WindowsUpdate\Auto Update\Results\Download
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\WindowsUpdate\Auto Update\Results\Install

Per Powershell kann der Wert recht einfach ausgelesen werden

Get-ItemProperty -Path Registry::"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install" | format-list

Die Zeiten sind in UTC gespeichert.

WSUS Tools und Script

Viele Dinge, die wünschenswert sind, sind aber nicht über die GUI erreichbar, sondern über Skripte. Microsoft liefert dazu WSUS-Tools (http://www.Microsoft.com/windowsserversystem/updateservices/techinfo/default.mspx), welche einige VBScripte enthalten besonders interessant sind hierbei:

Interessant ist sicherlich, dass die meisten Tools in Visual Basic.NET geschrieben sind und als Sourcecode direkt vorliegen.

Die Tools enthalten noch weitere Skripte und sind eine gute Basis für eigene Entwicklungen mit VBScript und anderen Programmiersprachen.

Zudem gibt es auf http://www.Microsoft.com/windowsserversystem/updateservices/downloads/default.mspx Server und Client Debug Tools, die z.B. auch einen Weg enthalten, überflüssige Patches zu entfernen

WsusDebugTool /Tool:PurgeUnneededFiles

Passend dazu gibt es mit WSUSUTIL einen Befehl, um Patches auch aus der Datenbank zu entfernen

WSUSUtil deleteunneededrevisions

Voraussetzung hierfür ist aber, dass die Webseite vorher gestoppt wird und die überflüssigen Patches auch "Abgelehnt" werden.

Die Priorität zum Download von Update kann man mittels OSQL durchführen.

net stop WSusService
"C:\Programme\Update Services\tools\osql\osql.exe" -S SRV01\WSUS -E -b -n -Q "USE SUSDB update tbConfigurationC set BitsDownloadPriorityForeground=1"
net start WSusService

Schade, das viele Funktionen von WSUS daher nicht von der GUI direkt zu erreichen sind. Die beiden folgenden Befehle "sollen" angeblich das gleich bewirken aber bislang konnte ich das nicht bestätigen. Der OSQL-Weg funktioniert bei mir

WsusDebugTool /Tool:SetForegoundDownload
WsusDebugTool /Tool:ResetForegoundDownload

Die Anzeige der aktuellen Einstellungen können Sie ebenfalls per OSQL erhalten:

C:\Programme\Update Services\Tools\osql\osql.exe" -S %COMPUTERNAME%\WSUS -E -b -n -Q "use susdb select BitsDownloadPriorityForeground from tbConfigurationC

BitsDownloadPriorityForeground
------------------------------
0
(1 row affected)

Wobei 0 für eine niedrige (Hintergrund) und 1 für eine hohe (Vordergrund) Priorität steht.

Update Services Notification

Auf ein ganz besonderes Programm in diesem "Update Services API Samples and Tools" möchte ich noch hinweisen. Es heißt "Update Services Notifications" und erlaubt die Installation eines Dienstes, welcher an eine SMTP-Adresse Statusberichte und Informationen über neue Updates sendet.

Sie installieren einfach das Programm über das Setup und starten dann den Link im Startmenü. Heraus kommt ein Dienst, welcher automatisch gestartet wird und bei neuen Updates und zu den konfigurierten Zeiten entsprechende Reports versendet. Es bietet sich natürlich an, hier generische Adressen von öffentlichen Ordnern oder Verteiler zu nutzen.

Das Programm nutzt die Komponente "web.mail.smtpmail", welche ihrerseits auf CDOSYS aufsetzt. (http://msdn.Microsoft.com/library/default.asp?url=/library/en-us/randz/protocol/cdosys.asp).

Drücken Sie daher einfach mal auf den Test Button. Wen ein Fehler kommt, dann sehen Sie dort sehr gut die Ursache:

Vielleicht vermissen Sie ein Feld zur Eingabe der "Absenderadresse" der Mail. Da der Source-Code ja offen ist, reicht ein Blick dort hinein um festzustellen, dass das Programm die Zieladresse als Absenderadresse verwendet. Dies ist wichtig, da Exchange ja gerne Adressen ablehnt, die es nicht gibt oder ein Versand an eine externe Adresse verweigert, wenn der Absender nicht intern ist. (Relayschutz). Da hat ein Entwickler wohl nicht ganz zu Ende gedacht. Eine Änderung im Source ist aber einfach möglich.

Die Reports sehen dann wie folgt aus:

Conformity Report per Web

Ein Problem von WSUS ist, dass eine Person entweder WSUS Admin ist oder keinen Zugriff erhält. Eine Unterteilung in "Nur Anzeigen" gibt es erst einmal nicht. Aber auch hier ist Hilfe in Aussicht, da das Update Services API Samples and Tools"-Paket auch ein Programm zur Erstellung eines Konformitätsberichts enthält. Das Programm liest einfach die Daten aus der Datenbank und erstellt eine einzelne HTML-Seite mit einer Übersicht aller Server und der Anzahl der Patches.

Es ist nun ein leichtes eben dieses Programm z.B.: mit dem Windows Taskplaner immer mal wieder zu starten und die HTML-Datei auf einem Verzeichnis abzulegen und über den IIS freizugeben. So könnten Sie folgenden Batch z.B.: alle Stunden per AT-Befehl starten:

start /wait "C:\Program Files\Update Services\Tools\ComplianceReport.exe"
start /wait "C:\Program Files\Update Services\Tools\ComputersNeedingReboot.exe"
move "C:\Program Files\Update Services\Tools\*.html" "C:\Program Files\Update Services\wwwreport"

Der Batch kann problemlos als "SYSTEM" gestartet werden. Dann müssen Sie nur noch das Verzeichnis ":\Program Files\Update Services\wwwreport" per NTFS-Berechtigungen sichern und im IIS freigeben:

Damit kann dann auch ein Operator, der nicht direkt am WSUS administrieren darf, einen Überblick über die Systeme erhalten.

Die Ausgaben der beiden Beispielprogramme von Microsoft sind leider nicht ganz korrekt, da Sie nur die fehlenden Patches zählen ohne Rücksicht auf das Alter des Eintrags oder ob der PC überhaupt schon etwas gemeldet hat. Zudem sind die Einträge weder alphabetisch noch nach Gruppen sortiert.

WSUS über ReverseProxy veröffentlichen

In der Regel wird eine Firma den WSUS-Server intern betreiben und damit direkt für Clients erreichbar machen. Die Lizenzbedingungen verbieten, dass Sie einen WSUS ins "Internet" hängen oder gar erreichbar machen. Das wollen Sie aber hoffentlich auch nicht, da der WSUS keine Authentifizierung macht und sich dann JEDER einfach an dem WSUS melden kann und sich hinterlässt. Wenn Sie also morgen nicht 1 Mio "PCs" in ihrer WSUS-Datenbank finden wollen, dann lassen Sie das besser

Aber es kann durchaus eine Option sein, den WSUS nicht direkt von den Clients erreichbar zu machen, sondern hinter einem Proxy zu verbergen, welcher z.B. die Downloads der Updates cachen kann oder den Zugriff auf den WSUS (IP-Restrictions/URL Filtering) absichert.

Dazu sollten Sie aber wissen, dass der WSUS nicht nur "angesprochen" wird, sondern auch eine XML-Datei mit den Updates erstellt. Diese XML-Datei enthält auch die URLs, wo die Updates zu beziehen sind. Und hierzu nutzt der WSUS den Hostname, der im HTTP-Request enthalten ist.

Wer also per Reverse Proxy die Anfragen von den Clients annimmt und an den WSUS als eigenständigen "Request" mit z.B. dem echten Hostnamen des WSUS-Servers oder gar der IP-Adresse weiter gibt, wird auf den Clients erleben, dass diese dann ihren Reverse Proxy umgehen wollen, um die Updates zu ziehen.

Es ist also wichtig, dass der Reverseproxy nicht nur die HTTP-Anfrage weitergibt, sondern den Hostnamen auch in den Request mit übernimmt.

Wer z.B.: den ISA/TMG einsetzt, muss diesen Namen in der Veröffentlichung eintragen bzw die Checkbox setzen, dass der originale Header gesendet wird:

Wer hingegen einen Apache mit MOD_PROXY einsetzt, muss dazu die Option "ProxyPreserveHost" aktivieren.

Alle neuen Clients bekommen dann die neue Patchliste mit den "richtigen" URLs zum Download. Allerdings kann es erforderlich sein, das Sie den Cache auf dem Client einmalig leeren, denn der Windows Update Client speichert sich lokal die Daten in "C:\Windows\SoftwareDistribution". Dieses Verzeichnis können Sie einfach löschen, wenn Sie vorher den Windows Update-Dienst stoppen und danach wieder starten.

Weitere Links

Keywords:SUS WindowsUpdate Patchmanagement Hotfix Patch MBSA MBSAFU WSUS