D/ DOBBYDEV DOCS

BLACKHOLE / DOCUMENTATION

Документация Blackhole

Понятные инструкции по настройке, работе и обслуживанию системы.

Руководство / 09

Active Directory: каталог и почта

Подключение каталога, явное назначение ящиков и состояния синхронизации.

Обновление защиты токенов

После согласованного обновления требуется повторный вход в SSO, а прежние пароли приложений нужно выпустить заново. Новые токены привязаны к версии безопасности учётной записи и GUID каталога: изменение версии или замена личности по тому же адресу делает прежний токен недействительным. Старые Redis-токены token- больше не принимаются даже при совпадении адреса и живой веб-сессии: они не содержат доказуемой привязки к личности. Обычный пароль и новые токены PostgreSQL authtoken- продолжают работать с действующими ограничениями доступа. Эти изменения не переносят почту и не гарантируют завершение уже открытых соединений.

Подключить каталог

  1. Откройте «Интеграции → LDAP / Active Directory» и добавьте контроллер типа Active Directory или Samba DC. Описанный здесь список импортированных учётных записей доступен для этих двух типов.
  2. Укажите доступный с сервера адрес контроллера, порт и транспорт. Для шифрованного доступа используйте LDAPS или STARTTLS и доверенный CA. Незашифрованный LDAP требует отдельной явной настройки; ошибка TLS не включает его автоматически.
  3. Укажите Bind DN служебной учётной записи и Base DN нужного дерева. Например, DC=example,DC=org должен соответствовать реальному каталогу; домен электронной почты может быть другим.
  4. Сохраните подключение, проверьте соединение и запустите синхронизацию. Дождитесь её завершения и проверьте журнал каталога. Проверка соединения сама не создаёт пользователей и не подтверждает правильность пароля отдельного пользователя.
  5. На карточке каталога откройте «Учётные записи». Импорт без назначения не создаёт почтовый домен или ящик. Атрибут mail из AD показан для справки.

Назначить почту

  1. Сначала создайте нужный почтовый домен в разделе «Домены и адреса → Почтовые домены».
  2. В списке учётных записей каталога выберите неназначенные записи, для которых доступен флажок «Выбрать для создания почты», существующий домен и имена ящиков без @домена. За один запрос можно назначить от 1 до 50 записей текущей страницы.
  3. Нажмите «Создать ящики выбранным пользователям». Назначение выполняется целиком: если адрес занят или запись изменилась, изменения всей выбранной группы отменяются. Проверьте данные и выберите изменившиеся записи заново. Существующий ящик с таким адресом не присоединяется автоматически.
  4. Откройте карточку назначенного ящика для проверки почтовых настроек. Локальный пароль не создаётся: пароль проверяется каталогом либо настроенным для него сервером RADIUS.

Подготовка нового хранилища

После явного назначения нового ящика сначала сохраняется привязка, а вход остаётся закрытым со статусом «Подготавливается хранилище». Обработчик AD создаёт новое пустое хранилище почты и рабочих данных и сверяет GUID, привязку и ограничения ещё раз перед включением. Существующий каталог с тем же адресом, даже пустой, автоматически не принимается. Удаление пользователя из базы не освобождает адрес прежнего каталожного ящика для новой личности. При ошибке проверьте журнал каталога; повторная попытка выполняется с задержкой около 1–2 минут, а недоступный AD сначала требует восстановления соединения. Не удаляйте каталоги вручную и не снимайте блокировку для обхода проверки. Эта защита не выполняет перенос или пересоздание старого ящика.

Как читать состояния

«Можно назначить почту» — запись импортирована, ящика и известных блокирующих состояний нет. «Ящик назначен» означает наличие привязки, но само по себе не гарантирует вход. «Отключён в AD», «Отсутствует в каталоге» и «Исключён из синхронизации» требуют проверки объекта или настроек каталога. «Конфликт идентичности» требует проверки GUID и принадлежности ящика. «Обнаружено изменение адреса» сообщает о смене mail в AD, а не о согласии администратора или завершённом переносе. Сохранённое решение обозначается отдельно: «Запрошено переименование». У записей с блокирующими состояниями назначение недоступно. Счётчики «На этой странице» относятся к текущей странице и поиску, а не ко всей AD; уведомления об адресах учитываются отдельно и могут иметь другую пагинацию.

