Visualizzazione degli oggetti del log di flusso

Un registro di flusso è un riepilogo del traffico di rete identificato in modo univoco da una connessione tra due schede di interfaccia di rete virtuali ( vNICs ), entro un determinato intervallo di tempo. Un log di flusso descrive il traffico che il firewall accetta (gruppi di sicurezza rilevanti o ACL di rete) o rifiuta, ma non entrambi. Contiene informazioni sull'intestazione e statistiche sul carico utile.

I log di flusso vengono periodicamente scritti in IBM Cloud® Object Storage ogni 5 minuti. I log di flusso vengono pubblicati più frequentemente nei casi in cui il raccoglitore di log di flusso raggiunge i flussi di 100 KB.

Attualmente, i log di flusso raccolgono il traffico TCP ( Transmission Control Protocol ) e UDP ( User Datagram Protocol ), ma non il traffico ICMP ( Internet Control Message Protocol ).

Ogni oggetto log di flusso contiene singoli log di flusso. Per visualizzare o analizzare i registri di flusso, utilizzare IBM Analytics Engine. Per ulteriori informazioni, consultare l'esercitazione introduttiva di IBM Analytics Engine.

IBM Cloud Data Engine è deprezzato e non è più supportato. Se attualmente utilizzi istanze esistenti di Data Engine, ti consigliamo di migrare i tuoi carichi di lavoro su IBM Analytics Engine.

Formato dati del log di flusso

I riepiloghi del traffico del log di flusso contengono quanto segue:

  • Conteggi byte / pacchetti, separatamente per RX (ricezione) e TX (trasmissione).
  • Indica se una connessione viene avviata o arrestata nella finestra temporale.

Poiché un log di flusso riflette il traffico di rete in un periodo di tempo limitato, una connessione di lunga durata potrebbe causare l'emissione di più log di flusso. Per ogni connessione elaborata da a vNIC, viene emessa una sequenza ordinata nel tempo di log di flusso (esclusi gli errori). Questi log di flusso vengono visualizzati in uno o più oggetti Object Storage.

Il initiator_ip in un log di flusso è definito come il source_ip che appare nel primo pacchetto della sua connessione che ha raggiunto il vNIC. Al livello di implementazione, questo pacchetto è di solito quello che causa l'aggiunta della nuova connessione alla tabella di connessione. Allo stesso modo, il target_ip nel registro di flusso è impostato sul campo dest_ip nello stesso pacchetto.

Se sia l'iniziatore della connessione vNIC che la destinazione della connessione vNIC abilitano i log di flusso, i campi IP e porte dell'iniziatore e della destinazione sono identici nei log di flusso su entrambi vNICs.

Esempio: si consideri un client che invia una richiesta HTTP a un server web. Il log di flusso per questa richiesta HTTP sul lato client vNIC riporta l'indirizzo IP del client come initiator_ip. Il log di flusso corrispondente sul lato server vNIC ha lo stesso initiator_ip.

Le start_time e end_time in un log di flusso riflettono:

  • Tempo di cattura - L'ora in cui gli elementi del percorso dati sono stati interrogati per i contatori del traffico.
  • Data path time - L'ora come viene conservata nell'elemento del percorso dati stesso.

È possibile che il log di flusso non rifletta tutto il traffico (ad esempio, nel percorso dati) tra un log di flusso start_time e end_time. In altre parole, è possibile che i pacchetti inviati e ricevuti da vNIC verso la fine della finestra di cattura si riflettano solo in un log di flusso con la finestra start_time successiva.

I log di flusso riflettono il traffico effettivo sulle connessioni: se non si verifica traffico su una connessione in una finestra di acquisizione, non viene visualizzato alcun log di flusso nell'oggetto " Object Storage " (Log di flusso) per quella finestra. Ciò significa che la sequenza dei log di flusso per una connessione potrebbe essere mappata su una sequenza di oggetti non consecutivi dell' Object Storage.

L'array dei log di flusso all'interno di un oggetto non deve essere ordinato in un ordine specifico.

