open atlas
↑ К треку
Основы безопасности SECF · 04 · 04

Безопасность DNS и сети с нулевым доверием

DNS решает, кому доверять, ещё до того как TLS это подтвердит, — поэтому сам запрос остаётся поверхностью атаки, о которой забывают. Урок разбирает отравление кэша, DNSSEC и DoH и то, почему индустрия сменила сетевой периметр на идентичность в каждом запросе.

SECF Senior ◷ 18 min
Уровень
ОсновыJuniorMiddleSenior

Ваш сервис делает один исходящий вызов: https://payments.internal/charge. Вы запинили TLS-сертификат, проротировали ключ, включили HSTS. Вы чувствуете себя в безопасности. Но прежде чем что-либо из этого запустится, резолвер спрашивает: «какой IP у payments.internal?» — по UDP на порт 53, открытым текстом, без аутентификации и без проверки целостности, и любое устройство на пути или отравленный кэш может ответить адресом атакующего. TLS затем честно устанавливает шифрованный, аутентифицированный канал именно к этому хосту. Криптография отработала идеально — она просто защитила разговор не с тем сервером. DNS — это решение о доверии, которое принимается раньше, чем просыпается ваш стек безопасности, и почти всю историю интернета оно по умолчанию было неаутентифицированным.

К концу урока вы поймёте, почему DNS — поверхность атаки, лежащая под TLS, что именно защищают (и не защищают) DNSSEC и DoH и почему индустрия отказалась от сетевого периметра в пользу модели нулевого доверия, построенной на идентичности в каждом запросе.

DNS — это решение о доверии, а не просто поиск

Считайте DNS трубопроводом — и будете защищать не тот слой. Резолюция имени в адрес — это момент, когда ваша система выбирает, кому доверять, и классический DNS делает этот выбор по неаутентифицированному UDP открытым текстом. В продакшене доминируют два сценария отказа.

Отравление кэша. Резолвер, кэширующий ответы, можно обманом заставить закэшировать поддельный. Атака Камински 2008 года сделала это особенно жёстким: рассылая поддельные ответы для множества случайных поддоменов, атакующему нужно выиграть лишь одну гонку с легитимным ответом, а поскольку у ранней версии протокола был всего лишь 16-битный идентификатор транзакции (65 536 значений) и известный исходный порт, эту гонку можно было выиграть за секунды на быстром канале. Отравленная запись затем отдаётся всем нижестоящим клиентам, пока не истечёт TTL. Патч — рандомизация исходного порта, добавляющая ~16 бит энтропии, — превратил секундную атаку в статистически непрактичную, но это смягчение, а не исправление: ничто в протоколе так и не аутентифицировало ответ.

Атакующий на пути и привилегия резолвера. Любой между вами и резолвером — вредоносная Wi-Fi-точка, скомпрометированный роутер, враждебный провайдер — может прочитать каждое имя, которое вы ищете (утечка приватности), и переписать ответ (атака на целостность). Ваш резолвер — один из самых привилегированных хостов в стеке: он молча решает, куда пойдёт каждое ваше соединение.

DNSSEC и DoH защищают разные вещи

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

DNSSEC подписывает DNS-записи криптографией с открытым ключом, выстраивая цепочку доверия от корневой зоны до ответа. Он гарантирует целостность и подлинность: запись, которую вы получили, — это запись, опубликованная владельцем зоны, без изменений. Он ничего не шифрует — DNSSEC-запрос и подписанный ответ по-прежнему видны на проводе — и решает отравление кэша в корне, потому что поддельный ответ не пройдёт проверку подписи. Его цена реальна: развёртывание операционно тяжёлое (ротации ключей, разрыв цепочки доверия уводит зону в офлайн), а внедрение годами буксует значительно ниже половины зон, так что полагаться на него от края до края обычно нельзя.

DoH / DoT (DNS over HTTPS / over TLS) оборачивают запрос в шифрованный транспорт. Они гарантируют конфиденциальность и целостность транспорта от наблюдателя на пути: атакующий из кофейни больше не видит и не переписывает ваши запросы. Они не аутентифицируют саму запись — ваш резолвер всё ещё может вернуть отравленный или цензурированный ответ; вы просто перенесли своё доверие на того, кто держит резолвер. То, что DoH туннелирует DNS внутри обычного HTTPS (порт 443), также объясняет его спорность: он обходит сетевой мониторинг DNS, на который опираются корпоративные и родительские фильтры.