Состояние AD и локальное разрешение

В карточке назначенного каталожного пользователя можно менять локальные почтовые параметры: квоту, разрешённые протоколы, антиспам и пересылку. Имя, принадлежность к каталогу и каталожные группы остаются под управлением AD; локальный сброс пароля для AD недоступен. Флажок «Локально разрешить доступ» хранит решение администратора Blackhole и не снимает блокировку каталога. Вход разрешён только при допустимом состоянии AD и локальном разрешении, с учётом протокола и проверки пароля. Повторное включение объекта в AD не отменяет отдельный локальный запрет.

Пароль AD и второй фактор

Каждый новый парольный вход каталожного пользователя проверяется через AD либо настроенный для каталога RADIUS. Прежний успешный вход не используется как кешированное подтверждение пароля. После смены пароля учитывайте время репликации между контроллерами AD. Уже открытые сеансы и выданные токены не выполняют новый LDAP Bind: для обнаружения смены пароля используется отдельная проверка при синхронизации. Политика TOTP определяется настройкой группы, а не её названием: она действует и для синхронизированной группы с произвольным именем. Ошибка чтения политики закрывает вход с временной ошибкой, а не отключает второй фактор.

Обнаружение смены пароля AD

При синхронизации AD / Samba Blackhole читает pwdLastSet — отметку последней смены пароля, но не сам пароль. Первая достоверная фиксация pwdLastSet для назначенного ящика один раз отзывает ранее выданный доступ: потребуется повторный вход и перевыпуск паролей приложений, даже если пароль в AD недавно не менялся. При следующих синхронизациях отзыв повторяется только при изменении pwdLastSet; повторное чтение того же значения не вызывает нового отзыва. Настоящее нулевое значение тоже учитывается. В журнале первая фиксация отмечается как ldap.password.baseline_revoked, последующее изменение — ldap.password.changed. Письма, контакты и календари не изменяются.

Срок обнаружения и неполные данные

Это периодическая проверка, а не мгновенное уведомление из AD. Плановый успешный обход выполняется через шесть часов; явная синхронизация позволяет проверить изменения раньше. Если pwdLastSet отсутствует, недоступен или некорректен, обход считается неполным: значение не подменяется нулём и исходная отметка не выдумывается. Уже подтверждённые отключения учётных записей и конфликты нового objectGUID всё равно блокируют доступ; неполные данные не восстанавливают его. Недоступность AD сама по себе не добавляет запрет для всех ранее выданных токенов. Открытые соединения зависят от проверок версии доступа в соответствующем протоколе: это не мгновенный разрыв всех SMTP-соединений или уже выполняющихся DAV-запросов.

Изменить локальные почтовые параметры AD-пользователя

  1. Откройте назначенный ящик из списка учётных записей каталога и сверьте адрес и источник пользователя.
  2. Измените только требуемые почтовые настройки. Не пытайтесь заменить имя, GUID, принадлежность к каталогу или пароль значениями из локальной формы.
  3. Проверьте флажок «Локально разрешить доступ» отдельно от текущего статуса пользователя и состояния AD. Сохраните форму; при конфликте версии перечитайте актуальную карточку и повторите своё изменение.
  4. Повторно откройте карточку, проверьте сохранённую квоту и настройки и выполните новый вход нужным протоколом. Если AD блокирует пользователя, локальный флажок не должен восстановить вход.

Административные права

Управление каталогом и назначение ящиков в текущем интерфейсе доступны глобальному администратору. Куратор ИБ может просматривать каталог и состояния, но не назначать почту. Импорт, назначение ящика, членство в синхронизированной группе и настройка 2FA не выдают административных прав автоматически. Локальные полномочия и их область проверяются отдельно; список «Разрешения» показывает существующие записи и сам по себе не является редактором прав.

Удаление и смена адреса

