Sdílet prostřednictvím


Použití Logstash ke streamování protokolů s transformacemi kanálů prostřednictvím rozhraní API založeného na DCR

Důležité

Příjem dat pomocí výstupního modulu plug-in Logstash s pravidly shromažďování dat (DCRs) je aktuálně ve verzi Public Preview. Tato funkce je poskytována bez smlouvy o úrovni služeb. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Nový výstupní modul plug-in Logstash pro Microsoft Sentinel podporuje transformace kanálů a pokročilou konfiguraci prostřednictvím pravidel shromažďování dat (DCR). Modul plug-in předává všechny typy protokolů z externích zdrojů dat do vlastních nebo standardních tabulek v Log Analytics nebo Microsoft Sentinelu.

V tomto článku se dozvíte, jak nastavit nový modul plug-in Logstash tak, aby streamovat data do Log Analytics nebo Microsoft Sentinelu pomocí DCR s plnou kontrolou nad výstupním schématem. Zjistěte, jak nasadit modul plug-in.

Poznámka:

Předchozí verze modulu plug-in Logstash umožňuje připojit zdroje dat prostřednictvím Logstash prostřednictvím rozhraní API pro shromažďování dat.

S novým modulem plug-in můžete:

  • Řídí konfiguraci názvů a typů sloupců.
  • Proveďte transformace v době příjmu dat, jako je filtrování nebo rozšiřování.
  • Ingestování vlastních protokolů do vlastní tabulky nebo příjem vstupního datového proudu Syslogu do tabulky Syslog služby Log Analytics.

Příjem dat do standardních tabulek je omezen pouze na standardní tabulky podporované pro příjem vlastních protokolů.

Další informace o práci s modulem shromažďování dat Logstash najdete v tématu Začínáme s Logstash.

Přehled

Architektura a pozadí

Diagram architektury Logstash

Modul Logstash se skládá ze tří komponent:

  • Vstupní moduly plug-in: Přizpůsobené shromažďování dat z různých zdrojů
  • Moduly plug-in filtru: Manipulace a normalizace dat podle zadaných kritérií.
  • Výstupní moduly plug-in: Přizpůsobené odesílání shromážděných a zpracovávaných dat do různých cílů.

Poznámka:

  • Microsoft podporuje pouze výstupní modul plug-in Logstash poskytovaný službou Microsoft Sentinel. Aktuální modul plug-in má název microsoft-sentinel-log-analytics-logstash-output-plugin, v1.1.0. Můžete otevřít lístek podpory pro všechny problémy související s výstupním modulem plug-in.

  • Microsoft nepodporuje výstupní moduly plug-in Logstash třetích stran pro Microsoft Sentinel ani žádný jiný modul plug-in Logstash nebo komponentu jakéhokoli typu.

  • Prohlédni si požadavky na podporu verze Logstash modulu plug-in.

Výstupní modul plug-in Služby Microsoft Sentinel pro Logstash odesílá data ve formátu JSON do pracovního prostoru služby Log Analytics pomocí rozhraní API pro příjem protokolů Log Analytics. Data se ingestují do vlastních protokolů nebo standardní tabulky.

  • Přečtěte si další informace o rozhraní API pro příjem protokolů.

Nasazení výstupního modulu plug-in Microsoft Sentinel v Logstash

Chcete-li nastavit modul plug-in, postupujte takto:

  1. Kontrola požadavků
  2. Instalace modulu plug-in
  3. Vytvoření ukázkového souboru
  4. Vytvoření požadovaných prostředků souvisejících s DCR
  5. Konfigurace konfiguračního souboru Logstash
  6. Restartování Logstash
  7. Zobrazení příchozích protokolů v Microsoft Sentinelu
  8. Monitorování protokolů auditu výstupního modulu plug-in

Požadavky

  • Nainstalujte podporovanou verzi Logstash. Modul plug-in podporuje následující verze Logstash:

    • 7.0 - 7.17.13
    • 8.0 - 8.9
    • 8.11 - 8.13

    Poznámka:

    Pokud používáte Logstash 8, doporučujeme v kanálu zakázat ECS.

  • Ověřte, že máte pracovní prostor služby Log Analytics s alespoň právy přispěvatele.

  • Ověřte, že máte oprávnění k vytváření objektů DCR v pracovním prostoru.

Instalace modulu plug-in

Výstupní modul plug-in Microsoft Sentinelu je k dispozici v kolekci Logstash.

Vytvoření ukázkového souboru

V této části vytvoříte ukázkový soubor v jednom z těchto scénářů:

Vytvoření ukázkového souboru pro vlastní protokoly

