Einleitung
Die IT der Unternehmen steht immer häufiger vor der Herausforderung Anwendungen auf einem aktuellen Stand zu halten. Die Zeit während der Quarantäne in der Corona-Pandemie-Zeit hat diese Hürden nicht gemindert. Ganz im Gegenteil, für einige waren die Systeme garnicht mehr erreichbar, oder verwaltbar.
Und gerade in dieser Zeit, wo die Konferenztools einen enormen Boom hatten, fanden sich ganz schnell Installationen auf den Systemen wieder. Aber wie so oft, einmal installiert und nie mehr aktualisiert. Allen voran Tools, die ganz ohne administrative Rechte installiert werden können. Zum Beispiel Webex oder Zoom.
Das Problem an diesen Anwendungen ist, dass man über die administrative Installationsrutine nicht, oder nur sehr schwer an die Anwendungen ran kommt. Denn diese sind bekanntlich irgendwo unter
C:\Users\<Username>\AppData\Roaming
installiert.
Es wäre schön, wenn das System eigenständig einmal am Tag prüft, ob es für eine Anwendung – nehmen wir zum Beispiel Zoom – eine Aktualisierung gibt und diese selbstständig auf den neusten Stand bringt. Dann schauen wir mal was wir im Portfolio von Microsoft 365 zur Auswahl haben und einsetzen können.
Intune Plan 1 – für die Geräteverwaltung
Winget – als Package Manager
Proactive Remediations – für die regelmäßige Ausführung
Defender for Endpoint (optional) – erkennen von Schwachstellen in Applikationen
Lizenzanforderungen
Für den Einsatz der oben genannten Produkte werden folgende Lizenzen benötigt.
Intune Plan 1:
- EM+S E3 oder höher oder
- Microsoft 365 Business Premium oder
- Microsoft 365 E3 oder höher
Proactive Remediations:
- Windows 10/11 Ent./Edu. E3, E5, A3 oder A5 – diese Lizenzen sind im Microsoft 365 F3, E3, E5, A3, A5 enthalten
Winget:
- kostenfrei im Betriebssystem entalten
Microsoft Defender for Endpoint:
- Defender for Endpoint Plan 1 oder Plan 2 als Standalone Lizenz
- Microsoft 365 E5
Winget
Winget – ist der Windows Package Manager von Microsoft, ähnlich wie man es von Linux Systemen, oder mit Chocolatey kennt. Mit der Abkündigung des Microsoft Store for Business, rückt nun dieses Werkzeug in den Fokus der Administratoren. Mit dem Kommandozeilen-Tool ist es möglich Universal Windows Platform-Apps (UWP – .appx/.appxbundle/.msix), aber auch Win32-Apps (.exe/.msi) auf Windows 10/11 Systemen zu installieren.
Dabei stammen die Quelldateien bei UWP-Apps aus dem Microsoft Store und werden von Microsoft bereitgestellt.
Bei Win32-Apps wird bei Microsoft nur der Anwendungskatalog gepflegt. Der eigentliche Download der Quelldateien erfolgt dann von Servern des Anwendungshersteller.
Die Installation einer App ist denkbar einfach. Es wird immer die aktuellste Version der Quelldateien genutzt, es sei denn man wählt explizit eine Version aus. Ausserdem sind bereits alle Parameter gesetzt, um die Anwendung ohne Benutzerinteraktion zu installieren. Hier ein Beispiel für die Installation von Zoom:
winget install zoom
Dabei ist zu beachten, dass Installationen die administrative Berechtigung benötigen eine UAC-Meldung hervorrufen.
Winget ist ein Teil der App-Installer UWP, die ab Windows 10 21H1 oder Window 11 21H2 im Betriebssystem inkludiert ist. Prüfen kann man die Verfügbarkeit auf einem Client wie folgt.
Get-AppPackage *Microsoft.DesktopAppInstaller* | select Name,PackageFullName
Proactive Remediations
Proactive Remediations beruhen auf Powershell Skripten, die in Skriptpaketen zusammengefasst werden. Jedes Skriptpaket besteht aus einem Erkennungsskript (Detection), einem Wiederherstellungsskript (Remediation) und Metadaten. Mithilfe von Intune können diese Skriptpakete bereitgestellt und Berichte zur Effektivität angezeigen werden.
Die Ausführung der Skriptpakete kann dabei zeitlich gesteuert, einmal täglich, stündlich oder einmalig erfolgen.
Darüber kann sichergestellt werden das bestimmte Einstellungen immer nach den Unternehmensrichtlinien umgesetzt sind und Fehlkonfigurationen automatisch korrigiert werden.
Durch die Powershellskripte ist der Einsatz sehr flexibel. So kann auf das Vorhandensein von Registry-Werten, Dateien mit einem bestimmten Zeitstempel oder Hashwert oder vielen weiteren Szenarien geprüft werden. So aber zum Beispiel eben auch, ob es eine Aktualisierung für eine bestimmte Applikation gibt, welche über Winget geprüft wird.
Der Einsatz der Proactive Remediation kann entweder im Benutzer- oder im Systemkontext ausgeführt werden.
Microsoft Defender for Endpoint
Über den Defender for Endpoint wird unter anderem eine Software-Inventur aller registrierten Geräte ausgeführt. Weiterhin gibt Microsoft eine Empfehlung zu erkannten Schwachstellen in Applikationen.
Diese gesammelten Informationen laufen im Secure Score und Exposure Score zusammen. Wobei letzterer die Gefährdung aller Clients im Unternehmen darstellt. Ziel sollte es also sein diesen Wert so gering wie möglich zu halten.
Schauen wir uns die unterschiedlichen Versionen der Zoom Installationen an:
Nahezu aus jedem Dorf ein Hund. In Summe sind auf 22 Systemen 13 unterschiedliche Versionen. Wie sieht die Empfehlung im Defender for Endpoint aus?
Auf 16 der 22 Systemen ist eine gefährdete Version installiert. Das drückt den Exposure Score um 1,59 Punkte.
App Update
Nehmen wir nun Intune und die Proactive Remediation und versuchen Zoom auf einen möglichst aktuellen und einheitlichen Versionsstand zu bringen.
Beachten wir die Besonderheit aus der Einleitung, dann müssen die Skripte zur Detection und Remediation auf jeden Fall im Benutzerkontext erfolgen. Dabei muss der Pfad zu Winget in der Powershell nicht separat angegeben werden, da das Paket in jedem Benutzerprofil geladen wird. Wir brauchen erst einmal also nur die Logik für die Detection:
$upgrade = "Zoom.Zoom"
if ($(winget upgrade --accept-source-agreements) -like "* $upgrade *") {
Write-Host "Upgrade available for: $upgrade"
exit 1 # upgrade available, remediation needed
}
else {
Write-Host "No Upgrade for $upgrade available"
exit 0 # no upgrade, no action needed
}
Diese Zeilen in einer Skriptdatei abspeichern, zum Beispiel detection.ps1 und im Intune unter Reports > Endpoint Analytics > Proactive Remediations ein neues Skriptpaket erstellen.
Im ersten Schritt ist ein Name für das Skriptpaket und optional eine Beschreibung einzutragen.
Im zweiten Schritt laden wir die Skriptdatei hoch, ändern den Ausführungskontext auf „run as logged-on user“ und lassen die Skripte in der 64-Bit Powershell laufen.
Im vierten Schritt, der Zuweisung, wählen wir eine Azure AD Gruppe mit Benutzer aus, bei denen das Skript ausgeführt werden soll. Und natürlich wie oft die Prüfung erfolgen soll.
Um hier die größte Flexibilität zu haben, sollte das auf alle Benutzer angewendet werden. Denn nur wo ein Update erkannt wird, wird später auch nur das Update ausgeführt.
Jetzt lassen wir das Skript einige Zeit erst einmal Informationen sammeln. Noch passiert nichts außer der Prüfung, ob es theoretisch ein Update gäbe. Das Ergebnis kann man der gut in der Übersicht einsehen.
Wir erkennen, dass (mittlerweile) auf 18 Geräten ein „Problem“/ Update ansteht. Noch besser lässt sich das im Gerätestatus erkennen, wenn wir uns hier die Spalte „Pre-Remediation Detection Output“ einblenden lassen.
Aufgrund des „fehlerhaften“ Zustandes einzelner Geräte können wir nun das Wiederherstellungsskript (Remediation Script) einfügen und laufen lassen. Dieses wird automatisch bei Erkennen eines fehlerhaften Zustandes im Anschluss ausgeführt.
$upgrade = "Zoom.Zoom"
try{
# upgrade command
Write-Host "start Upgrade for: $upgrade"
winget upgrade --exact $upgrade --silent --force --accept-package-agreements --accept-source-agreements
exit 0
}
catch{
Write-Error "Error while installing upgrade for: $upgrade"
exit 1
}
Diese Codezeilen speichern wir als remediation.ps1 und fügen diese in unser Zoom Skriptpaket ein.
Nun heißt es wieder warten, je nach Einstellung wie häufig das Sktiptpaket ausgeführt werden soll. Um das Ganze zu beschleunigen, kann es helfen den Intune Dienst auf dem Windows 10/11 Client neu zu starten oder den gesamten Client neu zu starten. Auf den Clients gibt es natürlich auch ein Log, um das Geschehen zu verfolgen. Das ist unter:
%Programdata%\Microsoft\IntuneManagementExtension\Logs\IntuneManagementExtension.log
zu finden.
Über die ID des Skriptpaketes finden wir die Informationen zur Abarbeitung auf dem Client.
Da der Exit Code „1“ ist und ein Update vorliegt, wird automatisch das Remediation Skript gestartet und die Anwendung aktualisiert.
Im Anschluss prüft noch einmal das Detection Skript ob der Client „fehlerfrei“ ist.
Nach einiger Zeit kann man auch erkennen auf wie vielen Clients die alte Zoom Version aktualisiert wurde.
Ebenfalls im Defender for Endpoint steigt die Anzahl der Gerät mit einer aktuellen Zoom Version.
Mit kleinen Anpassungen am Detection und Remediation Skript lassen sich auch Applikationen aktualisieren, die im Systemkontext (Admin Rechte) ausgeführt werden müssen. So kann zum Beispiel das Skript für die Prüfung einer Teamviewer Aktualisierung aussehen.
$Winget = Get-ChildItem -Path (Join-Path -Path (Join-Path -Path $env:ProgramFiles -ChildPath "WindowsApps") -ChildPath "Microsoft.DesktopAppInstaller_1.19\winget.exe") $upgrade = "TeamViewer.TeamViewer" if ($(&$winget upgrade --accept-source-agreements) -like " $upgrade *") {
Write-Host "Upgrade available for: $upgrade"
exit 1 # upgrade available, remediation needed
}
else {
Write-Host "No Upgrade for $upgrade available"
exit 0 # no upgrade, no action needed
}
Fazit
Durch den effektiven Einsatz der Werkzeuge aus dem Microsoft 365 Umfeld können Anwendungen auf Clients auf einem aktuellen Stand gehalten werden, ohne das man großartig Anwendungspakete erstellen und testen muss. Da wo eine veraltete Anwendung erkannt wurde, wird automatisch aktualisiert.
So lässt sich der Exposure Score in einem Unternehmen niedrig halten, in dem man zeitnah die Anwendungen aktualisieren lässt.
Happy Updating!
SoftEd Trainings unterstützen Sie beim effektiven Einsatz von Microsoft 365. Jetzt passendes Training wählen