Объект AD определяется по objectGUID, а не по имени или адресу. Новый объект с прежним адресом не получает старый ящик. После изменения mail в AD вверху списка учётных записей появляется уведомление с именем сотрудника, адресом Blackhole на момент изменения и обнаруженным значением AD. Оно относится и к явно назначенным ящикам, и к старым автоматическим привязкам; сохранённая запись не подтверждает актуальное существование ящика или доступность входа. Администратор сервера явно выбирает «Оставить текущий адрес» или «Переименовать существующий ящик» и сохраняет решение. Первый вариант принимает изменение к сведению и сохраняет текущий адрес. Второй сохраняет запрос на перенос существующего ящика; само сохранение не меняет адрес, не создаёт новый пустой ящик и не подтверждает перенос данных. Автоматический перенос пока не реализован. Куратор ИБ может только читать уведомления. Для решения нужны успешная полная синхронизация и подтверждённая привязка к той же личности; исчезновение объекта или смена привязки требуют отдельной проверки. При изменении версии перечитайте адреса и выберите действие заново. Решение не снимает отдельный локальный запрет, отключение в AD или другие блокировки. Нельзя устранять конфликт ручной заменой email в базе.

Группы каталога и политики

Группа AD определяется контроллером и objectGUID, а не названием. Одноимённые группы из разных каталогов не объединяются. Переименование сохраняет идентичность группы; удалённая и заново созданная группа не наследует локальные права прежней. Синхронизация одного каталога не удаляет подтверждённые членства другого каталога и локальные группы. Если переход со старых групп может снять 2FA или другую явную политику, старые членства сохраняются, доступ к затронутому ящику закрывается и в аудите появляется ldap.groups.policy_review_required. Не удаляйте ограничения только ради успешной синхронизации: сначала сверьте происхождение групп и перенесите утверждённую политику на нужную группу.

Блокировка и уже открытые соединения

После применения блокировки каталога новые входы запрещены. В односерверном почтовом профиле монитор проверяет GUID, версию безопасности и разрешения примерно каждые пять секунд и закрывает открытые IMAP/POP3-сессии затронутой записи. Ошибка базы или команды может задержать проверку; pending_accounts во внутреннем статусе mail-control должен вернуться к нулю. Имена с буквальными * или ? требуют отдельного точного механизма завершения: монитор не использует маску, которая могла бы отключить чужие сессии. При SMTP submission на 465/587 право отправки проверяется на получателе и после передачи письма, поэтому старый успешный AUTH не разрешает новые письма заблокированной записи. Приём межсерверной почты на 25 не изменяется.

Проверка и ограничения

Для проверки на отдельной согласованной учётной записи откройте почту, отключите запись в AD, запустите синхронизацию и дождитесь её результата. Проверьте новый вход и уже открытый IMAP/POP3-клиент отдельно. Включите запись, повторите синхронизацию и новый вход: отдельный локальный запрет должен остаться. Плановая успешная синхронизация сейчас повторяется через шесть часов; LDAP_SYNC_INTERVAL задаёт лишь частоту проверки очереди, а не период полного обхода. Не ждите планового обхода при срочном отзыве доступа. Неполная выгрузка каталога не вызывает массовое отключение отсутствующих записей. SMTP-проверка пока не привязана к версии первоначального AUTH: после повторного включения или повторного использования адреса старое SMTP-соединение ещё не отделено от новой учётной записи. Уже выполняющийся DAV-запрос также может завершиться. Поэтому эти проверки не доказывают готовность автоматического переноса или пересоздания хранилища. Ошибка Bind DN, недоверенный CA и пустой результат фильтра — разные причины; изучайте журнал, не расширяйте права служебной учётной записи наугад.

Приёмка AD: подготовить безопасную проверку

Пять сценариев ниже проверяются на отдельном согласованном стенде и выделенных тестовых объектах, не на рабочих сотрудниках. До удаления или пересоздания объекта нужна проверенная резервная копия и возможность восстановить каталог и данные. Запишите исходные objectGUID, адрес и контрольные письма, контакты и события; отдельно отметьте локальные запреты и делегированные права. Проверяйте веб-клиент и настольный клиент отдельно. После каждого изменения запустите синхронизацию и дождитесь её результата: сохранение формы подключения или успешный LDAP Bind не означает завершение обхода.

