Condividi tramite


[Deprecato] Risolvere i problemi del connettore dati CEF o Syslog

Importante

La raccolta di log da molti dispositivi e appliance è ora supportata da Common Event Format (CEF) tramite AMA, syslog tramite AMA o log personalizzati tramite il connettore dati AMA in Microsoft Sentinel. Per altre informazioni, vedere Trovare il connettore dati di Microsoft Sentinel.

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del servizio). Valutare le proprie esigenze e pianificare di conseguenza. Per ulteriori informazioni, consultare la Guida alla fine del ciclo di vita di CentOS.

Questo articolo descrive i metodi comuni di verifica e risoluzione dei problemi di un connettore dati CEF o Syslog per Microsoft Sentinel.

Ad esempio, se i messaggi di log non vengono visualizzati nelle tabelle Syslog o CommonSecurityLog, l'origine dati potrebbe non connettersi correttamente. Potrebbe esserci anche un altro motivo per cui i dati non vengono ricevuti.

Altri sintomi di una distribuzione del connettore non riuscita sono la mancanza dei file security_events.conf o security-omsagent.config.conf o la mancanza del server rsyslog in ascolto sulla porta 514.

Per altre informazioni, vedere Connettere la soluzione esterna usando Common Event Format e Raccogliere dati da origini basate su Linux usando Syslog.

Se il connettore è stato distribuito con un metodo diverso dalla procedura documentata e si riscontrano problemi, è consigliabile eliminare la distribuzione e ricominciare, questa volta seguendo le istruzioni documentate.

Questo articolo illustra come risolvere i problemi relativi ai connettori CEF o Syslog con l'agente di Log Analytics. Per informazioni sulla risoluzione dei problemi relativi all'inserimento di log CEF tramite l'agente di Monitoraggio di Azure, vedere le istruzioni del connettore Common Event Format (CEF) tramite AMA.

Importante

Il 28 febbraio 2023 sono state introdotte modifiche allo schema della tabella CommonSecurityLog. Dopo questa modifica, potrebbe essere necessario esaminare e aggiornare query personalizzate. Per altri dettagli, vedere la sezione azioni consigliate in questo post di blog. Il contenuto di ottimizzazione predefinita (rilevamenti, query di ricerca, cartelle di lavoro, parser e così via) è stato aggiornato da Microsoft Sentinel.

Come usare questo articolo

Quando le informazioni contenute in questo articolo sono rilevanti solo per Syslog o solo per i connettori CEF, vengono presentate in schede separate. Assicurarsi di usare le istruzioni nella scheda corretta per il tipo di connettore.

Ad esempio, per la risoluzione dei problemi di un connettore CEF, iniziare con Convalidare la connettività CEF. Se si sta risolvendo un problema con un connettore Syslog, iniziare con Verifica i prerequisiti del connettore dati.

Convalidare la connettività CEF

Dopo aver distribuito il server d'inoltro dei log e configurato la soluzione di sicurezza per inviare messaggi CEF, seguire questa sezione per verificare la connettività tra la soluzione di sicurezza e Microsoft Sentinel.

