Özet kurallarıyla Microsoft Sentinel verilerini toplama (önizleme)
Tüm günlük katmanlarında daha sorunsuz bir güvenlik işlemleri deneyimi için arka planda büyük veri kümelerini toplamak için Microsoft Sentinel'deki özet kurallarını kullanın. Özet veriler özel günlük tablolarında önceden derlenmiştir ve düşük maliyetli günlük katmanlarından türetilen veriler üzerinde çalıştırılan sorgular da dahil olmak üzere hızlı sorgu performansı sağlar. Özet kuralları verilerinizi aşağıdakiler için iyileştirmenize yardımcı olabilir:
- Özellikle büyük veri kümeleri ve zaman aralıkları üzerinde, güvenlik ve olay analizi, aydan aya veya yıllık iş raporları vb. için gereken analiz ve raporlar.
- Daha az veya daha düşük maliyetli bir günlük katmanında ihtiyacınız olduğu sürece tutabileceğiniz ayrıntılı günlüklerde maliyet tasarrufu sağlar ve özetlenmiş verileri analiz ve raporlar için yalnızca Bir Analytics tablosuna gönderirsiniz.
- Özetlenmiş paylaşılabilir verilerdeki gizlilik ayrıntılarını kaldırarak veya gizleyerek ve ham veri içeren tablolara erişimi sınırlayarak güvenlik ve veri gizliliği.
Algılama, araştırma, tehdit avcılığı ve raporlama etkinlikleri arasında Kusto Sorgu Dili (KQL) aracılığıyla özet kural sonuçlarına erişin. Geçmiş araştırmalarda, avlanmada ve uyumluluk etkinliklerinde daha uzun süreler için özet kural sonuçlarını kullanın.
Özet kuralı sonuçları Analiz veri planı altında ayrı tablolarda depolanır ve buna göre ücretlendirilir. Veri planları ve depolama maliyetleri hakkında daha fazla bilgi için bkz . Log Analytics çalışma alanında kullanım desenlerini temel alan bir tablo planı seçme
Önemli
Özet kuralları şu anda ÖNİzLEME aşamasındadır. Beta, önizleme veya başka bir şekilde genel kullanıma sunulmamış Azure özellikleri için geçerli olan ek yasal koşullar için Bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Microsoft Sentinel artık Microsoft Defender portalındaki Microsoft birleşik güvenlik işlemleri platformunda genel kullanıma sunuldu. Daha fazla bilgi için Bkz . Microsoft Defender portalında Microsoft Sentinel.
Önkoşullar
Microsoft Sentinel'de özet kuralları oluşturmak için:
Microsoft Sentinel'in en az bir çalışma alanında etkinleştirilmesi ve günlükleri etkin bir şekilde kullanması gerekir.
Microsoft Sentinel Katkıda Bulunan izinleri ile Microsoft Sentinel'e erişebilmelisiniz. Daha fazla bilgi için bkz . Microsoft Sentinel'de roller ve izinler.
Microsoft Defender portalında özet kuralları oluşturmak için öncelikle çalışma alanınızı birleşik güvenlik işlemleri platformuna eklemeniz gerekir. Daha fazla bilgi için bkz . Microsoft Sentinel'i Microsoft Defender XDR'ye bağlama.
Kuralınızı oluşturmadan önce Günlükler sayfasında özet kural sorgunuzla denemeler yapmanızı öneririz. Sorgunun sorgu sınırına ulaşmadığını veya buna yakın olmadığını doğrulayın ve sorgunun istenen şemayı ve beklenen sonuçları oluşturup oluşturmadığını denetleyin. Sorgu sorgu sınırlarına yakınsa, bölme başına daha az veri işlemek için daha küçük binSize
bir değer kullanmayı göz önünde bulundurun. Sorguyu daha az kayıt döndürecek veya daha yüksek birime sahip alanları kaldıracak şekilde de değiştirebilirsiniz.
Özet kuralı oluşturma
Belirli bir büyük veri kümesini dinamik bir tabloda toplamak için yeni bir özet kuralı oluşturun. Toplanan veri kümenizin ham verilerden ne sıklıkta güncelleştirildiğini belirlemek için kural sıklığınızı yapılandırın.
Azure portalında, Microsoft Sentinel gezinti menüsündeki Yapılandırma'nın altında Özet kuralları (Önizleme) öğesini seçin. Defender portalında Microsoft Sentinel Yapılandırma > Özeti kuralları (Önizleme) öğesini seçin.> Örneğin:
+ Oluştur'u seçin ve aşağıdaki ayrıntıları girin:
Adı. Kuralınız için anlamlı bir ad girin.
Açıklama. İsteğe bağlı bir açıklama girin.
Hedef tablo. Verilerinizin toplandığı özel günlük tablosunu tanımlayın:
Var olan özel günlük tablosu'nu seçerseniz, kullanmak istediğiniz tabloyu seçin.
Yeni özel günlük tablosu'nu seçerseniz , tablonuz için anlamlı bir ad girin. Tam tablonuzun adı aşağıdaki söz dizimini kullanır:
<tableName>_CL
.
Geçmiş çalıştırmalar ve hatalar için görünürlük elde etmek için çalışma alanınızda SummaryLogs tanılama ayarlarını etkinleştirmenizi öneririz. SummaryLogs tanılama ayarları etkin değilse, tanılama ayarları alanında bunları etkinleştirmeniz istenir.
SummaryLogs tanılama ayarları zaten etkinse ancak ayarları değiştirmek istiyorsanız Gelişmiş tanılama ayarlarını yapılandır'ı seçin. Özet kuralı sihirbazı sayfasına geri döndüğünüzde, ayar ayrıntılarınızı yenilemek için Yenile'yi seçtiğinizden emin olun.
Önemli
SummaryLogs tanılama ayarlarının ek maliyetleri vardır. Daha fazla bilgi için bkz . Azure İzleyici'de tanılama ayarları.
Devam etmek için İleri: Özet mantığını > ayarla'yı seçin.
Özet mantığını ayarla sayfasında özet sorgunuzu girin. Örneğin, Google Cloud Platform'dan içerik çekmek için şunları girmek isteyebilirsiniz:
GCPAuditLogs | where ServiceName == 'pubsub.googleapis.com' | summarize count() by Severity
Daha fazla bilgi için bkz. Azure İzleyici'de örnek özet kuralı senaryoları ve Kusto Sorgu Dili (KQL).
Yapılandırılan sorguyla topladığınız verilerin bir örneğini göstermek için Sonuçları önizleme'yi seçin.
Sorgu zamanlama alanında aşağıdaki ayrıntıları tanımlayın:
- Kuralın ne sıklıkta çalıştırılmasını istiyorsunuz?
- Kuralın dakikalar içinde herhangi bir gecikmeyle çalışmasını isteyip istemediğiniz
- Kuralın çalışmaya başlamasını istediğinizde
Zamanlamada tanımlanan süreler, verilerinizdeki
timegenerated
sütunu temel alırÖzet kuralını tamamlamak için İleri: Gözden geçir + kaydet'i seçin>>.
Mevcut özet kuralları, kural durumunuzu gözden geçirebileceğiniz Özet kuralları (Önizleme) sayfasında listelenir. Her kural için, aşağıdaki eylemlerden herhangi birini yapmak için satırın sonundaki seçenekler menüsünü seçin:
- Kuralın geçerli verilerini Günlükler sayfasında, sorguyu hemen çalıştırır gibi görüntüleyin
- Seçili kural için çalıştırma geçmişini görüntüleme
- Kuralı devre dışı bırakın veya etkinleştirin.
- Kural yapılandırmasını düzenleme
Kuralı silmek için kural satırını seçin ve ardından sayfanın üst kısmındaki araç çubuğunda Sil'i seçin.
Not
Azure İzleyici, API veya Azure Kaynak İzleyicisi (ARM) şablonu aracılığıyla özet kuralları oluşturmayı da destekler. Daha fazla bilgi için bkz . Özet kuralı oluşturma veya güncelleştirme.
Örnek özet kuralı senaryoları
Bu bölümde, Microsoft Sentinel'de özet kuralları oluşturmaya yönelik yaygın senaryolar ve her kuralın nasıl yapılandırileceğine ilişkin önerilerimiz gözden geçirin. Daha fazla bilgi ve örnek için bkz . Yardımcı günlükler (örnek işlem) ile özet kuralları kullanma ve Yardımcı Günlük alımı için kullanılacak günlük kaynakları.
Ağ trafiğinizde kötü amaçlı bir IP adresini hızla bulma
Senaryo: Bir tehdit avcısısınız ve ekibinizin hedeflerinden biri, son 90 gün içinde etkin bir olaydan gelen ağ trafiği günlüklerinde kötü amaçlı bir IP adresinin etkileşime geçtiği tüm örnekleri belirlemektir.
Zorluk: Microsoft Sentinel şu anda günde birden çok terabayt ağ günlüğü alır. Kötü amaçlı IP adresinin eşleşmelerini bulmak için hızlı bir şekilde bunlar arasında ilerlemeniz gerekir.
Çözüm: Aşağıdakileri yapmak için özet kuralları kullanmanızı öneririz:
, , ve gibi
LastTimeSeen
FirstTimeSeen
IPType
önemli öznitelikleri listeleyen , ,MaliciousIP
,RemoteIP
, dahil olmak üzereSourceIP
DestinationIP
olayla ilgili her IP adresi için bir özet veri kümesi oluşturun.Özet veri kümesi, belirli bir IP adresini hızla aramanızı ve IP adresinin bulunduğu zaman aralığını daraltmanızı sağlar. Bu işlemi, arama yapılan olaylar 90 günden uzun bir süre önce gerçekleştiğinde bile (çalışma alanı saklama süresinin ötesinde) yapabilirsiniz.
Bu örnekte, sorgunun süresi dolana kadar her gün yeni özet kayıtları ekleyebilmesi için özeti günlük çalışacak şekilde yapılandırın.
Özet veri kümesinde iki dakikadan kısa süre boyunca çalışan bir analiz kuralı oluşturun ve kötü amaçlı IP adresi şirket ağıyla etkileşime geçtiğinde belirli bir zaman aralığında hızla detaya gidin.
Farklı özet yük boyutlarına uyum sağlamak için en az beş dakikaya kadar çalışma aralıklarını yapılandırdığından emin olun. Bu, olay alımı gecikmesi olduğunda bile kayıp olmamasını sağlar.
Örneğin:
let csl_columnmatch=(column_name: string) { CommonSecurityLog | where isnotempty(column_name) | extend Date = format_datetime(TimeGenerated, "yyyy-MM-dd"), IPaddress = column_ifexists(column_name, ""), FieldName = column_name | extend IPType = iff(ipv4_is_private(IPaddress) == true, "Private", "Public") | where isnotempty(IPaddress) | project Date, TimeGenerated, IPaddress, FieldName, IPType, DeviceVendor | summarize count(), FirstTimeSeen = min(TimeGenerated), LastTimeSeen = min(TimeGenerated) by Date, IPaddress, FieldName, IPType, DeviceVendor }; union csl_columnmatch("SourceIP") , csl_columnmatch("DestinationIP") , csl_columnmatch("MaliciousIP") , csl_columnmatch("RemoteIP") // Further summarization can be done per IPaddress to remove duplicates per day on larger timeframe for the first run | summarize make_set(FieldName), make_set(DeviceVendor) by IPType, IPaddress
Saldırı hikayesini tamamlamak için sonraki bir aramayı veya diğer verilerle bağıntıyı çalıştırın.
Ağ verilerine karşı tehdit bilgileri eşleşmeleriyle ilgili uyarılar oluşturma
Gürültülü, yüksek hacimli ve düşük güvenlik değerine sahip ağ verilerine karşı tehdit bilgileri eşleşmeleriyle ilgili uyarılar oluşturun.
Senaryo: Güvenlik duvarı günlükleri için bir tehdit bilgileri etki alanı adı listesinde ziyaret edilen sistemdeki etki alanı adlarıyla eşleşecek bir analiz kuralı oluşturmanız gerekir.
Veri kaynaklarının çoğu gürültülü ve yüksek hacimli ham günlüklerdir, ancak IP adresleri, Azure Güvenlik Duvarı trafik, Trafiğin engeli vb. gibi daha düşük güvenlik değerlerine sahiptir. Günde toplam 1 TB'lık bir hacim vardır.
Zorluk: Ayrı kurallar oluşturmak için ek kurulum ve bakım ek yükü ve maliyet gerektiren birden çok mantıksal uygulama gerekir.
Çözüm: Aşağıdakileri yapmak için özet kuralları kullanmanızı öneririz:
McAfee güvenlik duvarı günlüklerini her 10 dakikada bir özetleyerek her çalıştırmada aynı özel tablodaki verileri güncelleştirin. ASIM işlevleri , McAfee günlüklerinizle etkileşim kurarken özet sorguda yararlı olabilir.
Özet verilerdeki bir etki alanı adı tehdit bilgileri listesindeki bir girdiyle eşleştiğinde uyarı tetikleyen bir analiz kuralı oluşturun. Örneğin:
//let timeRange = 5m; //let httpstrim = "https://"; //let httptrim = "http://"; let timeRangeStart = now (-10m); let timeRangeEnd = (timeRangeStart + 10m); //Take visited domains from McAfee proxy adx('https://adxfwlog01.northeurope.kusto.windows.net/nwlogs').MappedMcAfeeSyslog | where timestamp between (timeRangeStart .. timeRangeEnd) | where isnotempty(URL) | extend URLDomain = parse_url(URL).Host | extend URLDomain = iff(isempty(URLDomain),URL,URLDomain) | extend URLDomain = extract(@"([0-9a-zA-Z-]{1,}\.[0-9a-zA-Z-]{2,3}\.[0-9a-zA-Z-]{2,3}|[0-9a-zA-Z-]{1,}\.[0-9a-zA-Z-]{2,10})$", 0, URLDomain) | where isnotempty(URLDomain) | summarize by URLDomain //Match visited domains with TI DomainName list | join kind=inner (ThreatIntelligenceIndicator | where isnotempty(DomainName) | where Active == true | where ExpirationDateTime > now() | summarize LatestIndicatorTime = arg_max(TimeGenerated, *) by DomainName ) on $left.URLDomain == $right.DomainName | extend LogicApp = "SOC-McAfee-ADX-DstDomainAgainstThreatIntelligence" | project LatestIndicatorTime, TI_Domain = DomainName, Description, ConfidenceScore, AdditionalInformation, LogicApp
Yardımcı günlüklerle özet kuralları kullanma (örnek işlem)
Bu yordam, Logstash'ten CEF verilerini almak için ARM şablonu aracılığıyla oluşturulan özel bir bağlantı kullanarak yardımcı günlüklerle özet kuralları kullanmaya yönelik örnek bir işlemi açıklar.
Logstash'ten özel CEF bağlayıcınızı ayarlayın:
Veri toplama kuralları (DCR) ve veri toplama uç noktası (DCE) içeren özel bir tablo oluşturmak için aşağıdaki ARM şablonunu Microsoft Sentinel çalışma alanınıza dağıtın:
ARM şablonu çıkışından aşağıdaki ayrıntılara dikkat edin:
tenant_id
data_collection_endpoint
dcr_immutable_id
dcr_stream_name
Bir Microsoft Entra uygulaması oluşturun ve uygulamanın İstemci Kimliği ve Gizli Dizi değerlerini not edin. Daha fazla bilgi için bkz . Öğretici: Günlük alma API'siyle (Azure portalı) Azure İzleyici Günlüklerine veri gönderme.
Logstash yapılandırma dosyanızı güncelleştirmek için örnek betiğimizi kullanın. Güncelleştirmeler Logstash'i CEF günlüklerini ARM şablonu tarafından oluşturulan özel tabloya gönderecek şekilde yapılandırır ve JSON verilerini DCR biçimine dönüştürür. Bu betikte, yer tutucu değerlerini daha önce oluşturduğunuz özel tablo ve Microsoft Entra uygulaması için kendi değerlerinizle değiştirdiğinizden emin olun.
CEF verilerinizin Logstash'tan beklendiği gibi akıp akıp akmadığını denetleyin. Örneğin, Microsoft Sentinel'de Günlükler sayfasına gidin ve aşağıdaki sorguyu çalıştırın:
CefAux_CL | take 10
CEF verilerinizi toplayan özet kuralları oluşturun. Örneğin:
Endişeye neden olan arama olayı (IoC) verileri: Benzersiz oluşumlar getirmek için toplu özet sorgular çalıştırarak belirli ICS'leri arayın ve ardından daha hızlı sonuçlar elde etmek için yalnızca bu oluşumları sorgulayın. Aşağıdaki örnekte, ioC aramalarında kullanılabilecek benzersiz
Source Ip
bir akışın diğer meta verilerle birlikte nasıl getirileceğine ilişkin bir örnek gösterilmektedir:// Daily Network traffic trend Per Destination IP along with Data transfer stats // Frequency - Daily - Maintain 30 day or 60 Day History. Custom_CommonSecurityLog | extend Day = format_datetime(TimeGenerated, "yyyy-MM-dd") | summarize Count= count(), DistinctSourceIps = dcount(SourceIP), NoofByesTransferred = sum(SentBytes), NoofBytesReceived = sum(ReceivedBytes) by Day,DestinationIp, DeviceVendor
Anomali algılamaları için özet temeli sorgulama. Sorgularınızı 30 veya 60 gün gibi büyük geçmiş dönemlerde çalıştırmak yerine, verileri özel günlüklere almanızı ve ardından yalnızca zaman serisi anomali algılamaları gibi özet temel verileri sorgulamanızı öneririz. Örneğin:
// Time series data for Firewall traffic logs let starttime = 14d; let endtime = 1d; let timeframe = 1h; let TimeSeriesData = Custom_CommonSecurityLog | where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime))) | where isnotempty(DestinationIP) and isnotempty(SourceIP) | where ipv4_is_private(DestinationIP) == false | project TimeGenerated, SentBytes, DeviceVendor | make-series TotalBytesSent=sum(SentBytes) on TimeGenerated from startofday(ago(starttime)) to startofday(ago(endtime)) step timeframe by DeviceVendor