Configurare Microsoft Sentinel per ricevere Log da dispositivi On-Premises

Microsoft Sentinel è una soluzione Cloud Based scalabile di Microsoft e vi permette di:

  • Gestire le informazioni e gli eventi di sicurezza (SIEM)
  • Orchestrare e rispondere in modo automatizzato ad eventi di sicurezza (SOAR)

Per l’implementazione di Microsoft Sentinel vi rimando all’articolo di Nicola Ferrini Azure Sentinel: il nuovo SIEM as a Service – ICT Power

Questa soluzione, come vedrete nell’articolo, permette in modo veramente semplice eseguire l’invio di log e/o eventi di sistemi operativi Windows e Linux, ma anche di altri dispositivi che supportino SYSLOG o che abbiamo la configurazione nativa con Microsoft Sentinel.

In questo articolo vedrete come configurare un Gateway Analytics Windows e un server SYSLOG Linux, che avranno il ruolo di “raggruppare” tutti i log per poi spedirli a Microsoft Sentinel. È possibile comunque inviare i log a Sentinel in modo nativo, ma molte volte non si vogliono esporre verso internet macchine sensibili, come ad esempio i domain controller, e quindi si configurano i proxy/gateway che inviano i log di queste macchine per poi inviarli al SIEM, in modo tale che solo essi siano esposti in internet.

Scenario

In questo articolo vedrete sostanzialmente 4 macchine virtuali:

  • Macchina LINUX à Sarà il Proxy per tutti i dispositivi Linux
  • Macchina SRVDC à Sarà il Gateway per le macchine Windows
  • SERVER LINUX à Sarà la macchina Linux che invierà i log al Proxy
  • VM365 à Sarà la macchina Windows che invierà i log al Gateway Windows

Specifico che Proxy e Macchina Linux nel mio caso sono Ubuntu LTS; quindi, i comandi presenti sono per questa versione di sistema operativo.

Così potrete vedere diverse fonti che inviano i log, vedrete la configurazione di tutte le macchine e per ultimo vedrete anche la visualizzazione degli stessi all’interno della dashboard di Microsoft Sentinel.

L’unico prerequisito da rispettare è quello di essere in possesso di una sottoscrizione Azure a consumo per poter creare il Workspace, ovvero il “contenitore” che racchiude tutte le configurazioni ed i log inviati al Siem di Microsoft.

Gli step che andrete a vedere in questo articolo saranno i seguenti:

  • Configurazione Connettori in Microsoft Sentinel
  • Installazione Proxy Linux sulla macchina LINUX
  • Installazione SYSLOG sulla macchina SERVERLINUX
  • Installazione Gateway sulla macchina SRVDC
  • Installazione Log Analytics Agent sulla macchina VM365

Ora che avete chiaro tutti i passaggi che vedrete, entrate all’interno del portale di Azure con credenziali di Global Admin Home – Microsoft Azure e aprite il servizio di Microsoft Sentinel.

Figura 1: Microsoft Sentinel

Cliccate ora sul nome del Workspace:

Figura 2: Microsoft Sentinel

Ora dovrete installare il connettore SYSLOG per poi procedere alla configurazione dello stesso:

Figura 3: Installazione Connettore Syslog

Attendete qualche secondo per l’installazione del connettore (nel mio caso sono bastati 10 secondi) ed il connettore sarà pronto per essere configurato.

Figura 4: Configurazione Connettore Syslog

Figura 5: Configurazione Connettore Syslog

Linux Server Proxy

Figura 6:Download Agent Linux

A questo punto copiate la stringa del punto numero 2 ed eseguite il comando nel vostro server Linux che ospiterà il Proxy Collector:

Figura 7:Installazione Agent Server Linux Proxy

Ora verificate che il servizio Syslog sia attivo: “sudo service rsyslog status

Figura 8:Verifica Servizio Syslog

Se doveste riscontrare il servizio Syslog non attivo potete eseguire questo comando: “sudo service rsyslog start”

Ora che il servizio rsyslog è attivo, procedete alla configurazione del file che permetterà di creare una cartella all’interno del proxy divisa per hostname delle macchine che invieranno log. Questo non è obbligatorio, ma è fortemente consigliato in modo che abbiate una situazione più pulita e ordinata.

sudo nano /etc/rsyslog.conf

Inserite nel punto 1 della schermata sottostante questa stringa:

$template FILENAME,”/var/log/%HOSTNAME%/syslog.log”

*.* ?FILENAME