Сценарий 1. Заблокировать пользователя в AD

  1. Отключите только выделенный тестовый объект в AD. После синхронизации проверьте состояние «Отключён в AD» и отказ нового входа в веб-почту и настольный клиент.
  2. Отдельно проверьте ранее открытую IMAP/POP3-сессию и отправку по SMTP: первоначальный успешный вход не должен обходить действующий запрет. Непрочитанные письма и папки должны сохраниться.
  3. Если чтение групп или pwdLastSet завершилось ошибкой, обход остаётся неполным, но уже подтверждённое отключение должно быть применено. Ошибка записи этого запрета в базу — отдельный сбой, а не успешная блокировка. Не считайте одно сообщение о завершении синхронизации доказательством отключения всех сеансов.

Сценарий 2. Разблокировать тот же объект

  1. Включите тот же объект с прежним objectGUID, выполните успешную синхронизацию и проверьте новый вход с действующим паролем AD. Письма должны остаться в прежнем ящике.
  2. Повторите проверку с отдельным локальным запретом Blackhole: включение в AD не должно снять его. Исключение синхронизации по назначенному адресу тоже должно сохраняться при изменении или очистке mail в AD.
  3. Неполное чтение групп или версии пароля не разрешает восстановить доступ. Сначала устраните причину ошибки и выполните полный обход; не снимайте защитные поля вручную в базе.

Сценарий 3. Удалить тестовый объект AD

  1. Удалите только согласованный тестовый объект и дождитесь успешного полного обхода каталога. Запись должна стать отсутствующей в каталоге, а новый вход — запрещённым; содержимое ящика не удаляется этой синхронизацией.
  2. Отказ контроллера, оборванная страница LDAP или ошибка чтения групп не доказывают отсутствие остальных объектов. Неполный обход не должен массово блокировать неувиденные записи как удалённые.
  3. Проверьте отказ старых токенов и поведение ранее открытых клиентов отдельно. Не создавайте замену в рабочем домене, пока не проверена изоляция старой личности и не согласован сценарий восстановления.

Сценарий 4. Новый объект с прежним именем и адресом

Обязательно сверьте, что у заново созданного тестового объекта другой objectGUID. Требуемый конечный результат — отдельный новый пустой ящик, а старые письма, контакты, календари, файлы и права остаются у старой личности. Сейчас автоматическое пересоздание ещё не включено: защитный отказ или конфликт идентичности допустим как проверка изоляции, но не является выполнением сценария создания нового ящика. Нельзя открывать старое хранилище новой учётной записи, вручную менять GUID/email в базе или считать совпадение адреса доказательством владения. Полная приёмка этого сценария должна дождаться включённого и проверенного механизма пересоздания.

Сценарий 5. Изменить адрес того же объекта

Сохраните исходный objectGUID и измените mail тестового объекта AD. Для явно назначенного адреса администратор выбирает «Оставить текущий адрес» либо «Переименовать существующий ящик» в уведомлении. Первый вариант сохраняет текущий адрес. Второй пока сохраняет только запрос: перенос данных и смена адреса ещё не подтверждены. Бейдж «Обнаружено изменение адреса» сам по себе не является согласием на переименование. Требуемый итог полноценного переноса — прежние письма, контакты, календари и файлы доступны той же личности по новому адресу, без нового пустого ящика и повышения прав. Пока обработчик переноса не подключён, сохранённое решение не считается успешной приёмкой этого сценария.

Что зафиксировать по результатам

Для каждого сценария запишите версию компонентов, время полного обхода, состояние каталога и привязки, результат нового входа и результат уже открытой сессии отдельно. Приложите обезличенные сообщения об ошибках без паролей, токенов и содержимого писем. Восстановление операции после потери ответа базы проверяется отдельно в изолированной среде: таймаут не доказывает откат. Наличие исходников, тестового сценария или записи «запрошено» не подтверждает, что функция собрана, развёрнута и успешно прошла приёмку.

Экран подключения каталога

Форма подключения LDAP и Active Directory с параметрами транспорта и поиска
Реальный интерфейс; демонстрационные данные example.org.

Экран импортированных учётных записей

Учётные записи AD: назначенные ящики, неназначенные записи и предупреждения каталога
Реальный интерфейс; демонстрационные данные example.org.