Trafik analizi aracılığıyla Azure ağını segmentlere ayırmak için Sıfır Güven ilkelerini uygulama

Sıfır Güven bir güvenlik stratejisidir. Bu bir ürün veya hizmet değil, aşağıdaki güvenlik ilkeleri kümesini tasarlama ve uygulama yaklaşımıdır.

Prensip Açıklama
Açıkça doğrula Her zaman kimlik doğrulama ve yetkilendirmeyi, mevcut tüm veri noktalarına göre yapın.
En az ayrıcalık erişimi kullan Just-In-Time ve Just-Enough-Access (JIT/JEA), risk tabanlı uyarlamalı ilkeler ve veri koruması ile kullanıcı erişimini sınırlayın.
İhlal varsay Patlama yarıçapı ve segment erişimini en aza indirin. Uçtan uca şifrelemeyi doğrulayın ve görünürlük elde etmek, tehdit algılamayı yönlendirmek ve savunmayı geliştirmek için analiz kullanın.

Sıfır Güven ile, varsayılan olarak güven perspektifinden özel duruma göre güvene geçersiniz. Bu özel durumları ve uyarıları otomatik olarak yönetmeye yönelik tümleşik bir özellik önemlidir. Tehditleri daha kolay algılayabilir, tehditlere yanıt verebilir ve kuruluşunuz genelinde istenmeyen olayları önleyebilir veya engelleyebilirsiniz.

Azure'ın bulut ağı, sınırlar veya güven bölgeleri gibi davranabilen birden çok segmentasyon katmanıyla tasarlanmıştır. Sıfır Güven ilkelerini kullanarak Azure tabanlı ağınızı segmentlere ayırma hakkında daha fazla bilgi için bkz. Azure tabanlı ağ iletişimini segmentlere ayırmak için Sıfır Güven ilkelerini uygulama.

Sıfır Güven Olgunluk Modeli

Siber Güvenlik ve Altyapı Güvenlik Ajansı (CISA) Sıfır Güven Olgunluk Modeli (ZTMM), Sıfır Güven koruma alanlarını geliştirmek için işlevleri kapsayan beş yapı üzerine kurulmuştur. Daha fazla bilgi için bkz . CISA Sıfır Güven Olgunluk Modeli için Microsoft bulut hizmetlerini yapılandırma

  • Kimlik
  • Cihazlar
  • Ağlar
  • Uygulamalar ve iş yükleri
  • Veri

Sütunlar, ZTMM yolculuğunun dört aşamasına yayılır. Daha fazla bilgi için bkz. ZTMM yolculuk aşamaları.

  • Geleneksel
  • İlk
  • Gelişmiş
  • En iyi

Dört aşama , Ağlar sütununa aşağıdaki gibi uygulanır:

Aşama Ağlar sütunu
Geleneksel - Geniş çevre alanı / makro segmentasyonu
- Sınırlı dayanıklılık ve el ile yönetilen kural kümeleri ve yapılandırma
İlk - Kritik iş yüklerinin ilk yalıtımı
- Ağ özellikleri daha fazla uygulama için kullanılabilirlik taleplerini yönetir
- Kısmi dinamik ağ yapılandırması
Gelişmiş - Yalıtım ve dayanıklılık mekanizmasını genişletme
- Yapılandırmalar, risk algılayan uygulama profili değerlendirmelerine göre uyarlanabilir
En iyi - Mikro çevreyi tam zamanında ve yeterli erişim denetimleriyle dağıtıp, uygun dayanıklılığı sağlayın.
- Yapılandırma, uygulama profili gereksinimlerini karşılayacak şekilde gelişir

Sıfır Güven güvenliği elde etmek için trafik analizini nasıl kullanabilirsiniz?

Trafik Analizi, Azure ortamınızdaki ağ trafiği akışları hakkında içgörüler sağlar. Sanal ağ akış günlüklerini kullanır ve önemli trafik desenlerini korurken veri hacmini azaltmak için toplama gerçekleştirir. Toplanan günlükler daha sonra coğrafi, güvenlik ve topoloji bilgileriyle zenginleştirilip Log Analytics çalışma alanında depolanır.

