Почему авторитетный сервер имен не проверяет DNSSEC-свои собственные результаты?

Если я запрашиваю у сервера имен запись, она является авторитетной, поскольку кажется, что ответ не проходит проверку DNSSEC.:

$ dig cloudflare.com @ns3.cloudflare.com

; <<>> DiG 9.16.22-Debian <<>> cloudflare.com @ns3.cloudflare.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28361
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;cloudflare.com.                        IN      A

;; ANSWER SECTION:
cloudflare.com.         300     IN      A       104.16.133.229
cloudflare.com.         300     IN      A       104.16.132.229

;; Query time: 3 msec
;; SERVER: 162.159.0.33#53(162.159.0.33)
;; WHEN: Sat Nov 20 15:29:00 CET 2021
;; MSG SIZE  rcvd: 75

Флаг «реклама» не возвращается, поэтому ответ не проверен DNSSEC. Если я задам тот же запрос -неавторизованному серверу, будет возвращен флаг "реклама":

$ dig cloudflare.com @1.1.1.1

; <<>> DiG 9.16.22-Debian <<>> cloudflare.com @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23361
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;cloudflare.com.                        IN      A

;; ANSWER SECTION:
cloudflare.com.         145     IN      A       104.16.132.229
cloudflare.com.         145     IN      A       104.16.133.229

;; Query time: 3 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Nov 20 15:35:35 CET 2021
;; MSG SIZE  rcvd: 75

Скажите, пожалуйста,:

  1. Это правильное и четко определенное поведение?
  2. По какой причине проверка не проводится?
  3. Можно ли изменить это поведение с помощью ISC bind9в конфигурации? Как?

(Если такое поведение является преднамеренным, никогда не следует настраивать сервер имен для использования собственного программного обеспечения сервера имен для разрешения, потому что для некоторых клиентских программ имеет значение, будет ли подтвержден ответ или нет:Мне было интересно, почему SSHFPзаписей не получилось сделать ssh -o VerifyHostKeyDNS <host>с самого сервера имен).

0
задан 20 November 2021 в 14:03
1 ответ

Почему авторитетный сервер имен не DNSSEC -проверяет свои собственные результаты?

Потому что он не может, не будучи сам рекурсивным сервером имен, что было бы плохо.

Чтобы полностью проверить DNSSEC, вам нужно начать с корня и пройти по всей ссылке записей DS/ DNSKEY, и авторитетный распознаватель, с которым вы консультируетесь, не является полномочным для всего этого, а только для его части вниз. ссылка на сайт.

См., например, раздел 6 RFC 4033, «Рассмотрение распознавателя».:

Резолвер, поддерживающий безопасность -, должен иметь функции, необходимые для проверки цифровых подписей с использованием как минимум обязательные -- -реализуют алгоритм (s ). Резолверы, поддерживающие безопасность -, должны также иметь возможность формировать цепочку аутентификации из нового обученную зону обратно к ключу аутентификации, как описано выше. Этот могут потребоваться дополнительные запросы к промежуточным зонам DNS для получения необходимых записей DNSKEY, DS и RRSIG. Служба безопасности -в курсе резолвер должен быть настроен по крайней мере с одним якорем доверия в качестве отправная точка, с которой он попытается установить аутентификацию цепи.

И RFC 4035, раздел §3.2.3 «Бит AD» в разделе «Рекурсивные серверы имен»:

Сторона сервера имен рекурсивного сервера имен, поддерживающего безопасность -, ДОЛЖНА НЕ устанавливайте бит AD в ответе, если только сервер имен не рассмотрит все RRsets в разделах ответа и полномочий ответа, чтобы быть аутентичный. Сторона сервера имен ДОЛЖНА устанавливать бит AD тогда и только тогда, когда сторона распознавателя рассматривает все наборы RRset в разделе ответа и любые соответствующие отрицательные ответы RR в разделе полномочий должны быть аутентичный. Сторона распознавателя ДОЛЖНА следовать процедуре, описанной в Раздел 5, чтобы определить, являются ли рассматриваемые RR подлинными. Однако для обратной совместимостирекурсивный сервер имен МОЖЕТ установить бит AD, когда ответ включает неподписанные записи CNAME RR, если эти CNAME Очевидно, что RR могли быть синтезированы из аутентичного DNAME. RR, который также входит в ответ согласно синтезу правила, описанные в [RFC2672].

Что касается :

, имеет значение, будет ли подтвержден ответ или нет.

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

Мне было интересно, почему записи SSHFP не работали при выполнении ssh -o VerifyHostKeyDNS с самого сервера имен

Какая бы проблема у вас ни возникла, она не связана ни с чем вышеперечисленным. sshдолжен использовать любой преобразователь уровня ОС, настроенный для получения данных.

См. https://github.com/openssh/libopenssh/blob/05dfdd5f54d9a1bae5544141a7ee65baa3313ecd/ssh/dns.c#L191, который находится внутри функции verify_host_key_dns:

    result = getrrsetbyname(hostname, DNS_RDATACLASS_IN,
        DNS_RDATATYPE_SSHFP, 0, &fingerprints);
    if (result) {
        verbose("DNS lookup error: %s", dns_result_totext(result));
        return -1;
    }


    if (fingerprints->rri_flags & RRSET_VALIDATED) {
        *flags |= DNS_VERIFY_SECURE;
        debug("found %d secure fingerprints in DNS",
            fingerprints->rri_nrdatas);
    } else {
        debug("found %d insecure fingerprints in DNS",
            fingerprints->rri_nrdatas);
    }

, а getrrsetbynameопределен вhttps://github.com/openssh/openssh-portable/blob/2dc328023f60212cd29504fc05d849133ae47355/openbsd-compat/getrrsetbyname.cи в основном представляет собой оболочку вокруг res_query, которая является низкоуровневой привязкой libc для выполнения DNS-запросов.

Я нашел вhttps://weberblog.net/sshfp-authenticate-ssh-fingerprints-via-dnssec/некоторые подробности о sshповедении между подтвержденной (DNSSEC)SSHFPзаписью или нет.

0
ответ дан 20 November 2021 в 16:38

Теги

Похожие вопросы