Microsoft Defender for Endpoint: Onboarding Linux con Ansible

All’interno della community abbiamo discusso a lungo di come Microsoft Defender for Endpoint possa rappresentare un pilastro fondamentale per la protezione delle organizzazioni, che risultano sempre più esposte a minacce informatiche avanzate e mirate. Gli attacchi di oggi non si limitano più a sfruttare vulnerabilità note, ma adottano tecniche sofisticate in grado di aggirare i tradizionali meccanismi di difesa, rendendo indispensabile un approccio alla sicurezza più strutturato e proattivo.

In questo contesto, estendere la protezione a tutti i dispositivi, indipendentemente dal sistema operativo o dalla loro posizione (on-premises, cloud), diventa un elemento chiave di una strategia Zero Trust realmente efficace. Ogni endpoint rappresenta un potenziale punto di ingresso e, se non correttamente gestito, può trasformarsi nel vettore iniziale di un incidente di sicurezza.

Conoscere in modo approfondito gli strumenti e le modalità di onboarding di Microsoft Defender for Endpoint per i diversi sistemi operativi presenti all’interno dell’organizzazione (Windows, macOS, Linux, dispositivi mobili) può fare la differenza non solo in termini di rapidità di implementazione, ma anche nella corretta riuscita dell’intero processo di protezione. Una fase di onboarding ben pianificata consente infatti di ridurre errori, evitare configurazioni incomplete e garantire una visibilità immediata sugli endpoint, accelerando così il raggiungimento di un livello di sicurezza adeguato e coerente con le esigenze aziendali.

A titolo informativo vi lascio gli articolo della community inerenti alle varie metodologie di Onboarding:

Quest’oggi invece vorrei darvi evidenza di come poter installare Ansible e automatizzare l’onboarding, attraverso questo strumento, di Microsoft Defender for Endpoint per sistemi operativi Linux.

Cosa è Ansible?

Ansible è uno strumento di automazione IT open source che semplifica la gestione della configurazione, il deployment di applicazioni e l’orchestrazione di flussi di lavoro complessi.

Utilizza un file di testo molto semplice in formato YAML, senza la necessità di installare agenti sui sistemi gestiti, rendendolo facile da usare per automatizzare il provisioning di server.

Lo strumento funziona definendo le azioni desiderate (task) in Playbook e moduli, permettendo di mantenere la coerenza e ripetibilità delle operazioni su larga scala.

Vi riporto le caratteristiche principali:

  • Agentless: non richiede l’installazione di software aggiuntivo sui server da gestire, comunicando tramite SSH (Linux/Unix) o WinRM (Windows)
  • Semplice: Utilizza un linguaggio dichiarativo facile da leggere e scrivere, rendendolo accessibile anche a chi non è sviluppatore
  • Potente: Automatizza il provisioning, gestione della configurazione, deployment di app, orchestrazione e molto altro
  • Open Source: Supportato da una vasta community e da una piattaforma aziendale (Red Hat Ansible Automation Platform)

Come funziona in sintesi:

  • Inventario: Definisce i gruppi di server o dispositivi da gestire
  • Playbook: Sono file YAML che descrivono una serie di azioni (task) da eseguire su quell’inventario, ad esempio “installa pacchetto X”
  • Moduli: Piccoli programmi, spesso un Python, che eseguono le azioni specifiche (es.gestire un servizio, copiare un file)
  • Ruoli: Permettono di organizzare i task, le variabili e i file correlati in unità riutilizzabile e portable

Per darvi evidenza di questa funzionalità io utilizzerò un Tenat Microsoft 365 con all’interno licenze Microsoft 365 E5 e due macchine virtuali Linux Ubuntu, una in cui vedremo come installare Ansible (ITBGLNX01) ed una seconda (ITBGLNX02) che sarà il dispositivo in cui vedremo come eseguire installazione e onboarding attraverso Ansible.

Figura 1: Dispositivo itbglnx01 in cui procederemo ad installare Ansible, con versione Ubuntu 24.04

Figura 2: Dispositivo in cui installeremo Defender for Endpoint e Onboarding attraverso Ansible

Figura 3: Licenze Microsoft 365 E5 che danno diritto all’uso di Microsoft Defender for Endpoint P2, ma va benissimo Add-on per server o P1, Business

Ora colleghiamoci in SSH alla Virtual Machine che ospiterà Ansible, nel mio caso itbglnx01 ed utilizzerò Putty

Figura 4: Inseriamo IP della VM a cui dobbiamo collegarci

Figura 5: Inserimento utente per accedere alla VM

Figura 6: Inserimento password per l’utente

Figura 7: Usiamo il comando sudo -i per agire da root

Figura 8: Richiesta credenziali di root dopo il comando sudo -i

Figura 9: Accesso eseguito come root in modo corretto

Ora il primo comando da eseguire è “sudo apt update” per la ricerca di aggiornamenti

Figura 10: Esecuzione comando per la ricerca degli aggiornamenti

Figura 11: Tutti gli aggiornamenti risultano già correttamente installati, altrimenti se serviva eseguirli eseguire questo comando sudo apt upgrade

Ora è possibile procedere ad installare Ansible “sudo apt install -y ansible”

Figura 12: Installazione inprogress di Ansible

Figura 13: Installazione Ansible avvenuta e terminata senza errori