Questa procedura è rilevante solo per le connessioni CEF e non è rilevante per le connessioni Syslog.

  1. Assicurarsi di disporre dei seguenti prerequisiti:

    • È necessario disporre di autorizzazioni elevate (sudo) nel computer del server d'inoltro dei log.

    • Nel computer del server d'inoltro dei log deve essere installato python 2.7 o 3. Usare il comando python --version per verificarlo.

    • In questo processo potrebbero essere necessari l'ID area di lavoro e la chiave primaria dell'area di lavoro. È possibile trovarli nella risorsa dell'area di lavoro, in Gestione agenti.

  2. Dal menu di spostamento di Microsoft Sentinel aprire Log. Eseguire una query usando lo schema CommonSecurityLog per verificare se si ricevono log dalla soluzione di sicurezza.

    Potrebbero essere necessari circa 20 minuti finché i log non vengono visualizzati in Log Analytics.

  3. Se non vengono visualizzati risultati dalla query, verificare che la soluzione di sicurezza generi messaggi di log. In alternativa, provare a eseguire alcune azioni per generare messaggi di log e verificare che i messaggi vengano inoltrati al computer del server d'inoltro Syslog designato.

  4. Per verificare la connettività tra la soluzione di sicurezza, il server d'inoltro dei log e Microsoft Sentinel, eseguire lo script seguente nel server d'inoltro dei log (applicando l'ID dell'area di lavoro al posto del segnaposto). Questo script verifica che il daemon sia in ascolto sulle porte corrette, che l'inoltro sia configurato correttamente e che nulla blocchi la comunicazione tra il daemon e l'agente di Log Analytics. Invia anche messaggi fittizi "TestCommonEventFormat" per controllare la connettività end-to-end.

    sudo wget -O cef_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_troubleshoot.py&&sudo python cef_troubleshoot.py [WorkspaceID]
    
    • È possibile che venga visualizzato un messaggio che indica di eseguire un comando per correggere un problema relativo al mapping del campo Computer. Per informazioni dettagliate, vedere la spiegazione nello script di convalida.

    • È possibile che venga visualizzato un messaggio che indica di eseguire un comando per risolvere un problema relativo all’analisi dei log del firewall Cisco ASA. Per informazioni dettagliate, vedere la spiegazione nello script di convalida.

Spiegazione dello script di convalida CEF

La sezione seguente descrive lo script di convalida CEF per il rsyslog daemon e il syslog-ng daemon.

daemon rsyslog