Trafik desenleri yerleşik panolar kullanılarak görselleştirilir ve Azure Çalışma Kitapları'nı kullanarak trafik içgörülerini özelleştirme esnekliği sağlanır. Trafik analizi panosu, olası güvenlik ihlallerine yanıt olarak uyarıları yapılandırmanıza ve araştırma başlatmanıza da olanak tanır.

  • Ağ trafiğini izleme: Akış günlüklerini kullanarak gelen ve giden trafiği yakalayın ve bu verileri işlemek ve görselleştirmek için trafik analizini kullanın. İş yükleri arasında iletişim desenleri, bant genişliği kullanımı ve trafik akışları hakkında içgörüler elde edin.

  • İş yükü iletişim desenlerini tanımlama: Kaynakların kiracılar, abonelik bölgeleri, sanal ağlar, alt ağlar, protokoller, güvenlik tabanlı gruplar, hizmetler ve uygulamalar arasında nasıl iletişim kuracaklarını anlamak için trafik analizi verilerini analiz edin. Olası güvenlik risklerini gösterebilecek gereksiz veya anormal trafik desenlerini belirleyin.

  • İçgörü görselleştirmeleri: Trafik desenlerini keşfetmek ve anomalileri daha etkili bir şekilde algılamak için trafik analizinde yerleşik ve özelleştirilebilir görselleştirmeleri kullanın.

  • Güvenliği aşılmış IP'leri/kaynakları algılama: Güvenliği aşılmış olabilecek IP adreslerini veya kaynaklarını belirlemek için trafik analizini kullanarak güvenliğin güçlendirilmesine ve performansın korunmasına yardımcı olun.

Trafik Analizi ile Sıfır Güven Segmentasyonu (ZTS) nasıl dağıtılır?

Sıfır Güven Kesimlemesi'ni mevcut veya yeni Azure dağıtımına dağıtmak için kullanıcının ihtiyacı olan ilk kritik adım olarak

  • Trafik Analizi: İş yükünüz için gerekli olan trafik desenlerini belirlemek için Akış Günlüklerini Analiz Etme aracılığıyla desenleri inceleyin.

  • Varsayılan reddetme duruşuyla başlayın: Trafiğe geniş kapsamlı olarak izin veren tüm mevcut gelen ve giden kuralları kaldırmak veya devre dışı bırakmakla (örn. Tümüne İzin Ver, İzin Ver) ve hem gelen hem de giden trafik için açık reddetme kuralları ekleyerek başlar

  • Seçmeli izin verme kuralları oluşturma: Traffic Analytics içgörülerine dayanarak yalnızca gözlemlenen ve gerekli trafiğe açıkça izin veren kurallar tanımlayın. Bu yaklaşım, yalnızca doğrulanmış ve gerekli trafiğe izin verilmesini ve "Sıfır Güven" ilkesine uygun olarak açık bir şekilde doğrulama yapılmasını sağlar.

Aşağıdaki bölümlerde trafik analizinin Azure'da Sıfır Güven ilkelerini uygulamaya yardımcı olmak için segmentlere ayırmayı desteklediği önemli senaryolar vurgulanmaktadır.

Senaryo 1: Riskli veya kısıtlanmış bölgelerden akan trafiği algılama

Kuruluşunuzun ilkeleri tarafından tanımlanan yüksek riskli bölgelere gelen veya giden trafiği algılamak için trafik analizini kullanın. Örneğin, kuruluşunuzun güvenlik ve uyumluluk gereksinimlerine bağlı olarak hassas veya kısıtlanmış olarak kabul edilen bölgelere gelen veya bu bölgelerden gelen trafiği tanımlayabilirsiniz.

let ExternalIps = NTAIpDetails 
    | where Location in ("country1", "country2") 
    | where FlowType in ("MaliciousFlow", "ExternalPublic")
        //and FlowIntervalStartTime between (datetime('{timeInterval') .. datetime('{timeInterval'))
    | project-away
        TimeGenerated,
        SubType,
        FaSchemaVersion,
        FlowIntervalEndTime,
        FlowIntervalStartTime,
        FlowType,
        Type 
    | distinct Ip, ThreatType, DnsDomain, ThreatDescription, Location, PublicIpDetails, Url;
    let ExternalFlows =  NTANetAnalytics 
    //| where FlowStartTime between (datetime('{timeInterval}') .. datetime('{timeInterval}'))
    | where SubType == "FlowLog" and FlowType in ("ExternalPublic", "MaliciousFlow")
    | extend PublicIP = SrcPublicIps
    | extend ExtractedIPs = split(PublicIP, " ") // Split IPs by spaces
    | mv-expand ExtractedIPs // Expand into multiple rows
    | extend IP = tostring(split(ExtractedIPs, "|")[0])
    | extend AllSrcIps = coalesce(SrcIp, IP)
    | project 
        AllSrcIps,
        DestIp,
        SrcVm,
        DestVm,
        SrcSubscription,
        DestSubscription,FlowType; 
