Microsoft Endpoint Manager: implementare le Proactive Remediation

Microsoft Endpoint Manager

Il controllo della conformità dei nostri endpoint passa anche da come attuiamo le politiche di remediation. Al giorno d’oggi la remediation può essere fatta su una configurazione errata o su un software che non riteniamo compliant agli standard aziendali, o che possono minare la sicurezza. Nel caso di software, se è vero che ogni utente non dovrebbe MAI essere amministratore locale, è anche vero che ormai molte software house si sono ingegniate per consentire l’installazione dei loro prodotti direttamente nel profilo utente e questo significa saltare i permessi amministrativi; questo obbliga gli amministratori IT a dover agire in modo preventivo e bloccare azioni non consentite.

Tutto facile nella pratica ma nella teoria diventa più complesso, ancor di più oggi che gli utenti non sono più in ufficio ed in cui le soluzioni di gestione cloud-oriented stanno sempre più prendendo piede.

Microsoft Endpoint Manager consente di gestire le politiche di remediation attraverso il suo portale ed in questo articolo vedremo come andare a disinstallare dei software non ritenuti conformi alle nostre indicazioni.

Attivazione Servizio

La prima cosa da fare è attivare il servizio ma è bene capire se si rispettano i seguenti prerequisiti:

  • Windows 10 Enterprise E3 or E5 (incluso nella Microsoft 365 F3, E3, E5)
  • Windows 10 Education A3 or A5 (incluso nella Microsoft 365 A3, A5)
  • Windows Virtual Desktop Access E3 o E5

Una volta accettate le condizioni, figura 3, sarà possibile procedere con la configurazione delle varie remediation.

Di default sono presenti due attività, figura 4, che potete anche attivare per gestire meglio il servizio Office 365 (necessario per gli aggiornamenti).

Per creare un nuovo script, cliccare sul pulsante apposito per avviare il wizard di configurazione – figura 5. Assegnate un nome ed il publisher, che può essere l’azienda o la persona che ha creato la regola.

Il pacchetto si costituisce di due script: uno di verifica ed uno di remediation. In questo caso stiamo andando a rimuovere Google Chrome installato per utente, quindi la verifica sarà composta in questo modo:

Try
{  
    $LocalAppData = $env:LOCALAPPDATA
    $AppPath =  $LocalAppData+"\Google\Chrome\Application\"
    $EXEPath = $AppPath+"Chrome.exe"
    
    If ($(Test-Path -Path $EXEPath) -eq $True) {
        Write-Host "Google Chrome is installed"
        exit 1
        }
    else {
        #No remediation required    
        Write-Host "Google Chrome is not installed"
        exit 0
    }  
}
catch {
    $errMsg = $_.Exception.Message
    Write-Error $errMsg
    # exit 1
}

Come si fa a trovare un software installato per utente? Si può usare questo cmdlet in PowerShell:

Get-ChildItem “HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall” | Where Name -Like “*chrome*”

Il valore restituito servirà sia nello script di detection che in quello di remediation. Per sapere la sintassi di rimozione del software è possibile usare questi cmdlet:

$InstalledSoftware = Get-ChildItem “HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall” | Where Name -Like “*chrome*”
$InstalledSoftware.GetValue(‘UninstallString’)

A questo punto non rimane che caricare lo script di remediation che nel nostro caso sarà il seguente:

Try
{  
    $InstalledSoftware = Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall" | Where Name -Like "*chrome*"
    $TmpPath = $InstalledSoftware.GetValue('UninstallString')  

    $LocalAppData = $env:LOCALAPPDATA
    $RemovePath =  [regex]::Matches($TmpPath, '".*?"').Value -replace '"'
    $AppPath =  $LocalAppData+"\Google\Chrome\Application\"
    $EXEPath = $AppPath+"Chrome.exe"
    
    If ($(Test-Path -Path $EXEPath) -eq $True) {
        Stop-Process -processname chrome -Force -confirm:$false
        (Start-Process -FilePath $RemovePath -ArgumentList "--uninstall -channel --verbose-logging" -Wait -Passthru).ExitCode
    }
}
catch {
    $errMsg = $_.Exception.Message
    Write-Error $errMsg
    # exit 1
}

Analizzando lo script, si capisce che il valore di uninstall viene nuovamente recuperato, per essere salvato in una variabile, mentre prima di cominciare l’operazione di disinstallazione, viene killato il processo. Il risultato finale sarà come quello della figura 6.

Lo script deve essere eseguito in un contesto utente, motivo per cui dovete selezionare la voce Run this script using the logged-on credentials.

Assegnate lo script ad un gruppo di utenti, figura 7, ed attendete qualche ora perché il sistema inizi a funzionare.

Lo stato degli script sarà visibile attraverso una dashboard – figura 8.

Troubleshooting ed Analisi

Come faccio a capire che tutto funzioni correttamente? Nella cartella C:\Windows\IMECache\HealthScripts troverete i vari pacchetti nominati sempre come detect.ps1 e remediation.ps1.

Se invece volete vedere l’andamento dettagliato, potete fare drill-down sulle singole regole per vedere lo stato – figura 9 – e quali sono gli endpoint su cui è stata applicata la remediation – figura 10.

Conclusioni

Proactive Remediation è sicuramente uno strumento molto importante per creare una compliance di sicurezza ma anche per eseguire attività di gestione client, come installazione patch, disattivazione servizi, installazione driver e molto altro ancora.