Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk minta Kusto Query Language (KQL) lekérdezéseket tartalmaz a forgalomelemzési adatok hatékony elemzéséhez. A Traffic Analytics feldolgozza a virtuális hálózat (VNet) folyamatnaplóit és a hálózati biztonsági csoport (NSG) folyamatnaplóit, hogy részletes elemzéseket nyújtson a hálózati forgalmi mintákról, a biztonsági eseményekről és a teljesítménymetrikákról.
A következő lekérdezésekkel:
- A hálózati forgalmi minták és a legmagasabb kommunikációs végpontok azonosítása
- Biztonsági események monitorozása és a lehetséges fenyegetések elemzése
- Hálózati csatlakozási problémák elhárítása
- A hálózati teljesítmény és az erőforrás-kihasználtság optimalizálása
Előfeltételek
- A folyamatnaplókhoz konfigurált forgalomelemzés. További információ: Forgalomelemzés engedélyezése vagy letiltása.
- Hozzáférés a Log Analytics-munkaterülethez, ahol a folyamatnapló adatait tárolja. További információ: Log Analytics-munkaterület áttekintése.
NTANetAnalytics-lekérdezések
Ez a szakasz minta lekérdezéseket biztosít az NTANetAnalytics táblához, amelyekkel elemezheti a virtuális hálózati forgalomelemzési adatokat. Az NTANetAnalytics tábla összesített folyamatnapló-adatokat tartalmaz továbbfejlesztett hálózati elemzési információkkal. A táblázatsémával és az elérhető mezőkkel kapcsolatos további információkért lásd: NTANetAnalytics.
Nyilvános IP-címekkel kommunikáló alhálózatok listázása
Az alábbi lekérdezéssel listázhatja az összes olyan alhálózatot, amely az elmúlt 30 napban nem Azure-beli nyilvános IP-címekkel kommunikált.
NTANetAnalytics
| where SubType == "FlowLog" and FlowStartTime > ago(30d) and FlowType == "ExternalPublic"
| project SrcSubnet, DestSubnet
Az egymással kommunikáló alhálózatok listázása
Az alábbi lekérdezéssel listázhatja az összes olyan alhálózatot, amely az elmúlt 30 nap során forgalmat cserélt egymással, valamint a teljes bájtcserét.
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
Régiók közötti forgalom megtekintése
Az alábbi lekérdezés segítségével megtekintheti az elmúlt 30 nap régión belüli és régiók közötti forgalmát.
NTANetAnalytics
| where TimeGenerated > ago(30d)
| project SrcRegion, DestRegion, BytesDestToSrc, BytesSrcToDest
| where isnotempty(SrcRegion) and isnotempty(DestRegion)
| summarize TransferredBytes=sum(BytesDestToSrc+BytesSrcToDest) by SrcRegion, DestRegion
Forgalom megtekintése előfizetés alapján
Az alábbi lekérdezéssel megtekintheti az Azure-forgalmat előfizetések szerint csoportosítva az elmúlt 30 napban.
NTANetAnalytics
| where TimeGenerated > ago(30d)
| project SrcSubscription, DestSubscription, BytesDestToSrc, BytesSrcToDest
| where isnotempty(SrcSubscription) and isnotempty(DestSubscription)
| summarize TransferredBytes=sum(BytesDestToSrc+BytesSrcToDest) by SrcSubscription, DestSubscription
A legtöbb helyszíni forgalmat fogadó virtuális gépek listázása
Az alábbi lekérdezés segítségével ellenőrizheti, hogy mely virtuális gépek kapják a legtöbb helyszíni forgalmat.
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
A legtöbb helyszíni forgalmat fogadó IP-címek listázása
Az alábbi lekérdezés segítségével ellenőrizheti, hogy mely IP-címek kapják a legtöbb helyszíni forgalmat.
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
Virtuális gépre vagy onnan érkező forgalmat küldő vagy fogadó IP-címek listázása
Az alábbi lekérdezéssel listázhatja azokat az IP-címeket, amelyek az elmúlt 30 napban egy virtuális géppel cseréltek adatokat.
NTANetAnalytics
| where TimeGenerated > ago(30d)
| where SrcIp == "10.1.1.8" and strlen(DestIp)>0
| summarize TotalBytes=sum(BytesDestToSrc+BytesSrcToDest) by SrcIp, DestIp
ExpressRoute-forgalom megtekintése
Az alábbi lekérdezéssel megtekintheti az ExpressRoute-kapcsolatokon keresztüli forgalmat az elmúlt 30 napban.
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
Terheléselosztó forgalomeloszlását tekintheti meg
Az alábbi lekérdezéssel megtekintheti annak az alkalmazásnak a forgalomeloszlását, amely előtt terheléselosztó található.
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
A virtuális gépek által fogadott forgalom szórásának ellenőrzése
A következő lekérdezéssel ellenőrizheti a helyszíni gépekről érkező virtuális gépek által fogadott forgalom szórását.
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-címek által fogadott forgalom szórásának ellenőrzése
A következő lekérdezéssel ellenőrizheti a helyszíni gépekről érkező IP-címek által fogadott forgalom szórását.
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 lekérdezések
Ez a szakasz minta lekérdezéseket biztosít az NTAIpDetails táblához, amellyel IP-specifikus információkat elemezhet a forgalomelemzési adatokban. További információ: NTAIpDetails.
Folyamattípusok és nyilvános IP-címek megtekintése
Az alábbi lekérdezéssel megismerheti a forgalomtípusokat és a nyilvános IP-címek helyét a forgalomelemzési adatokban.
NTAIpDetails
| distinct FlowType, PublicIpDetails, Location
Rosszindulatú folyamattípusok megtekintése
A következő lekérdezés használatával megtekintheti a száltípusokat a rosszindulatú folyamatokban.
NTAIpDetails
| where TimeGenerated > ago(30d)
| where FlowType == "MaliciousFlow"
| summarize count() by ThreatType
| render piechart
AzureNetworkAnalytics_CL lekérdezések
Ez a szakasz minta lekérdezéseket biztosít a AzureNetworkAnalytics_CL lekérdezési táblához, amellyel elemezheti a traffic analytics NSG-folyamatnaplóinak adatait.
A nyilvános IP-címekkel kommunikáló összes alhálózat listázása
Az alábbi lekérdezéssel listázhatja az összes olyan alhálózatot, amely az elmúlt 30 napban nem Azure-beli nyilvános IP-címekkel kommunikált.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowStartTime_t >= ago(30d) and FlowType_s == "ExternalPublic"
| project Subnet1_s, Subnet2_s
A nyilvános IP-címekkel kommunikáló folyamatok blobútvonalának megtekintése
Az alábbi lekérdezés használatával megtekintheti az előző lekérdezés folyamatainak blobútvonalát.
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
Az előző lekérdezés egy URL-címet hoz létre a blob közvetlen eléréséhez az alábbiak szerint:
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
A legtöbb helyszíni forgalmat fogadó virtuális gépek listázása
Az alábbi lekérdezés segítségével ellenőrizheti, hogy mely virtuális gépek kapják a legtöbb helyszíni forgalmat.
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
A legtöbb helyszíni forgalmat fogadó IP-címek listázása
Az alábbi lekérdezés segítségével ellenőrizheti, hogy mely IP-címek kapják a legtöbb helyszíni forgalmat.
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
A virtuális gépek által fogadott forgalom szórásának ellenőrzése
A következő lekérdezéssel ellenőrizheti a helyszíni gépekről érkező virtuális gépek által fogadott forgalom szórását.
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-címek által fogadott forgalom szórásának ellenőrzése
A következő lekérdezéssel ellenőrizheti a helyszíni gépekről érkező IP-címek által fogadott forgalom szórását.
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
Ellenőrizze, hogy mely portok érhetők el vagy tilthatók le az NSG-szabályokkal rendelkező IP-párok között
Az alábbi lekérdezéssel ellenőrizheti, hogy mely portok érhetők el (vagy tilthatók le) az NSG-szabályokkal rendelkező IP-párok között.
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
Ismétlődő rekordok megakadályozása
Ha a kapcsolat mindkét oldalán engedélyezve van a folyamatnaplózás, a folyamat több eszközön is rögzíthető. Ennek eredményeképpen ismétlődő adatok jelenhetnek meg, ha az összes folyamatnapló ugyanabban a Log Analytics-munkaterületen van összesítve. Szükséges a duplikációk belefoglalása FlowDirection vagy MACAddress megakadályozása, valamint a rekordok megkülönböztetése.
Folyamat/kapcsolat esetén:
-
MacAddressA folyamat rögzítésére szolgáló eszköz MAC-jének jelölése. -
SrcIpannak az eszköznek az IP-címét jelöli, amelyről a kapcsolatot kezdeményezték. -
DestIpannak az eszköznek az IP-címét jelöli, amelyhez a kapcsolat létrejött. -
FlowDirectiona kapcsolat irányát jelöli az eszközre vonatkozóan. Ha például a VM1 -ből (IP:10.0.0.4és MAC:A1:B1:C1:D1:E1:F1) csatlakozik a VM2-hez (IP:10.0.0.5és MAC:A2:B2:C2:D2:E2:F2), ha a folyamat a VM1-ben van rögzítve, akkorFlowDirectionez a folyamat leszOutbound, és ha a folyamat a VM2-ben van rögzítve, akkorFlowDirectionez a folyamat leszInbound. -
BytesSrcToDest/PacketsSrcToDesta forrásból a célba küldött bájtokat vagy csomagokat jelöli, függetlenül attól, hogy hol lettek rögzítve. -
BytesDestToSrc/PacketsDestToSrca célhelyről a forrásnak küldött bájtokat vagy csomagokat jelöli, függetlenül attól, hogy hol rögzítették őket.
Ha például a VM1 és a VM2 közötti kapcsolat az alábbi mezőkkel történik.
| virtuális gép | SrcIp | DestIp | MAC | BytesSrcToDest | BytesDestToSrc | FlowDirection |
|---|---|---|---|---|---|---|
| Virtuális gép1 | 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 | Bejövő |
Az alábbi lekérdezések bármelyikével kiszámíthatja egy IP-címmel és MAC-címmel 10.0.0.4A1:B1:C1:D1:E1:F1rendelkező eszköz kimenő bájtjainak teljes mennyiségét az eszköz által kezdeményezett kapcsolatokhoz.
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);
Hasonlóképpen az alábbi lekérdezések bármelyikével kiszámíthatja egy IP-címmel és MAC-címmel 10.0.0.4A1:B1:C1:D1:E1:F1rendelkező eszköz kimenő bájtjainak teljes kimenő bájtját az eszköz más eszközei által kezdeményezett kapcsolatok esetében.
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)
Az eszköz kimenő bájtjainak teljes kiszámításához használja a következő lekérdezést:
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;