let SrcMalicious = ExternalFlows 
    | lookup kind=inner ExternalIps on $left.AllSrcIps == $right.Ip
    | extend CompromisedVM = iff(isnotempty(DestVm),strcat("/subscriptions/",DestSubscription,"/resourceGroups/",tostring(split(DestVm,"/")[0]),"/providers/Microsoft.Compute/virtualMachines/",tostring(split(DestVm,"/")[1])),'')
    | project
        SrcExternalIp = strcat('🌐 ', AllSrcIps),      
        DestCompromisedIp = strcat('🖥️', DestIp),
        CompromisedVM,
        PublicIpDetails,
        FlowType,
        ThreatType,
        DnsDomain,
        ThreatDescription,
        Location,
        Url;
SrcMalicious
| summarize count() by SrcExternalIp ,DestCompromisedIp, CompromisedVM,
        PublicIpDetails,
        FlowType,
        ThreatType,
        DnsDomain,
        ThreatDescription,
        Location,
        Url

Senaryo 2: Azure hizmet etkileşimlerine göre trafik segmentasyonu elde etme

Farklı iş yüklerinin Azure hizmetleriyle nasıl etkileşime geçtiğini kuş bakışı görmek için trafik analizini kullanın. Örneğin SAP iş yükleri Azure Arc altyapısıyla iletişim kurarken geliştirme ortamları veya üretkenlik hizmetleri gibi diğer iş yükleri Azure İzleyici ile etkileşim kurabilir. Bu içgörüler hizmet bağımlılıklarını anlamanıza, beklenmeyen veya anormal trafik desenlerini algılamanıza ve mikro segmentasyon aracılığıyla daha ayrıntılı güvenlik ilkeleri uygulamanıza yardımcı olur.

let SpecificServices = NTAIpDetails
| where FlowType == "AzurePublic"
| where FlowIntervalStartTime > ago(4h)
| project Ip, PublicIpDetails;
let PublicIPs = NTANetAnalytics
| where SubType == 'FlowLog'
| where FlowIntervalStartTime > ago(4h)
| where(isnotempty(SrcPublicIps) or isnotempty(DestPublicIps))
| extend PublicIP = coalesce(SrcPublicIps, DestPublicIps), Vnet = iff(isnotempty(SrcSubnet), strcat("/subscriptions/", SrcSubscription, "/resourceGroups/", tostring(split(SrcSubnet, "/")[0]), "/providers/Microsoft.Network/virtualNetworks/", tostring(split(SrcSubnet, "/")[1])), iff(isnotempty(DestSubnet), strcat("/subscriptions/", DestSubscription, "/resourceGroups/", tostring(split(DestSubnet, "/")[0]), "/providers/Microsoft.Network/virtualNetworks/", tostring(split(DestSubnet, "/")[1])),''))
| extend ExtractedIPs = split(PublicIP, " ") // Split IPs by spaces
| mv-expand ExtractedIPs // Expand into multiple rows
| extend IP = tostring(split(ExtractedIPs, "|")[0]) // Extract IP address
| lookup kind=inner SpecificServices on $left.IP == $right.Ip
| project Vnet, PublicIpDetails;
PublicIPs
| summarize CounterValue = count() by Vnet, PublicIpDetails
| top 100 by CounterValue desc

Senaryo 3: Ağ ihlali durumunda patlama yarıçapını belirleme

Kaynaklarınızla iletişim kurmaya çalışan kötü amaçlı olabilecek IP adreslerinin yolunu izlemek için trafik analizini kullanın. Güvenliği aşılmış bir sanal makine (VM) durumunda trafik analizi, son 24 saat içinde bu VM tarafından başlatılan tüm iletişimlerin eşlenmesine yardımcı olarak olası veri sızdırmasını belirlemeye ve patlama yarıçapını sınırlamaya yardımcı olabilir.

Aşağıdaki sorgu, yüksek riskli coğrafyalardan gelen kötü amaçlı akışlarla etkileşim kuran tüm doğrudan ve dolaylı IP adreslerini tanımlar:

