
DNSSEC проверяет и аутентифицирует данные зоны с целью убедиться, что любые результаты DNS являются подлинными.
Даже если DNS-резолвер подтверждает, что авторитетный сервер имен отправил правильные данные без изменений, как предотвратить отправку DNS-резолвером поддельного ответа DNS DNS-клиенту?
Если DNS-резолвер не поддерживает DNSSEC, может ли он отправлять DNS-запросы на авторитетный сервер имен, для зоны которого включен DNSSEC?
Спасибо
решение1
полезен ли DNSSEC?
На этот вопрос нельзя ответить (какое бы слово вы ни использовали вместо «DNSSEC» в этом предложении), пока вы не начнете описывать то, от чего вы хотите защититься.
Когда у вас есть список рисков/уязвимостей/угроз, от которых вы хотите защититься, вы можете выяснить, какие существуют решения, и определить для каждого решения, насколько оно полезно или бесполезно.
DNSSEC
полезен против некоторых проблем DNS, но не для всех. Он сам по себе вносит новые проблемы (постоянное обслуживание подписей и ключей для одного), но также и новые функции (агрессивное кэширование всего ниже a, NXDOMAIN
если правильно проверено DNSSEC).
Даже если DNS-резолвер подтверждает, что авторитетный сервер имен отправил правильные данные без изменений, как предотвратить отправку DNS-резолвером поддельного ответа DNS DNS-клиенту?
Это ничем не отличается от сегодняшнего дня: если вы используете любой публичный DNS-резолвер ( 8.8.8.8
, 1.1.1.1
, 9.9.9.9
чтобы назвать несколько), вы, конечно, ПОЛНОСТЬЮ рискуете, что он отправит вам мусорные данные. Это компромисс. DoH/DoT ничего здесь не решает, потому что он защитит только передачу контента между вами и этим резолвером, а не сам контент. Какой контент «защищен» DNSSEC, пока доменное имя, для которого вы делаете запросы, защищено DNSSEC (это одна из частей, которую вы забываете в своих вопросах и которая фактически затрудняет DNSSEC: владелец доменного имени должен включить егоИDNS-резолверы должны использовать новые подписи и выполнять проверку; если хотя бы одна часть этого уравнения с двумя переменными отсутствует, DNSSEC бесполезен, поскольку он просто не может работать)
Так что вопрос больше вращается вокруг: какой рекурсивный сервер имен использовать и где он должен работать. Конечно, для максимального контроля вы хотите, чтобы резолвер работал на ВАШИХ машинах. Он по-прежнему может использовать внешние ресурсы и резолверы DNS там, но окончательная проверка DNSSEC должна происходить на вашем сервере имен, а не на других. Конечно, это больше работы, чем просто положиться на любой другой ресурс, который делает все DNSSEC "бесплатно" для вас.
Если DNS-резолвер не поддерживает DNSSEC, может ли он по-прежнему отправлять DNS-запросы на авторитетный сервер имен, на котором настроен DNSSEC для его зоны?
Да. Резолвер, желающий получить данные DNSSEC, должен переключить флаг «DO» в своем запросе.
Из dig
документации:
+[no]dnssec
This option requests that DNSSEC records be sent by setting the DNSSEC OK (DO) bit in the OPT record in the additional section of the query.
Что вы можете увидеть таким образом:
$ dig +dnssec example.com
; <<>> DiG 9.16.18 <<>> +dnssec example.com
;; global options: +cmd
;; Sending:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40492
;; flags: rd ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
^^
Или из §3.2.1 RFC 4035:
3.2.1. Бит DO
Сторона резольвера безопасного рекурсивного сервера имен ДОЛЖНА устанавливать бит DO при отправке запросов, независимо от состояния бита DO в инициирующем запросе, полученном стороной сервера имен. Если бит DO в инициирующем запросе не установлен, сторона сервера имен ДОЛЖНА удалять любые аутентификационные DNSSEC RR из ответа, но НЕ ДОЛЖНА удалять любые типы DNSSEC RR, которые явно запрашивал инициирующий запрос.
Если DNS-клиент (рекурсивный преобразователь) делает это И если на авторитетном сервере имен, к которому направляется запрос, включен DNSSEC (отсюда типы записей RRSIG
/ NSEC
/ NSEC3
в зонах), то преобразователь получит эти записи и затем сможет выполнить проверку DNSSEC.
Когда вы (DNS-заглушка/клиент, не являющийся резолвером) запрашиваете рекурсивный резолвер, у вас есть возможность использовать флаг CD
, определенный следующим образом:
+[no]cdflag
This option sets [or does not set] the CD (checking disabled) bit in the query. This requests the server to not perform DNSSEC validation of responses.
(остерегайтесь возможного двойного отрицания).
Если клиент не использует CD
, то проверка DNSSEC НЕ отключена, следовательно, она включена, и сервер удаления либо предоставит окончательный ответ (если DNSSEC включен для записи И проверка прошла успешно), либо ответит , NXDOMAIN
если проверка DNSSEC не прошла. Флаг AD
будет установлен, чтобы обозначить, что все записи были проверены как безопасные, если это так (если запрос поступает с рекурсивного сервера имен, этот флаг не может существовать от авторитетного, так как вам нужна полная цепочка DNSSEC от корня IANA для проверки любой заданной записи)
решение2
- В идеале вы проверяете локально на клиенте (сегодня это не так распространено, но далеко не неслыханно) или иным образом полагаетесь на безопасный сетевой путь, который может преодолеть разрыв между клиентом и доверенным проверяющим резолвером.
Этот безопасный сетевой путь может означать что-то вроде DNS-over-TLS, DNS-over-HTTPS, DNSCrypt или в некоторой степени локальную сеть (более слабый уровень доверия, но все еще полезный для подмножества сценариев атак). - Да