Comando per verificare la versione di Ansible intallata “ansible –version”

Figura 14: Versione di Ansible attualmente installata sulla macchina

Comando per test Ansible in locale “ansible localhost -m ping -c local”

Figura 15: Ping eseguito correttamente

Dopo aver terminato l’installazione è necessario procedere a creare un basic inventory

Figura 16: Creazione inventory e file host

Figura 17: Struttura di Ansible

Ora popoliamo il file “inventory.ini” con la lista dei server su cui vogliamo procedere ad installare Defender for Endpoint nel mio caso è uno solo locale con IP 192.168.1.190, eseguiamo quindi il comando “nano inventory.ini” stessa identica cosa per il file “nano hosts.ini”

Figura 18: Esecuzione comando per edit del file inventory.ini e hosts.ini

Figura 19: Compilato il file in questo mondo, inserendo tutti gli IP dei server da gestire, ctrl + x + y per eseguire il salvataggio delle modifiche stessa operazione per hosts.ini

Per quanto riguarda il file hosts.ini ho “passato” anche l’utente che ha permessi di root sulla macchina:

Figura 20: Passo l’utente per permettere un collegamento corretto all’endpoint di destinazione

Ora recatevi nel portale di Microsoft Defender per il download dello script di OnBoarding

Figura 21: Portale di Microsoft Defender per il download dello script di OnBoarding

Figura 22: Download script onboarding per Ansible Linux

Figura 23: Download file zip contenente lo script di OnBoarding

Ora “scompattiamo” il file zip

Figura 24: Estrazione file zip

Figura 25: Contenuto del file zip

Ora dovremo copiare questo file all’interno di una cartella di “appoggio” del server in cui è installato Ansible, nel mio caso ho creato una cartella “file” all’interno del server con questo comando “mkdir file”

Figura 26: Creazione cartella File

Ora con WinScp copiamo il file nella cartella temporanea /tmp

Figura 27: Copia file di Onboarding in una cartella temporanea

Con il comando

spostiamo il file nel repository per essere utilizzato da Ansible

Figura 28: Comando eseguito correttamente e file spostato

Ora dovrete procedere a scaricare il bash per l’installazione di Defender for Endpoint per sistemi operativi Linux tramite questo comando

Figura 29: Download bash sulla macchina ansible per l’installazione di Defender for Endpoint per Linux

Ora posiziono lo script appena scaricato in ansible sotto la cartella file come fatto anche per lo script di OnBoarding “mv mde_installer.sh /root/ansible/file”

Figura 30: Spostamento file di installazione in un altro path

Figura 31: File utili presenti nella cartella definita, possono essere caricati in una cartella a vostro piacimento senza problemi

Ora bisognerà creare il file YAML che potete trovare al seguente link di GitHub mdatp-xplat/linux/installation/third_party_installation_playbooks/ansible.install_mdatp_simplified.yaml at master · microsoft/mdatp-xplat · GitHub

Ora dovrete creare il Playbook di Ansible con questo file per farlo dalla macchina “nano playbook.yml” NB: Cambiate il valore hosts: localhost in hosts:servers altrimenti l’installazione avverrà locale sulla macchina stessa

Figura 32: Editing del file per creare il playbook

Figura 33: Copiare il contenuto dello script di GitHub e successivamente solito comando ctrl + x +y per salvarlo

Ora siete pronti per eseguire il playbook con il seguente comando

Dovrete cambiare I percorsi in base a dove avrete i file e anche i nomi degli script, inoltre definire anche i parametri di Defender, come ad esempio il canale per il deploy, io sceglierò il canale PROD che è quello più affidabile in produzione, quindi nel mio caso il comando risulterà essere:

comando che richiederà la password di collegamento all’host

Figura 34: Esecuzione del comando per il playbook

Figura 35: Richiesta Become Password e password SSH per collegamento all’host

Figura 36: Attività eseguita correttamente

Figura 37: Dispositivo presente in console con MDE installato e su cui è stato eseguito onboarding

Se per qualsiasi motivo l’esecuzione del playbook di Ansible riscontrasse degli errori potete aggiungere il -vvv al comando

in questo modo vedrete nel dettaglio cosa lo script sta facendo in quel momento:

Figura 38: Comando -vvv che vi permette di verificare eventuali errori

Conclusioni

L’automazione dell’onboarding di Microsoft Defender for Endpoint tramite Ansible rappresenta un passo fondamentale verso una gestione della sicurezza più scalabile e ripetibile. Attraverso l’uso di playbook ben strutturati, è possibile ridurre in modo drastico eventuali errori manuale e velocizzare i tempi di installazione garantendo che tutti gli asset aziendali siano correttamente protetti e rispettino gli standard di sicurezza aziendali. L’approccio Infrastructure as Code applicato alla sicurezza consente inoltre di integrare MDE nei normali flussi DevOps e di configurazione, rendendo il processo di onboarding non solo più efficiente, ma anche tracciabile. Questo è particolarmente utile in ambienti complessi o ibridi, dove il numero di endpoint e la loro eterogeneità rendono difficile una gestione manuale. L’utilizzo di Ansible per l’onboarding di MDE non è solo una scelta tecnica, ma una scelta strategica: permette di allineare sicurezza, automazione e governance, migliorando il livello di protezione complessivo dell’infrastruttura.