Traffico rifiutato:

  • Uno specifico log di flusso riepiloga il traffico rifiutato o accettato, mai entrambi.
  • La sequenza dei log di flusso per una connessione potrebbe avere delle sovrapposizioni nella finestra temporale tra i log di flusso accettati e rifiutati.
  • I pacchetti rifiutati non associati a una connessione esistente (ad esempio, un gruppo di sicurezza o un ACL di rete, negano l'avvio della connessione).
  • Pacchetti rifiutati su una connessione esistente (ad esempio, traffico che non corrisponde alla state - machine TCP o una regola ACL di rete modificata a metà connessione).
  • I pacchetti rifiutati vengono scritti in log di flusso separati in base al fatto che siano in entrata o in uscita.

I flussi vengono contrassegnati come rifiutati se i loro pacchetti sono stati bloccati dal gruppo di sicurezza o dalle regole ACL di rete.

Formato oggetto log di flusso

I log di flusso vengono scritti nel bucket Object Storage specificato dall'utente nella seguente convenzione di denominazione:

ibm_vpc_flowlogs_v1/account={account}/region={region}/vpc-id={vpc-id}/subnet-id={subnet-id}/endpoint-type=vnics/instance-id={vsi-id}/vnic-id={vnic-id}/record-type={all|ingress|egress}/year={xxxx}/month={yy}/day={zz}/hour={hh}/stream-id={stream-id}/{sequence-number}.gz

Dove:

  • {stream-id} è una stringa di data e ora in formato ISO 8601 yyyymmddThhmmssZ (Coordinated Universal Time), definita come l'ora in cui è stato creato il primo oggetto in directory.
  • {sequence-number} è un contatore di oggetti in esecuzione all'interno del flusso, rappresentato come un campo di otto caratteri riempiti di zero (%08d).
  • {all|ingress|egress} mostra il tipo di traffico incluso nel flusso.
  • {xxxx} è l'anno in formato a quattro cifre.
  • {yy} è il mese in formato a due cifre, con inizio zero.
  • {zz} è il giorno del mese in formato a due cifre, con inizio zero.
  • {hh} è l'ora in formato iniziale zero (ad esempio, 00-24).

Qualsiasi occorrenza di caratteri non sicuri URL nel percorso viene codificata in URL.

L'oggetto Object Storage di un log di flusso contiene un singolo oggetto JSON valido. L'oggetto Object Storage è .gz compresso.

I campi di intestazione oggetto specificati nella seguente tabella vengono scritti nei metadati dell'oggetto Object Storage.

Campi intestazione oggetto log di flusso (per oggetto Object Storage)

Campi di intestazione degli oggetti Flow Logs (per oggetto Object Storage )
Campo Immettere Descrizione
version stringa La versione semantica.
collector_crn stringa Il CRN (Cloud Resource Name) del raccoglitore di log di flusso.
attached_endpoint_type stringa Attualmente, l'unico valore è vnic.
network_interface_id stringa L'ID vnic, poiché non ha un CRN vNIC.
instance_crn stringa Il CRN dell'istanza a cui è collegata l'interfaccia di rete.
vpc_crn stringa Il CRN del VPC di cui è membro il raccoglitore del log di flusso.
capture_start_time stringa Data e ora RFC 3339 (Coordinated Universal Time)
capture_end_time stringa Data e ora RFC 3339 (Coordinated Universal Time)
state stringa Indica lo stato operativo del raccoglitore log di flusso. OK significa che i dati vengono raccolti e spediti senza errori. skip data indica che i dati sono stati persi durante questo intervallo di raccolta (ad esempio, a causa dell'alta frequenza di pacchetti SYN rifiutati).
number_of_flow_logs uin32 Il numero di elementi in un flow_logs array. Poiché questo numero è altamente variabile, è utile come rapido riferimento del numero di log di flusso contenuti in un singolo oggetto Object Storage, senza dover prima scaricare l'oggetto.
flow_logs array di oggetti JSON Può essere un array vuoto, che indica no traffic.

Campi del log di flusso

Campi del registro di flusso
Campo Immettere Descrizione
start_time stringa Quando il primo byte in un log di flusso è stato catturato e visualizzato nel percorso dati (RFC 3339 Data e ora - Coordinated Universal Time).
end_time stringa Quando l'ultimo byte in un log di flusso è stato catturato e visualizzato nel percorso dati (Data e ora RFC 3339 - Coordinated Universal Time).
connection_start_time stringa Quando il primo byte in una connessione del log di flusso è stato catturato e visualizzato nel percorso dati (RFC 3339 Date and Time - Coordinated Universal Time).
direction stringa I valori sono I per in entrata o O per in uscita. Se il primo pacchetto sulla connessione era ricevuto dal vNIC, la direzione è I. Se il primo pacchetto fosse inviato dal vNIC, la direzione è O.
action stringa I valori sono accepted (il traffico riepilogato da questo flusso è stato accettato) o rejected (il traffico è stato rifiutato).
initiator_ip stringa (indirizzoIPv4 ) IP origine come viene visualizzato nel primo pacchetto elaborato da vNIC su questa connessione. Se direction=="outbound", un IP privato associato al vNIC.
target_ip stringa (indirizzoIPv4 ) Dest-IP come viene visualizzato nel primo pacchetto elaborato da vNIC su questa connessione. Se direction=="inbound", un IP privato associato al vNIC.
initiator_port uint16 La porta di origine TCP/UDP come viene visualizzata nel primo pacchetto elaborato da questo vNIC su questa connessione.
target_port uint16 La porta di destinazione TCP/UDP come appare nel primo pacchetto elaborato da questo vNIC su questa connessione.
transport_protocol uint8 Il numero di protocollo IANA (Internet Assigned Numbers Authority) (TCP o UDP).
ether_type stringa Attualmente, IPv4 è l'unico valore.
was_initiated bool La connessione avviata in questo log di flusso.
was_terminated bool La connessione è terminata (ad esempio, timeout/RST/Final-FIN).
bytes_from_initiator uint64 Il conteggio dei byte sulla connessione in questa finestra temporale del log del flusso, dall'iniziatore alla destinazione.
packets_from_initiator uint64 Il conteggio dei pacchetti sulla connessione nella finestra temporale del log del flusso, dall'iniziatore alla destinazione.
bytes_from_target uint64 Il conteggio dei byte sulla connessione in questa finestra temporale del log del flusso, dalla destinazione all'iniziatore.
packets_from_target uint64 Il numero di pacchetti sulla connessione nella finestra temporale di questo log di flusso, dalla destinazione all'iniziatore.
cumulative_bytes_from_initiator uint64 Il conteggio dei byte dall'avvio della connessione, dall'iniziatore alla destinazione.
cumulative_packets_from_initiator uint64 Il numero di pacchetti da quando è stata avviata la connessione, dall'iniziatore alla destinazione.
cumulative_bytes_from_target uint64 Il numero di byte da quando è stata avviata la connessione, dalla destinazione all'iniziatore.
cumulative_packets_from_target uint64 Il numero di pacchetti dall'avvio della connessione, dalla destinazione all'iniziatore.

Nella maggior parte dei casi, è possibile trovare il campo di direzione confrontando l'IP privato vNIC’s con gli IP di origine e destinazione. Tuttavia, il campo è utile per le query.

Esempio di oggetto log di flusso

    {
        "version": "0.0.1",
        "collector_crn": "crn",
        "attached_endpoint_type": "vnic",
        "network_interface_id": "crn",
        "instance_crn": "crn",
        "vpc_crn": "crn"
        "capture_end_time": "2008-09-15T15:53:00Z",
        "capture_start_time": "2008-09-15T15:00:00Z",
        "state": "ok",
        "number_of_flow_logs" : 1,
        "flow_logs": [
            {
                "start_time": "2008-09-15T15:53:00",
                "end_time": "2008-09-15T15:40:00",
                "direction": "O",
                "action": "accepted",
                "initiator_ip": "1.2.3.4",
                "initiator_port": 20033,
                "target_ip": "5.6.7.8",
                "target_port": 80,
                "transport_protocol": 6,
                "ether_type": "IPv4",
                "was_initiated": true,
                "was_terminated": false,
                "bytes_from_initiator": 12000,
                "packets_from_initiator": 2212,
                "bytes_from_target": 323232,
                "packets_from_target": 3232
                "cumulative_packets_from_initiator": 2212,
                "cumulative_packets_from_target": 3232,
                "cumulative_bytes_from_target": 323232,
                "cumulative_bytes_from_initiator": 12000,
            }
        ],
    }

Visualizzazione dei file di log di flusso generati dal bucket Object Storage

Se si utilizza il piano tariffario Lite (gratuito) per IBM Cloud Object Storage, è possibile accedere ai file degli oggetti di log del flusso generati direttamente dal bucket Object Storage per verificare che i file siano stati creati correttamente e che gli oggetti vengano generati.

Per visualizzare i file di log di flusso generati dal bucket Object Storage, attieniti alla seguente procedura:

  1. Per assicurarti che i log di flusso siano in fase di cattura, controlla il bucket Object Storage.

  2. Naviga nella cartella per trovare il tuo VPC o la risorsa in cui hai configurato il monitoraggio.

  3. Eseguire il drill - down nella risorsa per trovare la risorsa di rete che si sta monitorando.

    Se configurato correttamente, è necessario visualizzare diversi file gzip per ciascuna voce di log.

Per assicurarsi che i dati vengano acquisiti, scaricare uno dei file per visualizzarne il contenuto e verificare che il traffico venga acquisito.