V tomto scénáři nakonfigurujete vstupní modul plug-in Logstash tak, aby odesílal události do Služby Microsoft Sentinel. V tomto příkladu k simulaci událostí používáme vstupní modul plug-in generátoru. Můžete použít jakýkoli jiný vstupní modul plug-in.

V tomto příkladu vypadá konfigurační soubor Logstash takto:

input {
      generator {
            lines => [
                 "This is a test log message"
            ]
           count => 10
      }
}
  1. Zkopírujte konfiguraci výstupního modulu plug-in níže do konfiguračního souboru Logstash.

    output {
        microsoft-sentinel-log-analytics-logstash-output-plugin {
          create_sample_file => true
          sample_file_path => "<enter the path to the file in which the sample data will be written>" #for example: "c:\\temp" (for windows) or "/tmp" for Linux. 
        }
    }
    
  2. Před vytvořením ukázkového souboru se ujistěte, že existuje odkazovaná cesta k souboru, spusťte Logstash.

    Modul plug-in zapíše deset záznamů do ukázkového souboru pojmenovaného sampleFile<epoch seconds>.json v nakonfigurované cestě. Příklad: c:\temp\sampleFile1648453501.json. Tady je část ukázkového souboru, který modul plug-in vytvoří:

    [
            {
                "host": "logstashMachine",
                "sequence": 0,
                "message": "This is a test log message",
                "ls_timestamp": "2022-03-28T17:45:01.690Z",
                "ls_version": "1"
            },
            {
                "host": "logstashMachine",
                "sequence": 1
        ...
    
        ]    
    

    Modul plug-in automaticky přidá tyto vlastnosti do každého záznamu:

    • ls_timestamp: Čas přijetí záznamu ze vstupního modulu plug-in
    • ls_version: Verze kanálu Logstash.

    Tato pole můžete odebrat při vytváření dcR.

Vytvoření ukázkového souboru pro příjem protokolů do tabulky Syslog

V tomto scénáři nakonfigurujete vstupní modul plug-in Logstash tak, aby odesílal události syslogu do Microsoft Sentinelu.

  1. Pokud ještě nemáte zprávy syslogu přeposílané do počítače Logstash, můžete k vygenerování zpráv použít příkaz loggeru. Například (pro Linux):

    logger -p local4.warn --rfc3164 --tcp -t CEF: "0|Microsoft|Device|cef-test|example|data|1|here is some more data for the example" -P 514 -d -n 127.0.0.1
    Here is an example for the Logstash input plugin:
    input {
         syslog {
             port => 514
        }
    }
    
  2. Zkopírujte konfiguraci výstupního modulu plug-in níže do konfiguračního souboru Logstash.

    output {
        microsoft-sentinel-log-analytics-logstash-output-plugin {
          create_sample_file => true
          sample_file_path => "<enter the path to the file in which the sample data will be written>" #for example: "c:\\temp" (for windows) or "/tmp" for Linux. 
        }
    }
    
  3. Před vytvořením ukázkového souboru se ujistěte, že cesta k souboru existuje, spusťte Logstash.

    Modul plug-in zapíše deset záznamů do ukázkového souboru pojmenovaného sampleFile<epoch seconds>.json v nakonfigurované cestě. Příklad: c:\temp\sampleFile1648453501.json. Tady je část ukázkového souboru, který modul plug-in vytvoří:

    [
        	{
        		"logsource": "logstashMachine",
        		"facility": 20,
        		"severity_label": "Warning",
        		"severity": 4,
        		"timestamp": "Apr  7 08:26:04",
        		"program": "CEF:",
        		"host": "127.0.0.1",
        		"facility_label": "local4",
        		"priority": 164,
        		"message": 0|Microsoft|Device|cef-test|example|data|1|here is some more data for the example",
        		"ls_timestamp": "2022-04-07T08:26:04.000Z",
        		"ls_version": "1"
        	}
    ]    
    
    

    Modul plug-in automaticky přidá tyto vlastnosti do každého záznamu:

    • ls_timestamp: Čas přijetí záznamu ze vstupního modulu plug-in
    • ls_version: Verze kanálu Logstash.

    Tato pole můžete odebrat při vytváření dcR.

Vytvoření požadovaných prostředků DCR

Pokud chcete nakonfigurovat modul plug-in Logstash založený na DCR služby Microsoft Sentinel, musíte nejprve vytvořit prostředky související s DCR.

V této části vytvoříte prostředky, které se použijí pro dcR, v jednom z těchto scénářů:

Vytvoření prostředků DCR pro příjem dat do vlastní tabulky

Pokud chcete ingestovat data do vlastní tabulky, postupujte podle těchto kroků (na základě kurzu Odesílání dat do protokolů služby Azure Monitor pomocí rozhraní REST API (Azure Portal):

  1. Projděte si požadavky.

  2. Nakonfigurujte aplikaci.

  3. Přidejte vlastní tabulku protokolů.

  4. Parsujte a filtrujte ukázková data pomocí ukázkového souboru, který jste vytvořili v předchozí části.

  5. Shromážděte informace z DCR.

  6. Přiřaďte oprávnění řadiči domény.

    Přeskočte krok Odeslat ukázková data.

Pokud narazíte na nějaké problémy, projděte si kroky pro řešení potíží.

Vytvoření prostředků DCR pro příjem dat do standardní tabulky

Pokud chcete ingestovat data do standardní tabulky, jako je Syslog nebo CommonSecurityLog, použijete proces založený na kurzu Odesílání dat do protokolů služby Azure Monitor pomocí rozhraní REST API (šablon Resource Manageru). Zatímco kurz vysvětluje, jak ingestovat data do vlastní tabulky, můžete proces snadno upravit tak, aby ingestovat data do standardní tabulky. Následující kroky označují relevantní změny v krocích.

  1. Projděte si požadavky.

  2. Shromážděte podrobnosti o pracovním prostoru.

  3. Nakonfigurujte aplikaci.

    Přeskočte vytvoření nové tabulky v kroku pracovního prostoru služby Log Analytics. Tento krok není relevantní při ingestování dat do standardní tabulky, protože tabulka je už definovaná v Log Analytics.

  4. Vytvořte dcR. V tomto kroku:

    • Zadejte ukázkový soubor, který jste vytvořili v předchozí části.
    • K definování vlastnosti použijte ukázkový soubor, který jste vytvořili streamDeclarations . Každé z polí v ukázkovém souboru by mělo mít odpovídající sloupec se stejným názvem a příslušným typem (viz následující příklad ).
    • Nakonfigurujte hodnotu outputStream vlastnosti s názvem standardní tabulky místo vlastní tabulky. Na rozdíl od vlastních tabulek nemají standardní názvy tabulek příponu _CL .
    • Předpona názvu tabulky by měla být Microsoft- místo Custom-. V našem příkladu outputStream je Microsoft-Sysloghodnota vlastnosti .
  5. Přiřaďte oprávnění řadiči domény.

    Přeskočte krok Odeslat ukázková data.

Pokud narazíte na nějaké problémy, projděte si kroky pro řešení potíží.

Příklad: DCR, která ingestuje data do tabulky Syslog

Poznámky:

  • Názvy streamDeclarations a typy sloupců by měly být stejné jako ukázková pole souboru, ale nemusíte je zadávat všechny. Například v níže uvedeném řadiči PRItype domény se ve streamDeclarations sloupci vynechá pole a ls_version pole.
  • Vlastnost dataflows transformuje vstup do formátu tabulky Syslog a nastaví na outputStream Microsoft-Sysloghodnotu .
{
	"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
	"contentVersion": "1.0.0.0",
	"parameters": {
		"dataCollectionRuleName": {
			"type": "String",
			"metadata": {
				"description": "Specifies the name of the Data Collection Rule to create."
			}
		},
		"location": {
			"defaultValue": "westus2",
			"allowedValues": [
				"westus2",
				"eastus2",
				"eastus2euap"
			],
			"type": "String",
			"metadata": {
				"description": "Specifies the location in which to create the Data Collection Rule."
			}
		},
        "location": {
            "defaultValue": "[resourceGroup().location]", 
            "type": "String", 
            "metadata": {
                "description": "Specifies the location in which to create the Data Collection Rule." 
            } 
        },
		"workspaceResourceId": {
			"type": "String",
			"metadata": {
				"description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
			}
		}
	},
	"resources": [
		{
			"type": "Microsoft.Insights/dataCollectionRules",
			"apiVersion": "2021-09-01-preview",
			"name": "[parameters('dataCollectionRuleName')]",
			"location": "[parameters('location')]",
			"properties": {
				"streamDeclarations": {
					"Custom-SyslogStream": {
						"columns": [
							{
                        "name": "ls_timestamp",
                        "type": "datetime"
                    },	{
                        "name": "timestamp",
                        "type": "datetime"
                    },
                    {
                        "name": "message",
                        "type": "string"
                    }, 
					{
                        "name": "facility_label",
                        "type": "string"
                    },
					{
                        "name": "severity_label",
                        "type": "string"
                    },
                    {
                        "name": "host",
                        "type": "string"
                    },
                    {
                        "name": "logsource",
                        "type": "string"
                    }
	]
				      }
				},
				"destinations": {
					"logAnalytics": [
						{
							"workspaceResourceId": "[parameters('workspaceResourceId')]",
							"name": "clv2ws1"
						}
					]
				},
				"dataFlows": [
					{
					"streams": [
						"Custom-SyslogStream"
					],
					"destinations": [
						"clv2ws1"
					],
					"transformKql": "source | project TimeGenerated = ls_timestamp, EventTime = todatetime(timestamp), Computer = logsource, HostName = logsource, HostIP = host, SyslogMessage = message, Facility = facility_label, SeverityLevel = severity_label",
						"outputStream": "Microsoft-Syslog"
					}
				]
			}
		}
	],
	"outputs": {
		"dataCollectionRuleId": {
			"type": "String",
			"value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
		}
	}
}

Konfigurace konfiguračního souboru Logstash

Pokud chcete nakonfigurovat konfigurační soubor Logstash tak, aby ingestovali protokoly do vlastní tabulky, načtěte tyto hodnoty:

Pole Jak načíst
client_app_Id Application (client) ID Hodnota, kterou vytvoříte v kroku 3 při vytváření prostředků DCR, podle kurzu, který jste použili v této části.
client_app_secret Application (client) ID Hodnota, kterou vytvoříte v kroku 5 při vytváření prostředků DCR, podle kurzu, který jste použili v této části.
tenant_id ID tenanta vašeho předplatného ID tenanta najdete v části Základní informace o přehledu ID domovské stránky > Microsoft Entra ID > >.
data_collection_endpoint Hodnota identifikátoru logsIngestion URI v kroku 3 při vytváření prostředků DCR podle kurzu, který jste použili v této části.
dcr_immutable_id Hodnota DCR immutableId v kroku 6 při vytváření prostředků DCR podle kurzu, který jste použili v této části.
dcr_stream_name U vlastních tabulek, jak je vysvětleno v kroku 6 při vytváření prostředků DCR, přejděte do zobrazení JSON dcR a zkopírujte dataFlows>streams vlastnost. Podívejte se na dcr_stream_name následující příklad .

U standardních tabulek je Custom-SyslogStreamhodnota .

Po načtení požadovaných hodnot:

  1. Nahraďte výstupní část konfiguračního souboru Logstash, který jste vytvořili v předchozím kroku, následujícím příkladem.
  2. Zástupné řetězce v následujícím příkladu nahraďte hodnotami, které jste získali.
  3. Nezapomeňte změnit create_sample_file atribut na false.

Volitelná konfigurace

Pole Popis Default value
azure_cloud Slouží k zadání názvu používaného cloudu Azure, dostupné hodnoty jsou: AzureCloud, AzureChinaClouda AzureUSGovernment. AzureCloud
key_names Pole řetězců. Toto pole zadejte, pokud chcete do Log Analytics odeslat podmnožinu sloupců. Žádné (pole je prázdné)
plugin_flush_interval Definuje maximální časový rozdíl (v sekundách) mezi odesíláním dvou zpráv do Log Analytics. 5
retransmission_time Nastaví dobu v sekundách pro opakované přeposílání zpráv, jakmile se odeslání nezdařilo. 10
compress_data Pokud je Truetoto pole, data události se před použitím rozhraní API komprimují. Doporučeno pro kanály s vysokou propustností. False
proxy Určete adresu URL proxy serveru, která se má použít pro všechna volání rozhraní API. Žádné (pole je prázdné)
proxy_aad Zadejte adresu URL proxy serveru, která se má použít pro volání rozhraní API pro ID Microsoft Entra. Stejná hodnota jako proxy (pole je prázdné)
proxy_endpoint Určete adresu URL proxy serveru, která se má použít pro volání rozhraní API do koncového bodu shromažďování dat. Stejná hodnota jako proxy (pole je prázdné)

Příklad: Oddíl konfigurace výstupního modulu plug-in

output {
    microsoft-sentinel-log-analytics-logstash-output-plugin {
      client_app_Id => "<enter your client_app_id value here>"
      client_app_secret => "<enter your client_app_secret value here>"
      tenant_id => "<enter your tenant id here> "
      data_collection_endpoint => "<enter your logsIngestion URI here> "
      dcr_immutable_id => "<enter your DCR immutableId here> "
      dcr_stream_name => "<enter your stream name here> "
      create_sample_file=> false
      sample_file_path => "c:\\temp"
      proxy => "http://proxy.example.com"
    }
}

Pokud chcete pro výstupní modul plug-in Microsoft Sentinel Logstash nastavit další parametry, přečtěte si soubor readme výstupního modulu plug-in.

Poznámka:

Z bezpečnostníchdůvodůch client_app_Idclient_app_secrettenant_iddata_collection_endpointdcr_immutable_id Doporučujeme uložit tyto citlivé informace do úložiště klíčů Logstash.

Restartování Logstash

Restartujte Logstash s aktualizovanou konfigurací výstupního modulu plug-in a podívejte se, že se data ingestují do správné tabulky podle vaší konfigurace DCR.

Zobrazení příchozích protokolů v Microsoft Sentinelu

  1. Ověřte, že se zprávy odesílají do výstupního modulu plug-in.

  2. V navigační nabídce služby Microsoft Sentinel klikněte na Protokoly. Pod nadpisem Tabulky rozbalte kategorii Vlastní protokoly. V konfiguraci vyhledejte a klikněte na název tabulky, kterou jste zadali (s příponou _CL ).

    Snímek obrazovky s vlastními protokoly pro ukládání protokolů

  3. Pokud chcete zobrazit záznamy v tabulce, zadejte dotaz na tabulku pomocí názvu tabulky jako schématu.

    Snímek obrazovky s dotazem na vlastní protokoly pro ukládání protokolů

Monitorování protokolů auditu výstupního modulu plug-in

Pokud chcete monitorovat připojení a aktivitu výstupního modulu plug-in Microsoft Sentinel, povolte příslušný soubor protokolu Logstash. Informace o umístění souboru protokolu najdete v dokumentu Rozložení adresáře Logstash.

Pokud se v tomto souboru protokolu nezobrazují žádná data, vygenerujte a odešlete některé události místně (prostřednictvím modulů plug-in pro vstup a filtrování), abyste měli jistotu, že výstupní modul plug-in přijímá data. Microsoft Sentinel bude podporovat pouze problémy související s výstupním modulem plug-in.

Zabezpečení sítě

Definujte nastavení sítě a povolte izolaci sítě pro výstupní modul plug-in Microsoft Sentinel Logstash.

Značky služeb virtuální sítě

Výstupní modul plug-in Microsoft Sentinelu podporuje značky služeb virtuální sítě Azure. Vyžadují se značky AzureMonitor i AzureActiveDirectory.

Značky služeb Azure Virtual Network je možné použít k definování řízení přístupu k síti ve skupinách zabezpečení sítě, službě Azure Firewall a trasách definovaných uživatelem. Značky služeb používejte místo konkrétních IP adres při vytváření pravidel zabezpečení a tras. V situacích, kdy se značky služeb Azure Virtual Network nedají použít, jsou požadavky brány firewall uvedeny níže.

Požadavky brány firewall

Následující tabulka uvádí požadavky brány firewall pro scénáře, kdy se značky služeb virtuální sítě Azure nedají použít.

Cloud Koncový bod Účel Port Směr Obejití kontroly protokolu HTTPS
Azure Commercial https://login.microsoftonline.com Autorizační server (Microsoft Identity Platform) Port 443 Odchozí Ano
Azure Commercial https://<data collection endpoint name>.<Azure cloud region>.ingest.monitor.azure.com Koncový bod shromažďování dat Port 443 Odchozí Ano
Azure Government https://login.microsoftonline.us Autorizační server (Microsoft Identity Platform) Port 443 Odchozí Ano
Azure Government Nahraďte ".com" výše za ".us" Koncový bod shromažďování dat Port 443 Odchozí Ano
Platforma Microsoft Azure provozovaná společností 21Vianet https://login.chinacloudapi.cn Autorizační server (Microsoft Identity Platform) Port 443 Odchozí Ano
Platforma Microsoft Azure provozovaná společností 21Vianet Nahraďte ".com" výše slovem .cn. Koncový bod shromažďování dat Port 443 Odchozí Ano

Omezení

  • Příjem dat do standardních tabulek je omezen pouze na standardní tabulky podporované pro příjem vlastních protokolů.
  • Sloupce vstupního datového proudu ve streamDeclarations vlastnosti musí začínat písmenem. Pokud spustíte sloupec s jinými znaky (například @ ), _operace selže.
  • Pole TimeGenerated datetime je povinné. Toto pole musíte zahrnout do transformace KQL.
  • Pokud potřebujete další možné problémy, projděte si část věnovanou řešení potíží v kurzu.

Další kroky

V tomto článku jste zjistili, jak pomocí Logstash připojit externí zdroje dat ke službě Microsoft Sentinel. Další informace o službě Microsoft Sentinel najdete v následujících článcích: