Anleitung – Local Update Publisher (LUP) Softwaredeployment

Jeder Admin (unter Windows) kennt wahrscheinlich das Problem: Windows und die gesamte Microsoft-Software-Schiene bekommt die Updates automatisiert via kostenlosem WSUS (Windows Server Update Services), aber was ist mit Software von anderen Anbietern? Spätestens wenn man an  das Java Runtime Environment, den Adobe Flashplayer, oder auch den Adobe Acrobat Reader denkt, vergrößern sich die -ohnehin schon vorhandenen- Sorgenfalten um ein Vielfaches.

Für große Umgebungen gibt es -wie soll es auch anders sein-  natürlich entsprechende Programme, um das gesamte System aktuell zu halten. Gerade aber im Bereich der kleineren und mittleren Umgebungen ist soetwas zu teuer.

Die Lösung

…lautet Local Update Publisher (kurz LUP). Obwohl es dieses tolle Tool schon länger gibt, bin ich erst vor ein paar Tagen darüber gestolpert. Damit LUP eingesetzt werden kann, muss ein WSUS Server im Netzwerk aktiv sein und korrekt funktionieren.

LUP kommuniziert mit dem WSUS  Server und „checkt“ Pakete in das WSUS-Software-Repository ein, abgesehen davon können mit dem LUP während der Paketerstellung Regeln definiert werden:

a.) Kriterien, ob das Paket auf den Clients schon installiert ist
b.) Auf welchen Rechnern das Paket überhaupt installiert werden soll (z.b. nur auf Clients mit Windows 7, oder nur Clients mit XP Pro SP3)

Signierung

Damit  Pakete in den WSUS eingecheckt werden können bzw. die Clients die von uns über den LUP erstellten Pakete überhaupt akzeptieren, müssen die Pakete signiert werden. Dies wiederum setzt voraus, dass ein entsprechendes Zertifikat vorhanden ist.

Auch hier gibt es nun 2 Varianten, wie man dieses Zertifikat erstellen kann:

  1. Man erstellt eine Kopie des -auf einem Windows Server vorhandenen – Zertifikates für „Code Signing“ (siehe bitte: http://infrablog.escde.net/2011/03/18/deployment-von-msp-updates-uber-wsus-teil-1-konfiguration/) -> Hierfür benötigt man aber die Enterprise Edition der Windows Server!
  2. Man verwendet das Zertifikat, welches beim Erststart vom LUP automatisch erstellt wird (für Umgebungen mit zb Windows Server STANDARD meiner Meinung nach die empfohlene Methode!)

Ich setze in diesem „How-To“ auf Variante b. -> also auf die Verwendung des „LUP-Zertifikates“.

 

Installation

Folgende Grundvoraussetzungen sind vor der Installation des LUP zu prüfen:

  • WSUS Server 3.0 SP2 vorhanden + einwandfreie Funktion?
  • .NET Framework in Version min. 3.5 installiert?
  • auf dem Client auf dem man LUP installiert -> WSUS Konsole vorhanden? Hier gibt es dann noch etwas, auf das man unbedingt achten muss. Im August 2012 wurde durch ein Update von MS der WSUS gehärtet (http://support.microsoft.com/kb/2720211). Hat man dieses Update auf dem Server eingespielt, muss man es auch auf dem Client einspielen, von dem aus man den WSUS administriert. (Also dort, wo die WSUS Konsole installiert ist).
  1. Zuerst müssen wir uns den LUP herunter laden: http://sourceforge.net/projects/localupdatepubl/files/ (hier bitte das MSI File nehmen)
  2. Dann starten wir die Installation auf einem beliebigen Windows Client (bevorzugt mittlerweile Windows 7!)
  3. Hierbei kann man die angebotenen Standardwerte einfach übernehmen

Der erste Start des LUP

LUP muss als Administrator (Domänen-Admin) ausgeführt werden.

Im darauffolgenden Fenster muss der Name (Netbiosname) des WSUS Server eingegeben werden. Standard ist ohne SSL. Habt ihr eine sichere Verbindung zum WSUS müsst ihr SSL aktivieren. (Anmerkung: Da LUP mehrere Sprachen beherrscht, kann man ihn – wie man unten sieht- auch auf Deutsch umstellen. Da die deutsche Übersetzung aber teilweise etwas unglücklich ist, rate ich dazu die Einstellung auf Englisch zu belassen bzw. auf Englisch umzustellen).

Habt ihr alles korrekt eingegeben sollte die Verbindung mit dem WSUS Server zustande kommen. Jetzt geht es dann langsam ans Eingemachte. Der LUP versucht nun ein Zertifikat vom WSUS herunter zu laden. Gelingt das nicht, schlägt LUP vor ein eigenes Zertifikat zu erstellen (self signed).

Wir lassen den LUP nun das Zertifikat entsprechend erstellen. Daraufhin öffnet LUP ein Fenster in dem euch das Zertifikat angezeigt wird.Ist das nicht der Fall gehen wir im LUP auf  Menü Tools -> Certificate Information.

Unten links in dem nun erscheinenden Fenster klicken wir auf „Export Certificate“ und speichern das Zertifikat unter einem aussagekräftigen Namen ab.

Anmerkung: Wie der Autor von LUP auf seiner Website erwähnt, ist das soeben exportierte Zertifikat in der Standardeinstellung für „all purposes“ –> also für ALLE ZWECKE verwendbar. Dies sollten wir auf  „Signature only“ –> also auf „nur signieren“ bzw. in der deutschen Version „Codesignatur“ umstellen.

Umstellen des Zertifikates auf „Codesignatur“

  • Unter Windows 7 starten wird die MMC (mit Adminrechten!)
  • Wir fügen das Snap-in „Zertifkate“ hinzu (wählen hier dann Computerkonto -> Lokaler Computer -> Fertigstellen -> Ok)
  • Wir navigieren in der Zertifikate MMC  zu Vertrauenswürdige Herausgeber -> Zertifkate
  • Rechtsklick auf Zertifikate -> Alle Aufgaben -> Importieren
  • Wir wählen das zuvor exportierte Zertifkat zum Import aus und bestätigen alles mit OK
  • Unter Vertrauenswürdige Herausgeber -> Zertifikate sollte nun ein „WSUS Publisher Self signed“ Zertifikat aufscheinen
  • Rechtsklick auf das Zertifikat -> Eigenschaften
  • Unter Zertifikatszwecke -> Nur für folgende Zwecke aktivieren -> Codesignatur
  • Mit Ok bestätigen
  • Rechtsklick auf das Zertifikat -> Alle Aufgaben -> Exportieren
  • Zertifikat unter einem eindeutigen Namen speichern
  • In der Zertifikats MMC das Zertifikat löschen

Das Fenster in der wir auf Codesignatur umstellen (Eigenschaften des Zertifikates) sieht so aus:

Wir verwenden ab hier nur noch das soeben exportierte Zertifikat!

Das Zertifikat auf die Clients bringen

Nachdem ich davon ausgehe, dass in einer Windows Domäne gearbeitet wird, ist der simpelste Weg, das Zertifikat auf die Clients auszubringen, die Verwendung der Gruppenrichtlinien. Wenn man noch Server 2003 bzw. Windows XP Clients einsetzt, müssen die folgenden Schritte von einer Windows 7 Maschine, die sich optimalerweise ebenso in der Domäne befindet, getätigt werden.

Vorarbeiten auf dem Windows 7 Client bzw. WSUS

  • RSAT auf Win7 Client installieren (http://www.microsoft.com/en-us/download/details.aspx?id=7887)
  • Per Wsus prüfen, dass die CSE (Client Side Extetnsions) auf den Windows XP Clients installiert sind.  (KB943729)
  • Auf dem Windows 7 Client -> Windows-Funktionen aktivieren deaktivieren -> Tools für die Gruppenrichtlinienverwaltung  (unter Remote-Serververwaltungstools -> Featureverwaltungstools) aktivieren -> OK

Eine Gruppenrichtlinie erstellen

Wir starten auf dem Windows 7 Client die MMC (als Domänen-Admin!) und fügen das Snap in „Gruppenrichtlinienverwaltung“ hinzu. Ihr solltet dann soetwas sehen (je nach Komplexität der Domänenstruktur):

In unserem Beispiel, nehmen wir an, dass alle Computer, die über den WSUS versorgt werden in der OU (Gruppenrichtlinie_Computer) enthalten sind. Deshalb passen wir nun diese Richtlinie an:

  • Bei Klick auf den Pfeil links neben der Richtlinie klappt dieser Eintrag „auf“ und man sieht die damit Verknüpften Richtlinien.
  • Wir klicken die gewünschte Richtlinie mit der rechten Maustaste an an und wählen „Bearbeiten“

Danach sollten wir in etwa soetwas angezeigt bekommen:

Bei Computerkonfiguration klappen wir folgende Menüs aus:

  • Windows Einstellungen -> Sicherheitseinstellungen -> Richtlinie für öffentliche Schlüssel -> Vertrauenswürdige Herausgeber
  • Importieren
  • Hier wählen wir dann das zuletzt exportierte Zertifkat (weiter oben nachzulesen)
  • Nach dem Importvorgang, klicken wir das Zertifikat mit der rechten Maustaste an und wählen „Eigenschaften“
  • Hier prüfen wir nochmals, ob das Zertifikat auf  Zweck -> Codesignatur eingestellt ist. Wenn nicht auf Codesignatur umstellen
  • Die exakt gleichen Schritte machen wir nochmals für : Windows Einstellungen -> Sicherheitseinstellungen -> Richtlinie für öffentliche Schlüssel -> Vertrauenswürdige Stammzertifizierungsstellen
  • Unter Computerkonfiguration -> Richtlinien -> Adminstrative Vorlagen -> Windows Komponenten -> Windows Update -> stellen wir „Signierte Updates aus einem Intranetspeicherort für Microsoft Updatedienste zulassen“ -> AKTIVIERT

Somit haben wir nun also die wichtigen Einstellungen für die Clients erledigt.

Auf dem WSUS Server habe ich die folgenden Schritte manuell erledigt:

  • MMC öffnen -> Zertifikate wählen
  • Computerkonto
  • Lokaler Computer
  • Schließen / OK
  • Vertrauenswürdige Stammzertifizierungsstellen -> Zertifikate -> Import -> Hier wieder das zuletzt erstelle LUP Zertifikat importieren
  • Vertraute Herausgeber -> Zertifikate -> Import -> Abermals das zuletzt erstellte LUP Zertifikat importieren
  • Snap in hinzufügen -> Gruppenrichtlinien Objekt Editor -> lokaler Computer
  • Einstellen:
  • Computerkonfiguration -> administrative Vorlagen -> Windows Komponenten -> Windows Update -> „Signierte Inhalte aus internem Speicherort für Microsoft-Updatedienste zulassen“ aktivieren

 Was sollte  jetzt funktionieren / geprüft werden

Wir haben in den vergangenen Schritten LUP installiert, alle Anforderungen überprüft und ggf. angepasst, ein Zertifikat erstellen lassen, eine GPO erstellt, die das notwendige Zertifikat für die entsprechende Computer – OU in der Domäne verteilen soll und schließlich auch auf dem Server einige Anpassungen vorgenommen.

Nun gilt es zu prüfen, ob die per GPO verteilten Zertifikate auch den Weg auf die Clients finden, die in der entsprechenden OU abgelegt sind.

Dies lässt sich leicht prüfen, in dem man auf einem beliebigen Client die Zertifikate MMC öffnet und nachschaut, ob unter den vertrauten Herausgebern bzw. auch unter den vertrauenswürdigen Stammzertifizierungsstellen unser Zertifikat auftaucht.

Es muss auf jeden Fall auf den Clients sein, bevor wir weiter machen können.

Anmerkung: Die Gruppenrichtlinien können auf einem Client per Befehl: gpupdate /force zur sofortigen Umsetzung angestoßen werden. Ein gpresult /r liefert u.a. Infos, welche Richtlinien umgesetzt wurden.

LUP starten und Updatepaket erstellen

Ich schicke gleich voraus, dass ich bislang nur mit EXE Paketen gearbeitet habe. Grundsätzlich funktioniert das Deployment mittles LUP so:

  1. Paket wählen
  2. Regel definieren, die prüft, ob das Paket auf dem Client schon installiert ist (am besten ging es bis jetzt mit Registrywert DisplayVersion unter Uninstall (genauere Info folgt unten))
  3. Regel definieren, die festlegt welche Anforderungen an den Client gestellt sind, damit das Paket überhaupt zur Installation angeboten wird (zb. Version von Windows größer oder gleich Win XP SP3)
  4. Paket für die entsprechende WSUS Gruppe (per LUP Console!!) freigeben (approved)
  5. Hoffen, dass alles klappt 😉

Detailiertere Vorgangsweise

  • LUP starten (als Domänen-Admin!)
  • Tools -> Create Update
  • Installationsdatei wählen (Zb. Adobe Reader, oder Flashplugin etc.)
  • Next
  • Ganz wichtig: Unter Command Line können / müssen Parameter eingegeben werden, damit die Installation Silent durchgeführt wird. Dieser Parameter ist bei jedem Programm anders. Bei Flash ist es -install:

  • Im nächsten Fenster müssen die Installed Rules angegeben werden. Dies sind die Bedingungen, die festlegen, ob ein Paket auf einem Client bereits vorhanden sind. Es bietet sich an, hier den Regkey (64-Bit Windows!) wobei das HKEY_LOCAL_MACHINE vorgegeben ist:
  • SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player ActiveX
  • Reg SZ Wert: DisplayVersion
  • Equal to
  • 11.4.402.287 (natürlich bei neueren Flashplayern anders! bitte Key selbst prüfen!)

zu verwenden.

Wichtig: Für 32-Bit Betriebssyteme muss noch eine zusätzliche Regel definiert werden! Diese sieht sehr ähnlich aus:

  • Im nächsten Fenster müssen die Installed Rules angegeben werden. Dies sind die Bedingungen, die festlegen, ob ein Paket auf einem Client bereits vorhanden sind. Es bietet sich an, hier den Regkey (32-Bit Windows!) wobei das HKEY_LOCAL_MACHINE vorgegeben ist:
  • SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player ActiveX
  • Reg SZ Wert: DisplayVersion
  • Equal to
  • 11.4.402.287 (natürlich bei neueren Flashplayern anders! bitte Key selbst prüfen!)

Hat man beide Regeln definiert, markiert man beide Regeln (STRG gedrückt halten) , danach klickt man auf Group und wählt „OR“. (Also eine ODER Regel, damit beide Varianten 32 und 64 Bit abgedeckt sind)

Zuletzt muss noch ein weiterer Regelsatz erstellt werden -> „Installable Rules“:

  • Hier kann man zb folgendes festlegen:
  • Rule Type: Windows Version
  • Comparision: Greater than or equal to Windows 7
  • Save Rule

Hier würden also nur Windows 7 Clients das Update bekommen.

Ab hier muss man dann eigentlich nichts mehr definieren, sondern kann sich mittels „NEXT“ durchklicken, bis das Paket erstellt wird.

Im LUP klickt man das Paket, welches man „Freigeben“ will mit rechts an und klickt auf „approve“.  Schließlich wählt man noch aus, für welche Gruppe von Computern (WSUS Gruppe) das Update freigegeben werden soll und die Sache sollte laufen.

Anmerkung zum Schluss: Die LUP Updates scheinen NICHT im WSUS auf,  sondern nur im LUP. Es macht also keinen Sinn, die selbst erstellten Updates im WSUS zu suchen. 🙂

Tips

32 Bit Registry

Bei aktiviertem „32 Bit Registry“ bei den installed rules wurde mir das Update immer wieder angeboten. Lösung: Häkchen nicht setzten

Falls ihr dennoch das Update immer wieder angeboten bekommt, schaut auch eure definierte „Installed rule“ nochmals an. Oft hat man hier einen Schreibfehler (z.b. ein Leerzeichen, wo keines hingehört)

Acrobat Reader

Dem Exe-Installer werden folgende Parameter mitgegeben, damit dieser „silent“ installiert bzw. das EULA automatisch auf „akzeptiert“ gestellt wird:

  • /msi EULA_ACCEPT=YES /qn

Adobe Flashplugin ActiveX

Dem Exe-Installer wird folgender Parameter mitgegeben, damit die Installation „silent“ erfolgt:

  • -install

Java Runtime Environment

Hier bedienen wir uns folgender Parameter:

  • /s /L C:\setup.log

…wobei an sich der Parameter /s hier reicht.

Windows 8

Nachdem ja mit morgigem Tag (26.10.2012) Windows 8 erscheint, habe ich bereits mit der Windows 8 Evalversion getestet. Bevor Ihr von einem WSUS 3.0 SP2 Updates in Richtung Win8 ausbringen könnt, müsst ihr KB2734608 auf dem WSUS Client Rechner (WSUS Konsole) und auf dem WSUS Server installieren. Nachdem das erledigt ist, müssen alle Packages im LUP „resigned“ werden.

Achtung: Das Self signed Serverzertifikat muss eine Schlüssellänge von mindestens 1024Bit haben! (prüfen!).

Bitte achtet darauf, dass ihr genügend Testläufe durchführt, bevor ihr eure Updates in das Produktivnetz ausrollt. Mit wenigen Clients zu testen, die verschiedene Versionen des OS installiert haben, macht hier am meisten Sinn.

Natürlich kann ich keine Verantwortung für eventuelle Probleme/Schäden etc. übernehmen.

 

10 Gedanken zu „Anleitung – Local Update Publisher (LUP) Softwaredeployment“

  1. Hallo,

    ich benutze seit kurzer den LUP. Was bedeutet beim importieren des Kataloges Metadata und wofür benötigt man das erneute signieren von Paketen? Danke schon mal für eure Hilfe

    Grüße Marcel

    Antworten
    • Hallo,
      was konkret meinst du mit „erneutes signieren“? Wenn die Pakete eingecheckt werden, werden sie signiert, weshalb auch die Zertifikate installiert werden müssen (selfsigned). Falls du den Befehl „Pakete erneut signieren“ meinst, denke ich dass das nur notwendig ist, wenn etwas mit dem Zertifikat nicht stimmt, oder aber das Zertifikat ausgetauscht worden ist. (hier bin ich mir aber nicht sicher!)

      Antworten
      • Hallo Daniel,

        danke für deine Antwort. Verstanden habe ich es. Jetzt habe ich noch 2 Fragen. Was bedeutet Metadaten beim importieren von Katalogen und aktuell möchte ich Adobe Reader DC verteilen. Die Schalter /msi EULA_ACCEPT=YES /qn funktionieren nur sagt er im LUP, dass das Paket not applicable sei. Warum?

        Antworten
  2. Moin,
    ich setze den LUP schon einige Zeit erfolgreich ein. Mich stört aber, dass trotz eingesetzter Regeln im WSUS die Updates as erforderlich angezeigt werden, obwohl sie nicht dafür vorgesehen sind.
    Beispiel: der Flashplayer soll nur auf Arbeitsplätzen, aber nicht auf Servern installiert werden. Die eingerichtete Regel lautet: Windows Version größer als WindowsXP SP3, Produkttyp Arbeitsplatz. Trotzdem werden die Updates, als nicht genhemigte Updates bei den Servern angezeigt.
    wie kann man das besser lösen?.

    VG
    Karsten

    Antworten
  3. Hi,

    ich nutze LUP schon seit Version 0.6
    @Thorsten
    Interessant, dass man die Updates auch direkt in der WSUS-Konsole anzeigen lassen kann.
    Aber vermutlich ist genau das ein Problem:
    Vermutlich blendet LUP alles aus, was in der WSUS-Konsole dargestellt wird, um keine doppelten Updates zu produzieren.

    @Daniel
    Ich nutze für die Updates jeweils die MSI-Varianten von Adobe FlashPlayer und Java.
    Bei Adobe Flashplayer ist es ganz easy:
    Melde Dich für die Verteilung bei Adobe an und Du bekommst Zugriff auf die MSI-Versionen inkl. einer SCUP-Cab-Datei, die als Katalog direkt importiert werden kann.
    Danach klickst Du an, welche Version Du bereitstellen möchtest (Achtung: keinen Haken bei Metadata!!) und LUP zieht sich automatisch die Updates von Adobe und stellt sie bereit. Danach nur noch Genehmigen – fertig.

    Antworten
  4. Hallo Daniel,

    ein Lob für die sachliche Zusammenfassung deiner LUP Installation. Ich habe es dir gleich getan, habe allerdings eine andere etwas ausführlichere Anleitung verwendet. Darin wird ein SQL-State auf der SUSDB ausgeführt, welche die im LUP erstellten Updates in der WSUS Konsole sichtbar macht. Blöderweise habe ich seitdem keine Updates mehr im LUP dafür aber in der WSUS-Konsole. Dort kann ich aber die Richtlinien nicht verändern. Hast du darüber schon mal etwas gehört?

    Gruß
    Torsten Kraft

    Antworten

Schreibe einen Kommentar

* Zustimmung zur Datenspeicherung lt. DSGVO

*

Ich bin damit einverstanden