let MAliciousIps = NTAIpDetails 
| where FlowIntervalStartTime between (datetime('{timeInterval:startISO}') .. datetime('{timeInterval:endISO}'))
| where FlowType == "MaliciousFlow" 
| distinct Ip; 
let MaliciousFlows =  NTANetAnalytics 
| where FlowStartTime between (todatetime('{timeInterval:startISO}') .. todatetime('{timeInterval:endISO}'))
| where SubType == "FlowLog" and FlowType == "MaliciousFlow" 
| project SrcIp, DestIp, FlowLogResourceId, TargetResourceId; 
let SrcMalicious = MaliciousFlows 
| lookup kind=leftouter MAliciousIps on $left.SrcIp == $right.Ip 
| project SrcIp, DestIp; 
let DestMalicious = MaliciousFlows 
| lookup kind=leftouter MAliciousIps on $left.DestIp == $right.Ip 
| project SrcIp, DestIp; 
let MaliciousIps = SrcMalicious 
| union DestMalicious 
| distinct *; 
let SpecificCountryIPs = NTAIpDetails 
| where Location in ("country1", "country2") 
| project Ip; 
let SrcIpCountry = SpecificCountryIPs 
| join kind=inner NTANetAnalytics on $left.Ip == $right.SrcIp 
| project SrcIp, DestIp; 
let DestIpCountry = SpecificCountryIPs 
| join kind=inner NTANetAnalytics on $left.Ip == $right.DestIp 
| project SrcIp, DestIp; 
let SpecificCountryFlows = SrcIpCountry 
| union DestIpCountry; 
let MaliciousFlowsObserved = MaliciousIps 
| union SpecificCountryFlows 
| distinct SrcIp, DestIp; 
let MaliciousFlowsTransitive = MaliciousFlowsObserved 
| join kind=inner MaliciousFlowsObserved on $left.DestIp == $right.SrcIp 
| project SrcIp, DestIp = DestIp1 
| distinct SrcIp, DestIp; 
let MaliciousFlowsObserved1 = MaliciousFlowsObserved 
| union MaliciousFlowsTransitive 
| distinct SrcIp, DestIp; 
let MaliciousFlowsTransitive1 = MaliciousFlowsObserved1 
| join kind=inner MaliciousFlowsObserved1 on $left.DestIp == $right.SrcIp 
| project SrcIp, DestIp = DestIp1 
| distinct SrcIp, DestIp; 
let MaliciousFlowsObserved2 = MaliciousFlowsObserved1 
| union MaliciousFlowsTransitive1 
| distinct SrcIp, DestIp; 
MaliciousFlowsObserved2 
| project SrcIp = strcat('🖥️ ', SrcIp), DestIp = strcat('🖥️ ', DestIp)

Senaryo 4: Abonelik sınırlarını zorunlu kılma

Abonelik sınırlarını zorunlu kılmak ve farklı Azure abonelikleri arasındaki trafiğin düzgün bir şekilde segmentlere ayrıldığını güvence altına almak için trafik analizini kullanın.

NTANetAnalytics 
| where SubType == "FlowLog"  and FlowType !in ("AzurePublic","ExternalPublic","Unknown","UnknownPrivate") // Filter to flows for which we know the Subscription Details
| where FlowStartTime between (start .. end) 
| where AclGroup !contains "Unspecified" 
|extend Dest = iff(isnotempty(DestSubnet),strcat("/subscriptions/",DestSubscription,"/resourceGroups/",tostring(split(DestSubnet,"/")[0]),"/providers/Microsoft.Network/virtualNetworks/",tostring(split(DestSubnet,"/")[1])),'')
| extend Src = iff(isnotempty(SrcSubnet),strcat("/subscriptions/",SrcSubscription,"/resourceGroups/",tostring(split(SrcSubnet,"/")[0]),"/providers/Microsoft.Network/virtualNetworks/",tostring(split(SrcSubnet,"/")[1])),'')
| extend SrcSubscription = strcat("/subscriptions/",SrcSubscription), DestSubscription = strcat("/subscriptions/",DestSubscription)
| where SrcSubscription != DestSubscription // Cross Subscription
| summarize Flows = sum(CompletedFlows) by Src, Dest, SrcSubscription, DestSubscription, AclGroup,AclRule, FlowType
//| top 10 by Flows