Per un daemon rsyslog, lo script di convalida CEF esegue i controlli seguenti:

  1. Verifica che il file
    /etc/opt/microsoft/omsagent/[WorkspaceID]/conf/omsagent.d/security_events.conf
    esiste ed è valido.

  2. Controlla che nel file sia presente il seguente testo:

    <source>
        type syslog
        port 25226
        bind 127.0.0.1
        protocol_type tcp
        tag oms.security
        format /(?<time>(?:\w+ +){2,3}(?:\d+:){2}\d+|\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.[\w\-\:\+]{3,12}):?\s*(?:(?<host>[^: ]+) ?:?)?\s*(?<ident>.*CEF.+?(?=0\|)|%ASA[0-9\-]{8,10})\s*:?(?<message>0\|.*|.*)/
        <parse>
            message_format auto
        </parse>
    </source>
    
    <filter oms.security.**>
        type filter_syslog_security
    </filter>
    
  3. Verifica che l'analisi degli eventi di Cisco ASA Firewall sia configurata come previsto, usando il comando seguente:

    grep -i "return ident if ident.include?('%ASA')" /opt/microsoft/omsagent/plugin/security_lib.rb
    
    • Se si verifica un problema con l’analisi, lo script genera un messaggio di errore che indica di eseguire manualmente il comando seguente (applicando l'ID area di lavoro in sostituzione del segnaposto). Il comando garantisce l'analisi corretta e riavvia l'agente.

      # Cisco ASA parsing fix
      sed -i "s|return '%ASA' if ident.include?('%ASA')|return ident if ident.include?('%ASA')|g" /opt/microsoft/omsagent/plugin/security_lib.rb && sudo /opt/microsoft/omsagent/bin/service_control restart [workspaceID]
      
  4. Verifica che il campo Computer nell'origine di syslog sia associato correttamente nell'agente di Log Analytics usando il comando seguente:

    grep -i "'Host' => record\['host'\]"  /opt/microsoft/omsagent/plugin/filter_syslog_security.rb
    
    • Se si verifica un problema con il mapping, lo script genera un messaggio di errore che indica di eseguire manualmente il comando seguente (applicando l'ID area di lavoro in sostituzione del segnaposto). Il comando garantisce il mapping corretto e riavvia l'agente.

      # Computer field mapping fix
      sed -i -e "/'Severity' => tags\[tags.size - 1\]/ a \ \t 'Host' => record['host']" -e "s/'Severity' => tags\[tags.size - 1\]/&,/" /opt/microsoft/omsagent/plugin/filter_syslog_security.rb && sudo /opt/microsoft/omsagent/bin/service_control restart [workspaceID]
      
  5. Controlla se sono presenti miglioramenti della sicurezza nel computer che potrebbero bloccare il traffico di rete, ad esempio un firewall host.

  6. Verifica che il daemon syslog (rsyslog) sia configurato correttamente per inviare messaggi (che identifica come CEF) all'agente di Log Analytics sulla porta TCP 25226:

    File di configurazione: /etc/rsyslog.d/security-config-omsagent.conf

    if $rawmsg contains "CEF:" or $rawmsg contains "ASA-" then @@127.0.0.1:25226
    
  7. Riavvia il daemon syslog e l'agente di Log Analytics:

    service rsyslog restart
    
    /opt/microsoft/omsagent/bin/service_control restart [workspaceID]
    
  8. Verifica che vengano stabilite le connessioni necessarie: tcp 514 per la ricezione di dati, tcp 25226 per la comunicazione interna tra il daemon syslog e l'agente di Log Analytics:

    netstat -an | grep 514
    
    netstat -an | grep 25226
    
  9. Verifica che il daemon syslog riceva dati sulla porta 514 e che l'agente riceva dati sulla porta 25226:

    sudo tcpdump -A -ni any port 514 -vv
    
    sudo tcpdump -A -ni any port 25226 -vv
    
  10. Invia dati MOCK alla porta 514 dell'host locale. Questi dati devono essere osservabili nell'area di lavoro di Microsoft Sentinel eseguendo la query seguente:

    CommonSecurityLog
    | where DeviceProduct == "MOCK"
    

daemon syslog-ng

Per un daemon syslog-ng, lo script di convalida CEF esegue i controlli seguenti:

  1. Verifica che il file
    /etc/opt/microsoft/omsagent/[WorkspaceID]/conf/omsagent.d/security_events.conf
    esiste ed è valido.

  2. Controlla che nel file sia presente il seguente testo:

    <source>
        type syslog
        port 25226
        bind 127.0.0.1
        protocol_type tcp
        tag oms.security
        format /(?<time>(?:\w+ +){2,3}(?:\d+:){2}\d+|\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.[\w\-\:\+]{3,12}):?\s*(?:(?<host>[^: ]+) ?:?)?\s*(?<ident>.*CEF.+?(?=0\|)|%ASA[0-9\-]{8,10})\s*:?(?<message>0\|.*|.*)/
        <parse>
            message_format auto
        </parse>
    </source>
    
    <filter oms.security.**>
        type filter_syslog_security
    </filter>
    
  3. Verifica che l'analisi degli eventi di Cisco ASA Firewall sia configurata come previsto, usando il comando seguente:

    grep -i "return ident if ident.include?('%ASA')" /opt/microsoft/omsagent/plugin/security_lib.rb
    
    • Se si verifica un problema con l’analisi, lo script genera un messaggio di errore che indica di eseguire manualmente il comando seguente (applicando l'ID area di lavoro in sostituzione del segnaposto). Il comando garantisce l'analisi corretta e riavvia l'agente.

      # Cisco ASA parsing fix
      sed -i "s|return '%ASA' if ident.include?('%ASA')|return ident if ident.include?('%ASA')|g" /opt/microsoft/omsagent/plugin/security_lib.rb && sudo /opt/microsoft/omsagent/bin/service_control restart [workspaceID]
      
  4. Verifica che il campo Computer nell'origine di syslog sia associato correttamente nell'agente di Log Analytics usando il comando seguente:

    grep -i "'Host' => record\['host'\]"  /opt/microsoft/omsagent/plugin/filter_syslog_security.rb
    
    • Se si verifica un problema con il mapping, lo script genera un messaggio di errore che indica di eseguire manualmente il comando seguente (applicando l'ID area di lavoro in sostituzione del segnaposto). Il comando garantisce il mapping corretto e riavvia l'agente.

      # Computer field mapping fix
      sed -i -e "/'Severity' => tags\[tags.size - 1\]/ a \ \t 'Host' => record['host']" -e "s/'Severity' => tags\[tags.size - 1\]/&,/" /opt/microsoft/omsagent/plugin/filter_syslog_security.rb && sudo /opt/microsoft/omsagent/bin/service_control restart [workspaceID]
      
  5. Controlla se sono presenti miglioramenti della sicurezza nel computer che potrebbero bloccare il traffico di rete, ad esempio un firewall host.

  6. Verifica che il daemon syslog (syslog-ng) sia configurato correttamente per inviare messaggi che identifica come CEF (usando un'espressione regolare) all'agente di Log Analytics sulla porta TCP 25226:

    • File di configurazione: /etc/syslog-ng/conf.d/security-config-omsagent.conf

      filter f_oms_filter {match(\"CEF\|ASA\" ) ;};destination oms_destination {tcp(\"127.0.0.1\" port(25226));};
      log {source(s_src);filter(f_oms_filter);destination(oms_destination);};
      
  7. Riavvia il daemon syslog e l'agente di Log Analytics:

    service syslog-ng restart
    
    /opt/microsoft/omsagent/bin/service_control restart [workspaceID]
    
  8. Verifica che vengano stabilite le connessioni necessarie: tcp 514 per la ricezione di dati, tcp 25226 per la comunicazione interna tra il daemon syslog e l'agente di Log Analytics:

    netstat -an | grep 514
    
    netstat -an | grep 25226
    
  9. Verifica che il daemon syslog riceva dati sulla porta 514 e che l'agente riceva dati sulla porta 25226:

    sudo tcpdump -A -ni any port 514 -vv
    
    sudo tcpdump -A -ni any port 25226 -vv
    
  10. Invia dati MOCK alla porta 514 dell'host locale. Questi dati devono essere osservabili nell'area di lavoro di Microsoft Sentinel eseguendo la query seguente:

    CommonSecurityLog
    | where DeviceProduct == "MOCK"
    

Verificare i prerequisiti del connettore dati

Usare le sezioni seguenti per verificare i prerequisiti del connettore dati CEF o Syslog.

Macchina virtuale di Azure come agente di raccolta CEF

Se si usa una macchina virtuale di Azure come agente di raccolta CEF, verificare quanto segue:

  • Prima di distribuire lo Script Python di Common Event Format Data Connector, assicurarsi che la macchina virtuale non sia già connessa a un'area di lavoro Log Analytics esistente. È possibile trovare queste informazioni nell'elenco delle macchine virtuali dell'area di lavoro Log Analytics, in cui una macchina virtuale connessa a un'area di lavoro Syslog è elencata come Connessa.

  • Assicurarsi che Microsoft Sentinel sia connesso all'area di lavoro Log Analytics corretta, con la soluzione SecurityInsights installata.

    Per altre informazioni, vedere Passaggio 1: Distribuire il server d'inoltro dei log.

  • Assicurarsi che il computer sia dimensionato correttamente con almeno i prerequisiti minimi necessari. Per altre informazioni, vedere la sezione Prerequisiti CEF.

In locale o in una macchina virtuale non Azure

Se si usa un computer locale o una macchina virtuale non Azure per il connettore dati, assicurarsi di aver eseguito lo script di installazione in una nuova installazione di un sistema operativo Linux supportato:

Suggerimento

Questo script è disponibile anche nella pagina del connettore dati Common Event Format di Microsoft Sentinel.

sudo wget -O cef_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/CEF/cef_installer.py&&sudo python cef_installer.py <WorkspaceId> <Primary Key>

Abilitare la struttura CEF e la raccolta di gravità del log

Il server Syslog, rsyslog o syslog-ng, inoltra tutti i dati definiti nel file di configurazione pertinente, popolati automaticamente dalle impostazioni definite nell'area di lavoro Log Analytics.

Assicurarsi di aggiungere dettagli sulle funzionalità e sui livelli di log di gravità da inserire in Microsoft Sentinel. Il processo di configurazione può richiedere circa 20 minuti.

Per altre informazioni, vedere Script di distribuzione illustrato.

Ad esempio, per un server rsyslog, eseguire il comando seguente per visualizzare le impostazioni correnti per l'inoltro Syslog ed esaminare le modifiche apportate al file di configurazione:

cat /etc/rsyslog.d/security-config-omsagent.conf

In questo caso, per rsyslog, l'output simile al seguente dovrebbe essere visualizzato:

if $rawmsg contains "CEF:" or $rawmsg contains "ASA-" then @@127.0.0.1:25226

Risolvere i problemi relativi al sistema operativo

Questa sezione descrive come risolvere i problemi che sono certamente derivati dalla configurazione del sistema operativo.

Per risolvere i problemi relativi al sistema operativo:

  1. Se non l'avete ancora fatto, verificate di lavorare con un sistema operativo e una versione di Python supportati. Per altre informazioni, vedere la sezione Prerequisiti CEF.

  2. Se la macchina virtuale si trova in Azure, verificare che il gruppo di sicurezza di rete (NSG) consenta la connettività TCP/UDP in ingresso dal client di log (mittente) sulla porta 514.

  3. Verificare che i pacchetti arrivino all'agente di raccolta Syslog. Per acquisire i pacchetti syslog in arrivo all'agente di raccolta Syslog, eseguire:

    tcpdump -Ani any port 514 and host <ip_address_of_sender> -vv
    
  4. Esegui una delle operazioni seguenti:

    • Se non vengono visualizzati pacchetti in arrivo, verificare le autorizzazioni del gruppo di sicurezza NSG e il percorso di routing dell'agente di raccolta Syslog.

    • Se vengono visualizzati pacchetti in arrivo, verificare che non vengano rifiutati.

    Se vengono visualizzati pacchetti rifiutati, verificare che le tabelle IP non blocchino le connessioni.

    Per verificare che i pacchetti non vengano rifiutati, eseguire:

    watch -n 2 -d iptables -nvL
    
  5. Verificare se il server CEF sta elaborando i log. Eseguire:

    tail -f /var/log/messages or tail -f /var/log/syslog
    

    Tutti i log CEF elaborati vengono visualizzati in testo normale.

  6. Verificare che il server rsyslog sia in ascolto sulla porta TCP/UDP 514. Eseguire:

    netstat -anp | grep syslog
    

    Se sono presenti log CEF o ASA inviati all'agente di raccolta Syslog, dovrebbe essere visualizzata una connessione stabilita sulla porta TCP 25226.

    Ad esempio:

    0 127.0.0.1:36120 127.0.0.1:25226 ESTABLISHED 1055/rsyslogd
    

    Se la connessione è bloccata, potrebbe essere presente una connessione SELinux bloccata all'agente OMS oppure un processo firewall bloccato. Usare le istruzioni pertinenti per determinare il problema.

SELinux blocca la connessione all'agente OMS

Questa procedura descrive come verificare se SELinux è attualmente in uno stato permissive o blocca una connessione all'agente OMS. Questa procedura è rilevante quando il sistema operativo è una distribuzione da RedHat o CentOS e per entrambi i connettori di dati CEF e Syslog.

Nota

Il supporto di Microsoft Sentinel per CEF e Syslog include solo la protezione avanzata FIPS. Altri metodi di protezione avanzata, ad esempio SELinux o CIS, non sono attualmente supportati.

  1. Eseguire:

    sestatus
    

    Lo stato viene visualizzato come uno dei seguenti:

    • disabled. Questa configurazione è supportata per la connessione a Microsoft Sentinel.
    • permissive. Questa configurazione è supportata per la connessione a Microsoft Sentinel.
    • enforced. Questa configurazione non è supportata ed è necessario disabilitare lo stato o impostarlo su permissive.
  2. Se lo stato è attualmente impostato su enforced, disattivarlo temporaneamente per verificare se si tratta del blocco. Eseguire:

    setenforce 0
    

    Nota

    Questo passaggio disattiva SELinux solo fino al riavvio del server. Modificare la configurazione SELinux per mantenerla disattivata.

  3. Per verificare se la modifica è riuscita, eseguire:

    getenforce
    

    Lo stato permissive deve essere restituito.

Importante

Questo aggiornamento delle impostazioni viene perso quando il sistema viene riavviato. Per aggiornare in modo permanente questa impostazione su permissive, modificare il file /etc/selinux/config, modificando il valore SELINUX in SELINUX=permissive.

Per altre informazioni, vedere la documentazione RedHat.

Criteri firewall bloccati

Questa procedura descrive come verificare se i criteri del firewall bloccano la connessione dal daemon Rsyslog all'agente OMS e come disabilitarlo in base alle esigenze. Questa procedura riguarda sia i connettori dati CEF che quelli Syslog.

  1. Eseguire il comando seguente per verificare se sono presenti rifiuti nelle tabelle IP, che indicano il traffico che viene eliminato dal criterio del firewall:

    watch -n 2 -d iptables -nvL
    
  2. Per mantenere abilitati i criteri firewall, creare una regola dei criteri per consentire le connessioni. Aggiungere regole in base alle esigenze per consentire le porte TCP/UDP 25226 e 25224 tramite il firewall attivo.

    Ad esempio:

    Every 2.0s: iptables -nvL                      rsyslog: Wed Jul  7 15:56:13 2021
    
    Chain INPUT (policy ACCEPT 6185K packets, 2466M bytes)
     pkts bytes target     prot opt in     out     source               destination
    
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
    
    
    Chain OUTPUT (policy ACCEPT 6792K packets, 6348M bytes)
     pkts bytes target     prot opt in     out     source               destination
    
  3. Per creare una regola per consentire alle porte TCP/UDP 25226 e 25224 di passare tramite il firewall attivo.

    1. Per installare l'editor del criterio firewall, eseguire:

      yum install policycoreutils-python
      
    2. Aggiungere le regole del firewall ai criteri del firewall. Ad esempio:

      sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 25226  -j ACCEPT
      sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p udp --dport 25224  -j ACCEPT
      sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 25224  -j ACCEPT
      
    3. Verificare che l'eccezione sia stata aggiunta. Eseguire:

      sudo firewall-cmd --direct --get-rules ipv4 filter INPUT
      
    4. Ricaricare il firewall. Eseguire:

      sudo firewall-cmd --reload
      

Nota

Per disabilitare il firewall, eseguire: sudo systemctl disable firewalld

Se i passaggi descritti in precedenza in questo articolo non risolvono il problema, potrebbe verificarsi un problema di connettività tra l'agente OMS e l'area di lavoro di Microsoft Sentinel.

In questi casi, continuare la risoluzione dei problemi verificando quanto segue:

  • Assicurarsi di visualizzare i pacchetti in arrivo sulla porta TCP/UDP 514 nell'agente di raccolta Syslog

  • Assicurarsi di visualizzare i log scritti nel file di log locale, /var/log/messages o /var/log/syslog

  • Assicurarsi di visualizzare i pacchetti di dati in flusso sulla porta 25226

  • Assicurarsi che la macchina virtuale disponga di una connessione in uscita alla porta 443 tramite TCP oppure di connettersi agli endpoint di Log Analytics

  • Assicurarsi di avere accesso agli URL necessari dall'agente di raccolta CEF tramite i criteri del firewall. Per altre informazioni, vedere Requisiti del firewall dell'agente di Log Analytics.

Eseguire il comando seguente per determinare se l'agente comunica correttamente con Azure o se l'agente OMS non è connesso all'area di lavoro Log Analytics.

Heartbeat
 | where Computer contains "<computername>"
 | sort by TimeGenerated desc

Se l'agente comunica correttamente, viene restituita una voce di log. In caso contrario, l'agente OMS potrebbe essere bloccato.