МеханизмЗащищаетНЕ защищаетРеальная цена / подвох
DNSSECЦелостность + подлинность записи (убивает отравление кэша)Конфиденциальность — запрос и ответ по-прежнему открытым текстомТяжёлые операции (ротация ключей, разрыв цепочки); внедрение <50% зон
DoH / DoTКонфиденциальность от стороны на пути; целостность транспортаПодлинность записи — резолвер всё ещё может солгатьДоверие смещается на оператора резолвера; DoH обходит сетевую фильтрацию
Рандомизация исходного портаПоднимает сложность отравления (~+16 бит энтропии)Всё, что дал бы аутентифицированный канал — это лишь налог на вероятностьСмягчение, а не исправление; считает атакующего не на пути

Зрелое прочтение: DNSSEC плюс шифрованный транспорт — это полный ответ — подпишите запись, чтобы её нельзя было подделать, зашифруйте запрос, чтобы его нельзя было прочитать или переписать в полёте. Каждое в отдельности оставляет реальную брешь. И ни то ни другое не отвечает на более глубокий вопрос, ради которого этот урок и существует: даже при идеально разрешённом, идеально зашифрованном соединении с правильным хостом — должен ли этот вызывающий вообще иметь к нему доступ? Вот где ломается модель периметра.

Почему периметр умер: нулевое доверие

Классическая модель — это замок: жёсткий сетевой периметр (файрвол, VPN) вокруг мягкой, доверенной внутренней части. Попал внутрь VPN — и ты «в корпоративной сети», что неявно означало доверенный — плоский east-west доступ к внутренним сервисам. У этой модели один катастрофический сценарий отказа: как только атакующий внутри, он владеет всем. Фишинговый ноутбук, скомпрометированная VPN-учётка подрядчика, одно проэксплуатированное краевое устройство — и плоская внутренняя часть превращается в площадку для свободного латерального движения. Вторжение SolarWinds 2020 года — канонический пример: доверенная внутренняя позиция превратила одну точку опоры в цепочке поставок в широкий охват.

Нулевое доверие, закреплённое в NIST SP 800-207, переворачивает допущение: никогда не доверяй, всегда проверяй. Доверенной сети не существует. Расположение запроса — внутри VPN или в Wi-Fi отеля — даёт ноль неявной авторизации. Каждый отдельный запрос к ресурсу аутентифицируется и авторизуется по собственным заслугам, оценивается против идентичности пользователя и устройства, а не IP, с которого пришёл. Доверие никогда не выдаётся по сетевому положению и непрерывно переоценивается, а не раздаётся один раз при входе.

Почему это работает

Почему «сеть — это периметр» перестаёт работать именно сейчас? Два структурных сдвига. Первый: периметр растворился — SaaS, нагрузки в публичном облаке и удалённая работа означают, что ваши пользователи и сервисы больше не внутри какой-то одной сети, которую вы контролируете; обводить стеной больше нечего. Второй: допущение «внутри = безопасно» всегда было латентным багом — просто раньше оно было переживаемым. По мере того как пробои росли, а латеральное движение становилось доминирующей пост-компрометационной тактикой, цена допущения о неявном доверии в конце концов превысила цену аутентификации каждого запроса. Нулевое доверие — это не новый продукт, который покупают, а снятие допущения, которое вы больше не можете себе позволить.

Как нулевое доверие выглядит на практике: BeyondCorp и IAP

BeyondCorp от Google — эталонная реализация, рождённая из атаки Aurora 2009 года, прошедшей прямо сквозь их периметр. Ключевой компонент — identity-aware proxy (IAP): вместо VPN, который высаживает вас в сеть, каждый запрос к внутреннему приложению проходит через прокси, который в каждом запросе проверяет аутентифицированную идентичность пользователя, состояние устройства (управляемое ли оно, пропатченное, здоровое?) и политику авторизации для конкретного ресурса — и затем разрешает или запрещает. Нет сети, в которой можно было бы «находиться». Инженер попадает на внутренний дашборд из кафе ровно так же, как из офиса: через прокси, доказывая, кто он и с какого устройства, каждый раз.

