Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, trafik analizi verilerini etkili bir şekilde çözümlemenize yardımcı olacak örnek Kusto Sorgu Dili (KQL) sorguları sağlanmaktadır. Trafik analizi, ağ trafiği desenleri, güvenlik olayları ve performans ölçümleri hakkında ayrıntılı içgörüler sağlamak için sanal ağ (VNet) akış günlüklerini ve ağ güvenlik grubu (NSG) akış günlüklerini işler.
Şu sorguları kullanarak:
- Ağ trafiği desenlerini ve en çok iletişimde olan uç noktaları belirleme
- Güvenlik olaylarını izleme ve olası tehditleri analiz etme
- Ağ bağlantısı sorunlarını giderme
- Ağ performansını ve kaynak kullanımını iyileştirme
Önkoşullar
- Akış günlükleriniz için yapılandırılmış trafik analizi. Daha fazla bilgi için bkz. Trafik analizini etkinleştirme veya devre dışı bırakma.
- Akış günlüğü verilerinizin depolandığı Log Analytics çalışma alanına erişim. Daha fazla bilgi için bkz . Log Analytics çalışma alanına genel bakış.
NTANetAnalytics sorguları
Bu bölümde, Sanal Ağ trafik analizi verilerinizi analiz etmek için kullanabileceğiniz NTANetAnalytics tablosu için örnek sorgular sağlanır. NTANetAnalytics tablosu, gelişmiş ağ analizi bilgilerine sahip toplu akış günlüğü verileri içerir. Tablo şeması ve kullanılabilir alanlar hakkında daha fazla bilgi için bkz. NTANetAnalytics.
Genel IP'lerle etkileşim kuran alt ağları listeleme
Son 30 gün içinde Azure dışı genel IP'lerle etkileşim kuran tüm alt ağları listelemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where SubType == "FlowLog" and FlowStartTime > ago(30d) and FlowType == "ExternalPublic"
| project SrcSubnet, DestSubnet
Birbirleriyle etkileşim kuran alt ağları listeleme
Son 30 gün içinde birbiriyle trafik alışverişinde bulunan tüm alt ağları ve değiştirilen toplam baytları listelemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where SubType == 'FlowLog' and FaSchemaVersion == '3' and TimeGenerated > ago(30d)
| where isnotempty(SrcSubnet) and isnotempty(DestSubnet)
| summarize TotalBytes=sum(BytesSrcToDest + BytesDestToSrc) by SrcSubnet, DestSubnet,L4Protocol,DestPort
Bölgeler arası trafiği görüntüleme
Son 30 gün içindeki bölgesel ve bölgesel trafiği görüntülemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where TimeGenerated > ago(30d)
| project SrcRegion, DestRegion, BytesDestToSrc, BytesSrcToDest
| where isnotempty(SrcRegion) and isnotempty(DestRegion)
| summarize TransferredBytes=sum(BytesDestToSrc+BytesSrcToDest) by SrcRegion, DestRegion
Aboneliğe göre trafiği görüntüleme
Son 30 gün içindeki aboneliklere göre gruplandırılmış Azure trafiğini görüntülemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where TimeGenerated > ago(30d)
| project SrcSubscription, DestSubscription, BytesDestToSrc, BytesSrcToDest
| where isnotempty(SrcSubscription) and isnotempty(DestSubscription)
| summarize TransferredBytes=sum(BytesDestToSrc+BytesSrcToDest) by SrcSubscription, DestSubscription
Şirket içi trafiğin çoğunu alan sanal makineleri listeleme
Hangi sanal makinelerin şirket içi trafiği en çok aldığını denetlemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where SubType == "FlowLog" and FlowType == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(SrcVm, DestVm) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows + DeniedInFlows + AllowedOutFlows + DeniedOutFlows // For bytes use: | extend traffic = InboundBytes + OutboundBytes
| make-series TotalTraffic = sum(traffic) default = 0 on FlowStartTime from datetime(<time>) to datetime(<time>) step 1m by vm
| render timechart
Şirket içi trafiğin çoğunu alan IP'leri listeleme
Şirket içi trafiğin en çok hangi IP'leri aldığını denetlemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where SubType == "FlowLog" and FlowType == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(SrcIp, DestIp) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows + DeniedInFlows + AllowedOutFlows + DeniedOutFlows // For bytes use: | extend traffic = InboundBytes + OutboundBytes
| make-series TotalTraffic = sum(traffic) default = 0 on FlowStartTime from datetime(<time>) to datetime(<time>) step 1m by vm
| render timechart
Sanal makineye gelen veya sanal makineden trafik gönderen veya alan IP'leri listeleme
Son 30 gün içinde IP adresini kullanarak bir sanal makineyle veri alışverişinde bulunan tüm IP'leri listelemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where TimeGenerated > ago(30d)
| where SrcIp == "10.1.1.8" and strlen(DestIp)>0
| summarize TotalBytes=sum(BytesDestToSrc+BytesSrcToDest) by SrcIp, DestIp
ExpressRoute trafiğini görüntüleme
Son 30 gün içinde ExpressRoute bağlantıları üzerinden trafiği görüntülemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where SubType == 'FlowLog' and TimeGenerated > ago(30d)
| where isnotnull(SrcExpressRouteCircuit) or isnotnull(DestExpressRouteCircuit)
| extend TargetResourceName = tostring(split(TargetResourceId, "/")[2])
| summarize TotalBytes=sum(BytesSrcToDest + BytesDestToSrc) by TargetResourceName, bin(TimeGenerated, 1d)
| render columnchart
Yük dengeleyici trafik dağıtımlarını görüntüleme
Önünde yük dengeleyici bulunan uygulamanızın trafik dağıtımını görüntülemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where SubType == 'FlowLog' and TimeGenerated > ago(30d)
| where SrcLoadBalancer contains 'web' or DestLoadBalancer contains 'web'
| summarize TotalBytes = sum(BytesSrcToDest + BytesDestToSrc) by tostring(SrcIp)
| render piechart
Sanal makineler tarafından alınan trafikte standart sapması denetleyin
Şirket içi makinelerden sanal makineler tarafından alınan trafikte standart sapması denetlemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where SubType == "FlowLog" and FlowType == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(SrcVm, DestVm) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows + DeniedInFlows + AllowedOutFlows + DeniedOutFlows // For bytes use: | extend traffic = InboundBytes + OutboundBytes
summarize deviation = stdev(traffic) by vm
IP'ler tarafından alınan trafikte standart sapması denetleyin
Şirket içi makinelerden IP'ler tarafından alınan trafikte standart sapması denetlemek için aşağıdaki sorguyu kullanın.
NTANetAnalytics
| where SubType == "FlowLog" and FlowType == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(SrcIp, DestIp) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows + DeniedInFlows + AllowedOutFlows + DeniedOutFlows // For bytes use: | extend traffic = InboundBytes + OutboundBytes
| summarize deviation = stdev(traffic) by IP
NTAIpDetails sorguları
Bu bölümde, trafik analizi verilerinizdeki IP'ye özgü bilgileri analiz etmek için kullanabileceğiniz NTAIpDetails tablosu için örnek sorgular sağlanır. Daha fazla bilgi için bkz. NTAIpDetails.
Akış türlerini ve genel IP konumlarını görüntüleme
Akış türleri ve trafik analizi verilerinizdeki genel IP'lerin konumu hakkında bilgi edinmek için aşağıdaki sorguyu kullanın.
NTAIpDetails
| distinct FlowType, PublicIpDetails, Location
Kötü amaçlı akış türlerini görüntüleme
Kötü amaçlı akışlardaki iş parçacığı türlerini görüntülemek için aşağıdaki sorguyu kullanın.
NTAIpDetails
| where TimeGenerated > ago(30d)
| where FlowType == "MaliciousFlow"
| summarize count() by ThreatType
| render piechart
sorguları AzureNetworkAnalytics_CL
Bu bölümde, trafik analizi NSG akış günlükleri verilerinizi analiz etmek için kullanabileceğiniz AzureNetworkAnalytics_CL sorguları tablosu için örnek sorgular sağlanır.
Genel IP'lerle etkileşim kuran tüm alt ağları listeleme
Son 30 gün içinde Azure dışı genel IP'lerle etkileşim kuran tüm alt ağları listelemek için aşağıdaki sorguyu kullanın.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowStartTime_t >= ago(30d) and FlowType_s == "ExternalPublic"
| project Subnet1_s, Subnet2_s
Genel IP'lerle etkileşim kuran akışların blob yolunu görüntüleme
Önceki sorgudaki akışların blob yolunu görüntülemek için aşağıdaki sorguyu kullanın.
let TableWithBlobId =
(AzureNetworkAnalytics_CL
| where SubType_s == "Topology" and ResourceType == "NetworkSecurityGroup" and DiscoveryRegion_s == Region_s and IsFlowEnabled_b
| extend binTime = bin(TimeProcessed_t, 6h),
nsgId = strcat(Subscription_g, "/", Name_s),
saNameSplit = split(FlowLogStorageAccount_s, "/")
| extend saName = iif(arraylength(saNameSplit) == 3, saNameSplit[2], '')
| distinct nsgId, saName, binTime)
| join kind = rightouter (
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog"
| extend binTime = bin(FlowEndTime_t, 6h)
) on binTime, $left.nsgId == $right.NSGList_s
| extend blobTime = format_datetime(todatetime(FlowIntervalStartTime_t), "yyyy MM dd hh")
| extend nsgComponents = split(toupper(NSGList_s), "/"), dateTimeComponents = split(blobTime, " ")
| extend BlobPath = strcat("https://", saName,
"@insights-logs-networksecuritygroupflowevent/resoureId=/SUBSCRIPTIONS/", nsgComponents[0],
"/RESOURCEGROUPS/", nsgComponents[1],
"/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/", nsgComponents[2],
"/y=", dateTimeComponents[0], "/m=", dateTimeComponents[1], "/d=", dateTimeComponents[2], "/h=", dateTimeComponents[3],
"/m=00/macAddress=", replace(@"-", "", MACAddress_s),
"/PT1H.json")
| project-away nsgId, saName, binTime, blobTime, nsgComponents, dateTimeComponents;
TableWithBlobId
| where SubType_s == "FlowLog" and FlowStartTime_t >= ago(30d) and FlowType_s == "ExternalPublic"
| project Subnet_s , BlobPath
Önceki sorgu bloba doğrudan erişmek için aşağıdaki gibi bir URL oluşturur:
https://{storageAccountName}@insights-logs-networksecuritygroupflowevent/resoureId=/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroup}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{networkSecurityGroupName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json
Şirket içi trafiğin çoğunu alan sanal makineleri listeleme
Hangi sanal makinelerin şirket içi trafiği en çok aldığını denetlemek için aşağıdaki sorguyu kullanın.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowType_s == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(VM1_s, VM2_s) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows_d + DeniedInFlows_d + AllowedOutFlows_d + DeniedOutFlows_d // For bytes use: | extend traffic = InboundBytes_d + OutboundBytes_d
| make-series TotalTraffic = sum(traffic) default = 0 on FlowStartTime_t from datetime(<time>) to datetime(<time>) step 1 m by vm
| render timechart
Şirket içi trafiğin çoğunu alan IP'leri listeleme
Şirket içi trafiğin en çok hangi IP'leri aldığını denetlemek için aşağıdaki sorguyu kullanın.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowType_s == "S2S"
//| where <Scoping condition>
| mvexpand IP = pack_array(SrcIP_s, DestIP_s) to typeof(string)
| where isnotempty(IP)
| extend traffic = AllowedInFlows_d + DeniedInFlows_d + AllowedOutFlows_d + DeniedOutFlows_d // For bytes use: | extend traffic = InboundBytes_d + OutboundBytes_d
| make-series TotalTraffic = sum(traffic) default = 0 on FlowStartTime_t from datetime(<time>) to datetime(<time>) step 1 m by IP
| render timechart
Sanal makineler tarafından alınan trafikte standart sapması denetleyin
Şirket içi makinelerden sanal makineler tarafından alınan trafikte standart sapması denetlemek için aşağıdaki sorguyu kullanın.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowType_s == "S2S"
//| where <Scoping condition>
| mvexpand vm = pack_array(VM1_s, VM2_s) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows_d + DeniedInFlows_d + AllowedOutFlows_d + DeniedOutFlows_d // For bytes use: | extend traffic = InboundBytes_d + utboundBytes_d
| summarize deviation = stdev(traffic) by vm
IP'ler tarafından alınan trafikte standart sapması denetleyin
Şirket içi makinelerden IP'ler tarafından alınan trafikte standart sapması denetlemek için aşağıdaki sorguyu kullanın.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowType_s == "S2S"
//| where <Scoping condition>
| mvexpand IP = pack_array(SrcIP_s, DestIP_s) to typeof(string)
| where isnotempty(IP)
| extend traffic = AllowedInFlows_d + DeniedInFlows_d + AllowedOutFlows_d + DeniedOutFlows_d // For bytes use: | extend traffic = InboundBytes_d + OutboundBytes_d
| summarize deviation = stdev(traffic) by IP
NSG kurallarıyla IP çiftleri arasında erişilebilen veya engellenen bağlantı noktalarını denetleyin
NSG kurallarıyla IP çiftleri arasında erişilebilen (veya engellenen) bağlantı noktalarını denetlemek için aşağıdaki sorguyu kullanın.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and TimeGenerated between (startTime .. endTime)
| extend sourceIPs = iif(isempty(SrcIP_s), split(SrcPublicIPs_s," "), pack_array(SrcIP_s)),
destIPs = iif(isempty(DestIP_s), split(DestPublicIPs_s," "), pack_array(DestIP_s))
| mvexpand SourceIp = sourceIPs to typeof(string)
| mvexpand DestIp = destIPs to typeof(string)
| project SourceIp = tostring(split(SourceIp, "|")[0]), DestIp = tostring(split(DestIp, "|")[0]), NSGList_s, NSGRule_s, DestPort_d, L4Protocol_s, FlowStatus_s
| summarize DestPorts= makeset(DestPort_d) by SourceIp, DestIp, NSGList_s, NSGRule_s, L4Protocol_s, FlowStatus_s
Yinelenen kayıtları engelleme
Bir bağlantının her iki tarafında akış günlüğü etkinleştirildiyse, bir akış birden çok cihazda yakalanabilir. Sonuç olarak, tüm akış günlükleri aynı Log Analytics çalışma alanında toplanıyorsa yinelenen veriler görüntülenebilir. Yinelenenleri eklemek FlowDirection veya MACAddress önlemek ve kayıtlar arasında ayrım yapmak gerekir.
Akışta/bağlantıda:
-
MacAddressakışın yakalandığı cihazın MAC'ini belirtir. -
SrcIpbağlantının başlatıldığı cihazın IP adresini belirtir. -
DestIpbağlantının yapıldığı cihazın IP adresini belirtir. -
FlowDirectionbağlantının cihaza göre yönünü belirtir. Örneğin, VM1'den (IP:10.0.0.4ve MAC:A1:B1:C1:D1:E1:F1) VM2'ye (IP:10.0.0.5ve MAC:A2:B2:C2:D2:E2:F2) bağlantı yapıldığında, akış VM1'deFlowDirectionyakalanırsa, bu akışOutboundiçin ve VM2'deFlowDirectionakış yakalanırsa bu akış olurInbound. -
BytesSrcToDest/PacketsSrcToDestnerede yakalandıklarından bağımsız olarak kaynaktan hedefe gönderilen baytları veya paketleri belirtir. -
BytesDestToSrc/PacketsDestToSrcyakalandıkları yerden bağımsız olarak hedeften kaynağa gönderilen baytları veya paketleri belirtir.
Örneğin, aşağıdaki alanlarla VM1'denVM2'ye bir bağlantı yapılırsa.
| VM | SrcIp | DestIp | MAC | BytesSrcToDest | BytesDestToSrc | FlowDirection |
|---|---|---|---|---|---|---|
| VM1 | 10.0.0.4 | 10.0.0.5 | A1-B1-C1-D1-E1-F1 | 100 | 200 | Outbound |
| VM2 | 10.0.0.4 | 10.0.0.5 | A2-B2-C2-D2-E2-F2 | 100 | 200 | Gelen |
Bu cihaz tarafından başlatılan bağlantılarda IP adresi ve MAC adresi 10.0.0.4A1:B1:C1:D1:E1:F1olan bir cihazın toplam giden baytlarını hesaplamak için aşağıdaki sorgulardan herhangi birini kullanabilirsiniz.
NTANetAnalytics
| where SubType == "FlowLog"
| where SrcIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1" and FlowDirection == "Outbound"
| summarize totalIniBytes = sum(BytesSrcToDest);
NTANetAnalytics
| where SubType == "FlowLog"
| where SrcIp == "10.0.0.4" and FlowDirection == "Outbound"
| summarize totalIniBytes = sum(BytesSrcToDest);
NTANetAnalytics
| where SubType == "FlowLog"
| where SrcIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1"
| summarize totalIniBytes = sum(BytesSrcToDest);
Benzer şekilde, başka bir cihaz tarafından bu cihaza başlatılan bağlantılar için IP adresi ve MAC adresi 10.0.0.4A1:B1:C1:D1:E1:F1olan bir cihazın toplam giden baytlarını hesaplamak için aşağıdaki sorgulardan herhangi birini kullanabilirsiniz.
NTANetAnalytics
| where DestIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1" and FlowDirection == "Inbound"
| summarize totalNoniniBytes = sum(BytesDestToSrc)
NTANetAnalytics
| where DestIp == "10.0.0.4" and FlowDirection == "Inbound"
| summarize totalNoniniBytes = sum(BytesDestToSrc)
NTANetAnalytics
| where DestIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1"
| summarize totalNoniniBytes = sum(BytesDestToSrc)
Aşağıdaki sorguyu kullanarak bir cihaz için toplam giden baytları hesaplayabilirsiniz:
let InitiatedByVM = NTANetAnalytics
| where SubType == "FlowLog"
| where SrcIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1" and FlowDirection == "Outbound"
| summarize totalIniBytes = sum(BytesSrcToDest);
let NotInitiatedByVM = NTANetAnalytics
| where DestIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1" and FlowDirection == "Inbound"
| summarize totalNoniniBytes = sum(BytesDestToSrc);
InitiatedByVM
| join kind=fullouter NotInitiatedByVM on FlowEndTime
| extend Time = iff(isnotnull(FlowEndTime), FlowEndTime, FlowEndTime1)
| summarize totalMB = (sum(totalIniBytes) + sum(totalNoniniBytes)) / 1024.0 /1024.0;