Поделиться через


Применение принципов нулевого доверия для сегментирования сети Azure через аналитику трафика

Нулевое доверие — это стратегия безопасности. Это не продукт или услуга, а подход к проектированию и реализации следующего набора принципов безопасности.

Принцип Описание
Явная проверка Всегда осуществляйте аутентификацию и авторизацию на основе всех доступных данных.
Использование минимального доступа к привилегиям Ограничение доступа пользователей с помощью Just-In-Time и Just-Enough-Access (JIT/JEA), адаптивных политик, основанных на оценке рисков, и защиты данных.
Предположим взлом. Минимизируйте радиус взрыва и сегментируйте доступ. Проверьте сквозное шифрование и используйте аналитику, чтобы получить видимость, стимулировать обнаружение угроз и улучшать методы защиты.

При использовании нулевого доверия вы переходите от точки зрения доверия по умолчанию к принципу доверия как исключения. Встроенная возможность автоматического управления этими исключениями и оповещениями важна. Вы можете более легко обнаруживать угрозы, реагировать на угрозы и предотвращать или блокировать нежелательные события в вашей организации.

Облачная сеть Azure разработана с несколькими уровнями сегментации, которые могут выступать в качестве границ или зон доверия. Дополнительные сведения о сегментации сети на основе Azure с помощью принципов "Нулевое доверие" см. в статье "Применение принципов нулевого доверия к сегментации сетевого взаимодействия на основе Azure".

Модель зрелости концепции Zero Trust

Модель зрелости нулевого доверия (ZTMM) агентства по кибербезопасности и инфраструктуре (CISA) основана на пяти основных принципах, охватывающих функции для повышения уровня защиты нулевого доверия. Дополнительные сведения см. в разделе "Настройка облачных служб Майкрософт для модели зрелости нулевого доверия CISA"

  • Идентичность
  • Устройства
  • Сети
  • Приложения и рабочие нагрузки
  • Данные

Столпы охватывают четыре этапа пути ZTMM. Дополнительные сведения см. в разделе "Этапы пути ZTMM".

  • Традиционно
  • Начальное
  • Продвинутый
  • Оптимальный

Четыре этапа применяются к столпу "Сети", как следует из следующего.

Этап Столп сетей
Традиционно — Большой периметр / макросегментация
— ограниченная устойчивость и управляемые вручную наборы правил и конфигурация
Начальное — начальная изоляция критически важных рабочих нагрузок
— возможности сети управляют требованиями доступности для дополнительных приложений
— частичная динамическая конфигурация сети
Продвинутый — расширение механизма изоляции и устойчивости
— конфигурации адаптируются на основе оценки профилей приложений с учетом рисков
Оптимальный — Распространяйте микропериметр с помощью контроля доступа точно в срок и достаточными элементами управления, включая пропорциональную защиту.
— Конфигурация развивается в соответствии с потребностями профиля приложения

Как использовать аналитику трафика для обеспечения безопасности нулевого доверия?

Аналитика трафика предоставляет аналитические сведения о потоках сетевого трафика в среде Azure. Он использует журналы виртуальных сетевых потоков и выполняет агрегирование для уменьшения объема данных, сохраняя основные шаблоны трафика. Затем агрегированные журналы обогащены сведениями о географической, безопасности и топологии и хранятся в рабочей области Log Analytics.

Шаблоны трафика визуализируются с помощью встроенных панелей мониторинга, с возможностью настройки аналитических сведений о трафике с помощью Azure Workbooks. Панель мониторинга аналитики трафика также позволяет настраивать оповещения и инициировать расследования в ответ на потенциальные нарушения безопасности.

  • Мониторинг сетевого трафика: Захватить входящий и исходящий трафик с помощью журналов потоков и использовать аналитику трафика для обработки и визуализации этих данных. Получите аналитические сведения о шаблонах связи, использовании пропускной способности и потоках трафика между рабочими нагрузками.

  • Определите шаблоны взаимодействия с рабочей нагрузкой: Анализируйте данные аналитики трафика, чтобы понять, как ресурсы взаимодействуют между арендаторами, регионами подписок, виртуальными сетями, подсетями, протоколами, группами безопасности, службами и приложениями. Определите ненужные или аномальные шаблоны трафика, которые могут указывать на потенциальные риски безопасности.

  • Аналитические визуализации: Используйте встроенные и настраиваемые визуализации в аналитике трафика для изучения шаблонов трафика и более эффективного обнаружения аномалий.

  • Обнаружение скомпрометированных IP-адресов и ресурсов: Используйте аналитику трафика, чтобы определить потенциально скомпрометированные IP-адреса или ресурсы, помогая укрепить безопасность и обеспечить производительность.

Как развернуть сегментацию нулевого доверия (ZTS) с помощью аналитики трафика?

В качестве первого критического шага для развертывания сегментации нулевого доверия на существующем или новом развертывании Azure, пользователь должен выполнить следующие действия.

  • Просмотрите шаблоны с помощью аналитики трафика: анализ журналов потоков, чтобы определить шаблоны трафика, необходимые для рабочей нагрузки.

  • Начните с запрета по умолчанию: это начинается с удаления или отключения всех существующих правил для входящего и исходящего трафика, которые позволяют трафику проходить без ограничений (например, «Разрешить Все», «Разрешить»), и добавления явных правил запрета для входящего и исходящего трафика.

  • Создание правил выборочного разрешения: на основе аналитических сведений из аналитики трафика определяют правила, которые явно разрешают только наблюдаемый и необходимый трафик. Этот подход гарантирует, что разрешен только проверенный необходимый трафик, соответствующий принципу "Нулевого доверия" проверки явным образом.

В следующих разделах рассматриваются ключевые сценарии, в которых аналитика трафика поддерживает сегментацию для реализации принципов нулевого доверия в Azure.

Сценарий 1. Обнаружение трафика через рискованные или ограниченные регионы

Используйте аналитику трафика для обнаружения входящего или исходящего трафика в регионы с высоким уровнем риска, как определено политиками вашей организации. Например, можно определить трафик, поступающий в регионы, которые считаются конфиденциальными или ограниченными на основе требований к безопасности и соответствию требованиям вашей организации.

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

Сценарий 2. Достижение сегментации трафика на основе взаимодействия со службой Azure

Используйте аналитику трафика, чтобы получить представление о том, как различные рабочие нагрузки взаимодействуют со службами Azure. Например, рабочие нагрузки SAP могут взаимодействовать с инфраструктурой Azure Arc, а другие рабочие нагрузки, такие как среды разработки или службы повышения производительности, взаимодействуют с Azure Monitor. Эти аналитические сведения помогают понять зависимости служб, обнаруживать непредвиденные или аномальные шаблоны трафика и применять более детализированные политики безопасности с помощью микросегации.

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

Сценарий 3. Определение радиуса взрыва в случае нарушения сети

Используйте аналитику трафика для трассировки пути потенциально вредоносных IP-адресов, пытающихся взаимодействовать с ресурсами. В случае скомпрометированного виртуальной машины аналитика трафика может помочь сопоставить все связи, инициированные этой виртуальной машиной за последние 24 часа, помогая определить потенциальные утечки данных и ограничить радиус взрыва.

Следующий запрос определяет все прямые и косвенные IP-адреса, взаимодействующие с вредоносными потоками из географических регионов с высоким риском:

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)

Сценарий 4. Применение границ подписки

Используйте аналитику трафика для принудительного применения границ подписки и обеспечения правильного сегментирования трафика между различными подписками Azure.

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