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 8601yyyymmddThhmmssZ(Coordinated Universal Time), definita come l'ora in cui è stato creato il primo oggetto indirectory.{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)
| 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
| 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:
-
Per assicurarti che i log di flusso siano in fase di cattura, controlla il bucket Object Storage.
-
Naviga nella cartella per trovare il tuo VPC o la risorsa in cui hai configurato il monitoraggio.
-
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.