Inoltre, è fondamentale che rimuoviate i commenti dei punti 2 e 3, questo permetterà al server Proxy di rimanere in ascolto sulla porta 514 sia UDP che TCP per la ricezione dei log, una volta completata la modifica del file basta che cliccate CTRL+X à Y à ENTER

Figura 9:Configurazione File Syslog

Ora non vi rimane che aprire sul firewall linux la porta 514 TCP/UPD:

sudo ufw allow 514/tcp

sudo ufw allow 514/udp

di fondamentale importante è riavviare il servizio Syslog dopo aver eseguito modifiche al file di configurazione, per farlo basta che eseguite questo comando: sudo service rsyslog restart

Ora siete pronti per configurare la macchina Linux che dovrà inviare i log al server proxy che avete appena ultimato di configurare.

Linux Client

Loggatevi in SSH alla macchina da configurare, in questo caso io ho utilizzato una sessione con Putty:

Figura 10:Sessione SSH Macchina Linux

Rsyslog di default è già installato all’interno di macchina Linux, per verificarlo basta che eseguite il comando visto in precedenza:

Figura 11: Servizio Syslog Linux

Se non dovesse essere presente procedete all’installazione con il seguente comando: sudo apt-get install rsyslog -y

In questo dovendo mandare i log ad un proxy non dovete eseguire l’installazione dell’agent, ma configurare il file syslog per farlo “puntare” al server proxy che si occuperà poi di inviare i log a Microsoft
Sentinel, aprite quindi in modalità di modifica il file di configurazione sudo nano /ect/rsyslog.conf a questo punto inserite questa stringa all’inizio del file *.* INDIRIZZOIPSERVERPROXY:514 , specifico che “*.*” serve per inviare qualsiasi log alla macchina proxy, ma in caso di necessità è possibile inserire solo determinate tipologia di log, in questo caso non è necessario rimuovere i commenti dalle parte evidenzata, in quanto dovrà inviare log e non riceverli:

Figura 12:Configurazione LInux per invio Log

Per eseguire il salvataggio del file vi ricordo i comandi: CTR+X à Y à ENTER

Ora come ultimo punto eseguite un riavvio del servizio Rsyslog: sudo service rsyslog restart

A questo punto recatevi all’interno del worksapce di Sentinel per vedere se effettivamente il SIEM stà ricevendo i log Microsoft Sentinel – Microsoft Azure

Figura 13: Microsoft Sentinel

Figura 14: Syslog Macchina Linux

Nell’eventualità che vogliate approfondire l’installazione dell’Agent lato Linux vi rimando alla documentazione ufficiale Microsoft Install Log Analytics agent on Linux computers – Azure Monitor | Microsoft Learn

Windows Gateway

Ora che avete inserito sotto monitoraggio dispositivi Linux, passiamo all’installazione del Gateway su una macchina Windows, nel mio caso SRVDC è una macchina con Windows Server 2022. Recatevi quindi nella sezione di Microsoft Sentinel, come avete già fatto in precedenza per la parte Linux, ma questa volta selezionate Windows Server:

Figura 15: Download Log Analytics Gateway

Eseguite il programma appena scaricato:

Figura 16: Installer Log Analytics Gateway

Figura 17:Installazione Log Analytics Gateway

Ora dovrete configurare una porta con cui il gateway rimanga in ascolto, nel mio caso ho scelto la 8080:

Figura 18: Installazione Gateway

Ora avrete terminato l’installazione, una volta ultimata procedete a scaricare l’Agent, sempre dal portale di Microsoft Sentinel, stessa schermata che avete usato per scaricare l’installare di OMS:

Figura 19: Installazione Windows Agent

Scaricate il programma ed eseguitelo, preferibile farlo tramite il Runas Administrator:

Figura 20: Installazione Windows Agent

Figura 21:Installazione Windows Agent

Figura 22:Installazione Windows Agent

Figura 23:Installazione Windows Agent

Figura 24:Installazione Windows Agent

Ora dovrete inserire WORKSPACE ID e CHIAVE PRIMARIA, recuperabili dalla pagina di Microsoft Sentinel dove avete scaricato l’agent e successivamente cliccare su “Avanzate”:

Figura 25:Installazione Windows Agent

Figura 26:Installazione Windows Agent

Quando avrete inserito Workspace ID e Primary Key e aver cliccato su Avanzate, vi permetterà se avete un proxy di navigazione di configurarlo:

Figura 27:Installazione Windows Agent

Per verificare che la configurazione del Gateway sia andata a buon fine aprite il pannello di controllo della macchina Gateway:

Figura 28:Installazione Windows Gateway

Ora dovrete eseguire I seguenti comandi PowerShell in modalità Runas administrator:

Add-OMSGatewayAllowedHost -Host global.handler.control.monitor.azure.com

Add-OMSGatewayAllowedHost -Host <gateway-server-region-name>.handler.control.monitor.azure.com

Add-OMSGatewayAllowedHost -Host <log-analytics-workspace-id>.ods.opinsights.azure.com

Per quanto riguarda GATEWAY-SERVER-REGIONE-NAME nel caso di westeurope inserirlo nel seguente modo westeurope.handler.control.monitor.azure.com

Per log-analytics-workspace-id copiarlo dalla console di Sentinel.

Riavviate il servizio Gateway:

Stop-Service -Name <gateway-name>

Start-Service -Name <gateway-name>

Per eventuali approfondimenti vi rimando al link Microsoft ufficiale Configurazione di Microsoft Monitoring Agent | Microsoft Learn

Microsoft Monitoring Agent (Lato Client)

Ora potete procedure alla configurazione dei dispositivi Windows che invieranno i log al gateway, l’installare è sempre Windows Agent, potete utilizzare anche quanto scaricato nel precedente passaggio, mi raccomando tenete sotto mano WORKSPACEID e CHIAVE PRIMARIA:

Figura 29: Installazione MMA Agent

Figura 30:Installazione MMA Agent

Figura 31:Installazione MMA Agent

Figura 32:Installazione MMA Agent

Figura 33:Installazione MMA Agent

Figura 34:Installazione MMA Agent

Figura 35:Installazione MMA Agent

Dopo aver selezionato “Avanzate” nel caso di macchine “Lato Client” e quindi che devono inviare i log al gateway dovrete inserire l’indirizzo IP del server Gateway (o fqdn) con relativa porta configurata che nel mio caso è la 8080:

Figura 36:Installazione MMA Agent

Specifico che in ogni caso la configurazione è modificale anche in un secondo momento dal pannello di controllo della macchina, ora cliccate su Next e terminate la configurazione, recandovi successivamente nel pannello di controllo:

Figura 37:Installazione MMA Agent

Figura 38:Proxy Server correttamente Configurato

Figura 39: Agent MMA Funzionante

A questo punto la macchina che avete configurato sta correttamente inviando i propri log al Gateway che si occuperà di inviarli a Microsoft Sentinel, come fatto per Linux, andate a verificare ora sul portale di Sentinel con la KQL che effettivamente i log compaiano:

Figura 40: Visualizzazione Log Windows

La query può essere strutturata in questo modo: union Event | where Computer contains “VM365” sostituito VM365 con il nome macchina che avete scelto del vostro server/computer:

Figura 41: Visualizzazione Eventi Windows

Ora che avete collezionato i log da varie fonti come fate a fare ad effettuare delle ricerche su di essi ?

Microsoft Sentinel utilizza un linguaggio chiamato KQL (Kusto Query) che vi permette di eseguire delle ricerche all’interno dei dati che ora risiedono all’interno del SIEM Microsoft, a tal proposito vi lascio il link ufficiale Microsoft dove potete approfondire il linguaggio appena descritto Linguaggio di query Kusto in Microsoft Sentinel | Microsoft Learn.

Per eseguire KQL dovrete recarvi all’interno del worksapce di Sentinel che abbiamo visto insieme all’inizio di questo articolo.

Figure 42: Creazione KQL

Avete a disposizione anche Github dove la community mette a disposizione delle KQL già compilate e divise per categorie di Servizio Microsoft 365 GitHub – reprise99/Sentinel-Queries: Collection of KQL queries, il linguaggio di Sentinel, è per voi di fondamentale importanza perché vi permette di avere export puntuali per esempio sulle Login Fallite da un determinato indirizzo IP. Vorrei in questo articolo anche spiegarvi la struttura di questo linguaggio e darvi dimostrazione di una KQL per eseguire la ricerca delle login effettuate 3 giorni fa dal mio account di Microsoft 365.

Figure 43: Esempio KQL

Come potete notare la prima parte “SigninLogs” è la tabella di Microsoft Sentinel in cui eseguire la ricerca, nel mio caso cercando le Login di Azure Active Directory ho selezionato questa tabella, vi riporto per completezza di informazioni la lista della tabelle disponibili Microsoft Sentinel data source schema reference | Microsoft Learn

