[devel] Обновление до krb5-1.15.1

Alexander Bokovoy ab на altlinux.org
Ср Сен 13 00:09:17 MSK 2017


On Tue, Sep 12, 2017 at 4:39 PM, Evgeny Sinelnikov <sin на altlinux.org> wrote:
> Здравствуйте,
>
> я заметил целый ряд новых патчей и пока не понял какие из них нам нужны.
>
> fedora-Add-KDC-policy-pluggable-interface/fedora-Add-KDC-policy-pluggable-interface.patch
> fedora-Add-KDC-policy-pluggable-interface/fedora-Add-timestamp-helper-functions.patch
> fedora-Add-KDC-policy-pluggable-interface/fedora-Add-timestamp-tests.patch
> fedora-Add-KDC-policy-pluggable-interface/fedora-Add-y2038-documentation.patch
> fedora-Add-KDC-policy-pluggable-interface/fedora-Allow-clock-skew-in-krb5-gss_context_time.patch
> fedora-Add-KDC-policy-pluggable-interface/fedora-Fix-bugs-in-kdcpolicy-commit.patch
> fedora-Add-KDC-policy-pluggable-interface/fedora-Fix-in_clock_skew-and-use-it-in-AS-client-code.patch
> fedora-Add-KDC-policy-pluggable-interface/fedora-Make-timestamp-manipulations-y2038-safe.patch
> fedora-Add-KDC-policy-pluggable-interface/fedora-Use-krb5_timestamp-where-appropriate.patch
>
> Make-certauth-eku-module-restrictive-only/fedora-Add-hostname-based-ccselect-module.patch
> Make-certauth-eku-module-restrictive-only/fedora-Add-PKINIT-test-case-for-generic-client-cert.patch
> Make-certauth-eku-module-restrictive-only/fedora-Add-test-cert-with-no-extensions.patch
> Make-certauth-eku-module-restrictive-only/fedora-Convert-some-pkiDebug-messages-to-TRACE-macros.patch
> Make-certauth-eku-module-restrictive-only/fedora-Fix-certauth-built-in-module-returns.patch
>
> fedora-Add-support-to-query-the-SSF-of-a-GSS-context.patch
> fedora-Preserve-GSS-context-on-init-accept-failure.patch
> fedora-Prevent-KDC-unset-status-assertion-failures.patch
> fedora-Remove-incomplete-PKINIT-OCSP-support.patch
>
> В них имеется исправление CVE-2017-11368, которое судя по всем нас не
> затрагивает (в этом я пока не разобрался) и KDC policy pluggable
> interface, который непонятно нужен ли нам. Его и дальше придётся
> тянуть из апстримного гита и патчей федоры.
Я думаю, что мы можем обсудить это в Калуге.

>>> - до начала теста (1 - для r1, 2 - для r2)
>>> - сразу после kinit (3 - для r1, 4 - для r2)
>> Спасибо. Я поговорю сегодня с Робби (мейнтейнер krb5 в Федоре).
>
> Я так и не понял чем здесь всё решилось. Вопрос, изначально, ставился так:
>
>>> При работе с ccache collection код использует тот реалм, который
>>> указан в имени принципала. Если он там отсутствует, то применяется
>>> тот, который указан в качестве умолчания в krb5.conf.
>>>
>>> Далее, если в krb5.conf есть dns_canonicalize_hostname=true, то
>>> localhost будет разрешен через getaddrinfo() и превратится в
>>> localhost.localdomain.
>>> Поскольку реалм не указан и прямого соответствия в domain_realm секции
>>> krb5.conf нет, то используется реалм по умолчанию.
>
> Хотя в коде указано так:
>
>     retval = get_boolean(ctx, KRB5_CONF_DNS_CANONICALIZE_HOSTNAME, 1, &tmp);
>     if (retval)
>         goto cleanup;
>     ctx->dns_canonicalize_hostname = tmp;
>
> То есть dns_canonicalize_hostname=true, по умолчанию, получается.
Я поговорил с Робби и он сказал, что многие тесты при сборке не
запускаются. Это один из них. Связано это с тем, что в сборочной среде
они не проходят, требуют больше, чем получается предоставить.
У меня, например, при сборке в COPR недоступны хранение сессионных
ключей в ядре (keyctl session, etc), поэтому приходится и вовсе
отключать make check.

> Я так понял, что в федоре решили вопрос так:
>
> commit ccd78d8ee908015ca558e7428c27151cb1af5579
> Author: Robbie Harwood <rharwood на redhat.com>
> Date:   Wed Aug 2 17:02:46 2017 +0000
>
>     Disable dns_canonicalize_hostname.  This may break some setups.
>
Это другое. К сожалению, развязать использование CNAME и
каноникализацию в рамках текущего кода в krb5 нельзя. Выключение
каноникализации поломало целый ряд конфигураций, где сервисы были
выписаны на реальные машины, а пользователи обращались к ресурсам,
которые представляют собой CNAME к этим машинам. Например,
www.example.com, где www.example.com -- CNAME для A-записи
some.host.example.net. То есть, реальное имя сервиса --
HTTP/some.host.example.net.

Порешили, что поправим каноникализацию так, чтобы CNAME резолвить
можно было, а остальное -- нет.

-- 
/ Alexander Bokovoy


Подробная информация о списке рассылки Devel