Исследование проблемы поиска КД MS AD в доверительных отношениях с доменами FreeIPA и определение метода обнаружения КД MS AD через DNS и CLDAP (Иван Крюков, OSDAY-2025) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) (Новая страница: «;{{SpeakerInfo}}: {{Speaker|Иван Крюков}} <blockquote> </blockquote> {{VideoSection}} {{vimeoembed||800|450}} <!-- {{youtubelink|}} --> == Thesis ==…») |
StasFomin (обсуждение | вклад) (→Thesis) |
||
;{{SpeakerInfo}}: {{Speaker|Иван Крюков}}
<blockquote>
</blockquote>
{{VideoSection}}
{{vimeoembed||800|450}}
<!-- {{youtubelink|}} -->
== Thesis ==
=== История использования NetBIOS в службах каталога ===
<tt>Active Directory</tt> (далее <tt>AD</tt>) – одна из самых распространенных служб каталога в настоящее время. С момента своего возникновения в рамках ОС <tt>Windows 2000 Server Edition</tt>, в ней используется протокол <tt>NetBIOS</tt>. Однако в начале 2000-х годов <tt>NetBIOS</tt> начинает активно замещаться целым набором технологий, таких как <tt>DNS</tt>, <tt>LDAP</tt>, <tt>Kerberos</tt>, в силу наличия уязвимостей и ограниченной масштабируемости <tt>NetBIOS</tt>.
В настоящее время протокол <tt>NetBIOS</tt> применяется как в <tt>Active Directory</tt> для поддержки обратной совместимости с более ранними версиями продукта, так и в <tt>Samba</tt> – программном пакете для Unix-подобных систем, обеспечивающем взаимодействие с доменами <tt>AD</tt>.
В реализации службы каталога <tt>ALD Pro</tt> (сокр. AstraLinux Directory Pro) для взаимодействия с контроллерами домена (далее КД) <tt>AD</tt> также применяются компоненты <tt>Samba</tt>, и, как следствие, используются те же зависимости.
=== Проблема поиска КД в доменах ALD Pro ===
Одним из ключевых компонентов <tt>Samba</tt>, обеспечивающим взаимодействие с КД <tt>AD</tt>, является служба <tt>winbindd</tt>. Эта служба выполняет следующие функции: разрешение <tt>NetBIOS</tt>-имен, преобразование идентификаторов <tt>SID</tt> в Unix-идентификаторы (и обратно), а также интеграцию модуля <tt>PAM</tt> (<tt>Pluggable Authentication Module</tt>) с различными механизмами аутентификации в домене, включая <tt>NTLM</tt> и <tt>Kerberos</tt>. <tt>Winbindd</tt> позволяет Unix-системам полноценно работать в домене как в роли клиента, так и в роли контроллера домена.
При использовании базовых настроек <tt>NetBIOS</tt> не отключен и поиск КД происходит по <tt>NetBIOS</tt>-имени КД. Однако возникает проблема зацикливания поиска и выдача ошибки ненахождения искомых КД.
=== Решение проблемы поиска КД и его эффективности ===
Решением проблемы стало блокирование протокола <tt>NetBIOS</tt> на уровне конфигурации <tt>Samba</tt> и его замена на алгоритм поиска по <tt>DNS SRV</tt>-записей КД в рамках заданного домена (поиск КД по <tt>DNS</tt>):
# Получение полного имени домена через <tt>DNS</tt>-запрос <tt>res_query</tt>;
# Обработка результатов запроса и вычленение имен КД;
# Обращение к КД с использованием протокола <tt>CLDAP</tt> для определения его досягаемости.
Использование <tt>CLDAP</tt> вместо <tt>LDAP</tt> обусловлено тем, что <tt>CLDAP</tt> использует анонимный запрос только к <tt>RootDSE</tt> записи верхнего уровня, который не требует авторизации запрашивающей стороны.
Однако возникла дополнительная проблема – возникают ситуации, когда в рамках одного домена некоторое подмножество КД доверенного домена в силу некоторых причин может находиться вне зоны досягаемости. Это заставляет <tt>winbindd</tt> бесконечно искать такие утерянные КД, с которыми ранее уже было установлено соединение, что тратит ресурсы КД и значительно засоряет трафик.
Решением такой проблемы является создание в <tt>Samba</tt> отдельного параметра, который включает в себя список КД различных доменов, которые с высокой вероятностью доступны в сети постоянно:
# Считывание списка КД из параметра: формирование иерархического списка “список доменов – подсписок КД”;
# Обращение к домену из базы данных доверенных доменов;
# Поиск доступных КД:
## Если для домена существует список доступных КД – ищем только их, используя описанный ранее “поиск КД по <tt>DNS</tt>”;
## Иначе используем описанный ранее “поиск КД по <tt>DNS</tt>” для всех КД, которые можем найти.
=== Вывод ===
Изоляция между доменами при установлении ДДО обеспечивается за счет механизмов аутентификации и авторизации (например <tt>Kerberos</tt>), групповых политик и списков контроля доступа <tt>ACL</tt> (анал. <tt>Access Control List</tt>). В случае некорректной работы методов и алгоритмов поиска КД доверенных доменов механизмы изоляции могут сообщать о недоступности некоторых пользователей и служб к различным ресурсам доверенных доменов.
Таким образом, работа механизмов изоляции становится некорректной, так как потеряна связь с уже имеющимися доверенными доменами, и, следовательно, информация об имеющихся ресурсах и доступах между доменами не поступает.
Найденное в исследовании решение позволяет обойти недостатки протокола <tt>NetBIOS</tt>, освобождает ресурсы КД при обращении к КД доверенных доменов, находящихся вне зоны досягаемости и позволяет сохранить корректную работу механизмов изоляции.
{{SlidesSection}}
[[File:Исследование проблемы поиска КД MS AD в доверительных отношениях с доменами FreeIPA и определение метода обнаружения КД MS AD через DNS и CLDAP (Иван Крюков, OSDAY-2025).pdf|left|page=-|300px]]
{{----}}
[[File:{{#setmainimage:Исследование проблемы поиска КД MS AD в доверительных отношениях с доменами FreeIPA и определение метода обнаружения КД MS AD через DNS и CLDAP (Иван Крюков, OSDAY-2025)!.jpg}}|center|640px]]
{{LinksSection}}
*
<!-- <blockquote>[©]</blockquote> --> | |||
Версия 16:29, 24 июня 2025
- Докладчик
- Иван Крюков
Содержание
Видео
Thesis
История использования NetBIOS в службах каталога
Active Directory (далее AD) – одна из самых распространенных служб каталога в настоящее время. С момента своего возникновения в рамках ОС Windows 2000 Server Edition, в ней используется протокол NetBIOS. Однако в начале 2000-х годов NetBIOS начинает активно замещаться целым набором технологий, таких как DNS, LDAP, Kerberos, в силу наличия уязвимостей и ограниченной масштабируемости NetBIOS.
В настоящее время протокол NetBIOS применяется как в Active Directory для поддержки обратной совместимости с более ранними версиями продукта, так и в Samba – программном пакете для Unix-подобных систем, обеспечивающем взаимодействие с доменами AD.
В реализации службы каталога ALD Pro (сокр. AstraLinux Directory Pro) для взаимодействия с контроллерами домена (далее КД) AD также применяются компоненты Samba, и, как следствие, используются те же зависимости.
Проблема поиска КД в доменах ALD Pro
Одним из ключевых компонентов Samba, обеспечивающим взаимодействие с КД AD, является служба winbindd. Эта служба выполняет следующие функции: разрешение NetBIOS-имен, преобразование идентификаторов SID в Unix-идентификаторы (и обратно), а также интеграцию модуля PAM (Pluggable Authentication Module) с различными механизмами аутентификации в домене, включая NTLM и Kerberos. Winbindd позволяет Unix-системам полноценно работать в домене как в роли клиента, так и в роли контроллера домена.
При использовании базовых настроек NetBIOS не отключен и поиск КД происходит по NetBIOS-имени КД. Однако возникает проблема зацикливания поиска и выдача ошибки ненахождения искомых КД.
Решение проблемы поиска КД и его эффективности
Решением проблемы стало блокирование протокола NetBIOS на уровне конфигурации Samba и его замена на алгоритм поиска по DNS SRV-записей КД в рамках заданного домена (поиск КД по DNS):
- Получение полного имени домена через DNS-запрос res_query;
- Обработка результатов запроса и вычленение имен КД;
- Обращение к КД с использованием протокола CLDAP для определения его досягаемости.
Использование CLDAP вместо LDAP обусловлено тем, что CLDAP использует анонимный запрос только к RootDSE записи верхнего уровня, который не требует авторизации запрашивающей стороны.
Однако возникла дополнительная проблема – возникают ситуации, когда в рамках одного домена некоторое подмножество КД доверенного домена в силу некоторых причин может находиться вне зоны досягаемости. Это заставляет winbindd бесконечно искать такие утерянные КД, с которыми ранее уже было установлено соединение, что тратит ресурсы КД и значительно засоряет трафик.
Решением такой проблемы является создание в Samba отдельного параметра, который включает в себя список КД различных доменов, которые с высокой вероятностью доступны в сети постоянно:
- Считывание списка КД из параметра: формирование иерархического списка “список доменов – подсписок КД”;
- Обращение к домену из базы данных доверенных доменов;
- Поиск доступных КД:
- Если для домена существует список доступных КД – ищем только их, используя описанный ранее “поиск КД по DNS”;
- Иначе используем описанный ранее “поиск КД по DNS” для всех КД, которые можем найти.
Вывод
Изоляция между доменами при установлении ДДО обеспечивается за счет механизмов аутентификации и авторизации (например Kerberos), групповых политик и списков контроля доступа ACL (анал. Access Control List). В случае некорректной работы методов и алгоритмов поиска КД доверенных доменов механизмы изоляции могут сообщать о недоступности некоторых пользователей и служб к различным ресурсам доверенных доменов.
Таким образом, работа механизмов изоляции становится некорректной, так как потеряна связь с уже имеющимися доверенными доменами, и, следовательно, информация об имеющихся ресурсах и доступах между доменами не поступает.
Найденное в исследовании решение позволяет обойти недостатки протокола NetBIOS, освобождает ресурсы КД при обращении к КД доверенных доменов, находящихся вне зоны досягаемости и позволяет сохранить корректную работу механизмов изоляции.
Презентация
Примечания и ссылки