Nella seconda riga andate a selezionare l’arco temporale della ricerca nel mio caso “where TimeGenerated > ago(14d)” ovvero ricerco i log degli ultimi 14 giorni.

Nella terza riga invece con il comando “where UserPrincipalName == [email protected] specificate alla query di trovare i registri in cui lo username che ha effettuato l’accesso è uguale a [email protected], specifico che dovete sostituire dominio.com con il dominio corretto da ricercare.

Nella quarta riga con il comando “where ResultType == 0” ricercate solo ed esclusivamente le login in stato di Success di quello specifico utente.

Nell’ultima riga invece con il comando “project TimeGenerated, Location, IPAddress, UserAgent” andate a selezionare solo determinati parametri che volete avere nel risultato, nel mio caso in sequenza: Ora/Data di generazione del log, Stato (Nazione), IP Address e User Agent.

Naturalmente questa è una KQL molto semplice per darvi evidenza della struttura di questo linguaggio, ma sono estremamente personalizzabili in base alla ricerca che dovete effettuare, proprio per questo all’inizio di questo paragrafo vi ho dato evidenza del repository github.

E se volete generare un incident e avere via mail la segnalazione ?

Microsoft Sentinel mette a disposizione la possibilità, in base alla KQL che andrete a scrivere di generare un Alert o un Incident e di conseguenza tramite una Logic App di Azure generare una mail ai destinatari che avrete scelto.

Nel mio caso, per darvi evidenza di questa possibilità, andrò a creare una KQL che mi cercherà l’evento di Login Failed, tramite Syslog di una delle mie macchine Linux.

Per procedere con questa configurazione dovrete recarvi, come per il punto precedente, all’interno del Microsoft Sentinel per eseguire la KQL che vi permette di estrapolare appunto i login Failed delle Macchine Linux, lascio per vostra comodità la query utilizzata:

Syslog

| where SyslogMessage startswith “Failed Password”

| order by EventTime desc

Come prima cosa dovrete procedere a creare un Playbook, che vi permetterà di inviare la mail tramite logic app quando verrà creato l’incident:

Figura 42: Creazione Logic App

Figura 43: Creazione Logic App

Figura 44: Creazione Logic App

Figura 45: Creazione Logic App

Figura 46: Creazione Logic App

Figura 47: Creazione Logic App

Figura 48: Creazione WorkFlows

Figura 49: Creazione Flusso

Eseguite il login all’interno del flusso con l’account che deve inviare la mail:

Figura 50: Creazione Flusso

Create ora il template della email in base ai placeholder che volete inserire nel corpo della stessa, io per esempio nell’oggetto ho voluto inserire il titolo dell’incident, nel corpo la “severity” e l’url dell’incident:

Figura 51: Creazione Email Template

Figura 52: Salvataggio Flusso

Figura 53: KQL Microsoft Sentinel

Ora date un nome alla Rule Analytics una “severità” e procedete al next step:

Figura 54: Rule Analytics

Figura 55: KQL in Rule Analytics

Figura 56: Rule Analytics

Figura 57: Automated Response

Figura 58: Automated Response

Figura 59: Automated Response

Figura 60: Automated Response

Vi lascio anche l’esempio della e-mail ricevuta quando viene generato l’incident, che contiene le informazioni che avrete selezionato:

Figura 61: Esempio Email

Conclusioni

Come avete potuto notare, questa configurazione è veramente semplice e intuitiva; in questo modo potete estendere la vita dei log presenti all’interno dei vostri sistemi, conservandoli al di fuori della vostra organizzazione e rispettando i maggiori standard di sicurezza disponibili sul mercato.

Lo scopo di Microsoft è quello di mettere a disposizione degli strumenti al reparto IT che consentano in modo semplice di configurare i servizi e questa attività ne è la prova; vero è che una volta che Microsoft Sentinel ha ricevuto i log, poi è possibile configurare della automazioni con le Logic App di Azure per inviare mail quando viene scatenato un determinato evento come avete visto in questo articolo.

L’implementazione di queste automazione è veramente semplice e permette di avere in tempo reale una notifica che potrebbe aiutarvi nell’identificare una determinata vulnerabilità o una compromissione dei vostri sistemi che magari è in atto.

Il fatto di avere delle automazioni, permette di “risparmiare” tempo e bloccare dei tentativi di accesso non autorizzati in tempo reale diminuendo il tempo di analisi e rendendo il vostro ambiente e la vostra infrastruttura ancora più sicura.