[devel] Some premium Kea extensions that are not open source (GSS-TSIG)

Evgeny Sinelnikov sin на altlinux.org
Вс Дек 10 20:27:54 MSK 2023


Добрый вечер,

дублирую выводы из разбора возможностей новой реализации dhcp-сервера
kea от ISC, для которого всплыл новый лицензионный подход к
расширениям. Для меня это было интересной неожиданностью.

Предыстория.

С одной стороны, с недавних пор старая реализация dhcp-сервер от ISC
объявлена более не обслуживаемой ("ISC has announced the end of
maintenance for ISC DHCP as of the end of 2022"):
- https://www.isc.org/dhcp/
- https://www.isc.org/blogs/isc-dhcp-eol/

Кроме того, для миграции предложен соответствующий инструментарий -
Kea Migration Assistant (KeaMA) tool (у нас в репозиторий пока не
собран):
- https://www.isc.org/dhcp_migration/
- https://gitlab.isc.org/isc-projects/keama

С другой стороны, миграция предлагается на новую реализацию Kea DHCP
(Modern, open source DHCPv4 & DHCPv6 server):
- https://www.isc.org/kea/
- https://gitlab.isc.org/isc-projects/kea


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

Лицензионный подход к расширениям - Kea Hooks Basic Commercial End
User License Agreement v2.0 (HBCEULA 2.0):
- https://www.isc.org/kea-premium-license/

То есть для kea теперь предоставляются платные, коммерческие модули в
том числе и в виде исходного кода, но только по подписке:
- https://kb.isc.org/docs/installing-the-kea-premium-hook-libraries-from-sources

И уже на системной уровне для сервера kea dhcp может возникнуть
необходимость альтернативной сборки с дополнительными внешними
плагинами, если это кому-то потребуется.


Выяснилось это при подготовке рекомендаций по развёртыванию
инфраструктры на базе новой реализации dhcp-сервера kea для обновления
dns записей в домене samba через службу kea-dhcp-ddns:
- https://kea.readthedocs.io/en/kea-2.4.1/arm/ddns.html
- https://kea.readthedocs.io/en/kea-2.4.1/arm/integrations.html#gss-tsig-overview

... Kea supports GSS-TSIG to protect DNS updates sent by the Kea
DHCP-DDNS (D2) server in a premium hook, called libddns_gss_tsig.so.


Выводы.

Получается, что для полноценного функционирования обновления
dns-записей в домене samba, есть следующие варианты:

1. Делать "ручные костыли", как и раньше (для kea эти костыли нужно
ещё готовить):
https://wiki.samba.org/index.php/Configure_DHCP_to_update_DNS_records#Create_the_script_for_the_updates

2. Покупать по подписке один из вариантов годовой лицензии у ISC:
- https://www.isc.org/shop/

3. Ожидать альтернативной реализации. Всё написано, примеры кода
других плагинов имеются. Никто не мешает написать свой
libddns_gss_tsig.so:
- https://kea.readthedocs.io/en/latest/arm/integrations.html#gss-tsig-overview
- https://kea.readthedocs.io/en/latest/arm/ddns.html

GSS-TSIG is defined in RFC 3645. The GSS-TSIG protocol itself is an
implementation of generic GSS-API v2 services, defined in RFC 2743

Secret Key Transaction Authentication for DNS (TSIG), November 2020:
- https://www.rfc-editor.org/info/rfc8945

HMAC SHA (Hashed Message Authentication Code, Secure Hash Algorithm)
TSIG Algorithm Identifiers, August 2006:
- https://www.rfc-editor.org/info/rfc4635

Generic Security Service Algorithm for Secret Key Transaction
Authentication for DNS (GSS-TSIG), October 2003:
- https://www.rfc-editor.org/info/rfc3645

Secret Key Transaction Authentication for DNS (TSIG), May 2000:
- https://www.rfc-editor.org/info/rfc2845

4. Искать другие, обходные пути. Например, если предположить, что
samba dlz-плагин для bind сможет аутентифицировать не только по
GSSAPI, то можно попытаться воспользоваться ручным "подсовыванием"
ключей, как это обычно везде и делалось.

Но это:
а) плохо масштабируется;
б) непонятно насколько легко реализуемо (это основное);
в) имеет свои издержки с точки зрения появления потенциальных уязвимостей.

Для этого требуется разбор механизма аутентификации через TSIG key
(генерируется tsig-keygen) по отношению в механизму GSS-TSIG для samba
dlz-плагина. То еcть вопрос звучит так: "Можно ли обновлять записи в
зоне обслуживаемой bind'ом через samba dlz-плагин без kerberos, то
есть без GSS-TSIG, то есть аутентифицируя на самом bind'е через
обычный TSIG Key Secret (TSIG-TKEY)?"
- https://wiki.samba.org/index.php/BIND9_DLZ_DNS_Back_End
- https://wiki.samba.org/index.php/Testing_Dynamic_DNS_Updates
- https://www.altlinux.org/ActiveDirectory/DC/BIND9_DLZ

При этом вопрос технически ставится так: "Можно ли управлять
настройками TSIG-Based Access Control (то есть правилами обновления
записей) в зоне, управляемой через dlz-плагин, для ключей
сгенерированных через tsig-keygen?"
- https://bind9.readthedocs.io/en/latest/chapter7.html#tsig

Возможно, для этого придётся внести патчи в dlz-плагин и добавить
опцию включения для такого режима.

-- 
Sin (Sinelnikov Evgeny)


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