Это схлопывает поверхность атаки так, как VPN никогда не мог. Украденная сессия или фишинговая учётка больше не отдают сеть; они отдают, самое большее, узкий набор ресурсов, на которые авторизована эта пара идентичность-плюс-устройство, перепроверяемый в каждом запросе — а состояние устройства может отозвать доступ в момент, когда машина выпадает из соответствия. Рукопожатие TLS 1.3 (RFC 8446), аутентифицирующее каждое из этих соединений, — криптографический фундамент, на котором стоит нулевое доверие: взаимная идентичность, прямая секретность и более быстрое рукопожатие делают проверку в каждом запросе достаточно дешёвой, чтобы делать её везде.

Выбери лучший вариант

Удалённому инженеру нужен доступ к внутреннему админ-дашборду. Из вашего доступа на основе VPN только что выфишили учётку. Выберите дизайн, следующий нулевому доверию.

Викторина

Вы включаете DoH (DNS over HTTPS) для всех клиентов и считаете, что подмена DNS теперь решена. Что всё ещё открыто?

Викторина

В архитектуре нулевого доверия (NIST SP 800-207) инженер подключён к корпоративному VPN. Что этот факт ему даёт?

Расставь шаги по порядку

Упорядочьте, что происходит в запросе нулевого доверия (IAP) к внутреннему приложению, от вызова клиента до решения разрешить/запретить:

  1. 1 Клиент запрашивает внутреннее приложение; запрос попадает на identity-aware proxy (нет VPN, нет доверенной сети)
  2. 2 Прокси аутентифицирует идентичность пользователя (SSO / взаимный TLS)
  3. 3 Прокси проверяет состояние устройства — управляемое, пропатченное, здоровое?
  4. 4 Прокси оценивает политику авторизации для этого конкретного ресурса
  5. 5 Разрешить или запретить — переоценивается на следующем запросе, не кэшируется как «доверенный»
Вспомните перед уходом
  1. 01
    Почему DNS — поверхность атаки, лежащая под TLS, и что защищает каждый из DNSSEC и DoH?
  2. 02
    Что нулевое доверие (NIST SP 800-207) заменяет и как identity-aware proxy его обеспечивает?
Итог

DNS — это решение о доверии, принимаемое раньше, чем просыпается ваш стек безопасности: классическая резолюция идёт по неаутентифицированному открытому UDP/53, так что отравление кэша (Камински) или атакующий на пути могут перенаправить вас на вредоносный хост, к которому ваш идеально настроенный TLS затем безупречно подключится — защитив разговор не с тем сервером. DNSSEC и DoH чинят ортогональные половины: DNSSEC подписывает записи ради целостности и подлинности (убивая отравление, но оставляя запросы открытым текстом и застряв ниже 50% внедрения), а DoH/DoT шифруют запрос ради конфиденциальности от наблюдателей на пути (но не остановят лгущий резолвер) — поэтому полный ответ это оба. Над резолюцией стоит более глубокий сдвиг: сетевой периметр умер, потому что SaaS, облако и удалённая работа растворили стену, а «внутри = доверенный» превращал каждую точку опоры в плоское латеральное движение. Нулевое доверие (NIST SP 800-207) вовсе убирает сетевое положение как сигнал доверия — никогда не доверяй, всегда проверяй, — а identity-aware proxy из BeyondCorp обеспечивает это, аутентифицируя идентичность пользователя, состояние устройства и политику для конкретного ресурса в каждом отдельном запросе, стоя на TLS 1.3. Теперь, увидев систему, которая выдаёт доступ потому, что запрос пришёл «изнутри VPN», ваш первый вопрос: что здесь на самом деле аутентифицируется — идентичность и устройство или просто IP?

Практика

Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.

вспомнитьприменитьуглубить0 из 7 завершено

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

Примени это

Примени этот урок в реальном проекте.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.