Product SiteDocumentation Site

6.5. Резервное копирование и восстановление Samba AD DC

6.5.1. Резервное копирование и восстановление из резервной копии

Инструменты резервного копирования и восстановления позволяют пересоздать домен при возникновении проблем, делающих невозможной его дальнейшую полноценную эксплуатацию.
Примером такой проблемы может служить изменение или удаление какого-либо объекта или группы объектов в базе данных службы каталогов, приводящее к неработоспособности одного из доменных сервисов. Подобное изменение реплицируется на все контроллеры домена. То есть для восстановления работоспособности такого сервиса недостаточно выполнить повторное присоединение к домену какого-либо отдельного контроллера, так как он получит копию базы данных с вызвавшим проблему изменением. В этом случае при наличии резервной копии домена без внесенного «проблемного» изменения она может быть использована для восстановления.
В процессе восстановления создается новый контроллер домена с базой данных из резервной копии. Существующие контроллеры домена должны быть остановлены и заново присоединены к нему.

Примечание

Механизм восстановления из резервной копии не должен использоваться для восстановления работоспособности отдельно взятого контроллера домена в случае возникновения на нем локальной проблемы, не затрагивающей работу всего домена. В этом случае достаточно провести диагностику и устранить проблему на контроллере домена, а затем выполнить повторное присоединение к домену для получения актуальной копии базы данных службы каталогов (см. раздел Восстановление произвольного контроллера домена после фатального сбоя).
Если контроллер домена используется и в качестве файлового сервера (что не рекомендуется), потребуется также создать отдельные резервные копии этих данных.
Поддерживаются следующие виды резервного копирования:
  • Online (онлайн-режим) — выполняется клонирование работающей базы данных DC. По функциональности это похоже на присоединение нового контроллера домена к сети;
  • Offline (автономный режим) — резервные копии Samba создаются в том виде, в котором они появляются на диске. Сюда входят метаданные репликации, которые являются локальными для этого конкретного контроллера домена и которые не включаются в резервные копии в онлайн-режиме. Такую резервную копию также можно создать, когда контроллер домена находится в автономном режиме (т.е. процесс samba фактически не запущен);
  • Rename (режим с переименованием) — создаётся файл резервной копии с переименованным доменом (предназначен только для временной замены).
Резервные копии можно создать, используя команду samba-tool domain backup. При этом будет создан файл резервной копии .tar.bz2, который будет содержать полную резервную копию домена (на основе данного контроллера домена). Этот файл резервной копии можно использовать для восстановления домена с помощью команды samba-tool domain backup restore.

Примечание

Следует иметь ввиду, что файл резервной копии — это резервная копия домена, а не контроллера домена. Восстановление файла резервной копии создаст новый контроллер домена с информацией о домене. Чтобы восстановить последующие контроллеры домена, необходимо присоединить данные контроллеры домена к восстановленному контроллеру домена.

6.5.1.1. Создание резервной копии в онлайн/офлайн режимах

Online/Offline резервное копирование
6.5.1.1.1. Создание резервной копии в онлайн-режиме
В онлайн-режиме (оnline) формируется набор файлов с актуальными данными службы каталогов, не привязанными к состоянию конкретного контроллера домена.
Данный вид резервного копирования подходит в том случае, если требуется оперативно получить работоспособную долгосрочную или постоянную замену вышедшему из строя домену без детального изучения причин возникновения проблем в работе службы каталогов.
Для создания резервной копии в онлайн-режиме используется команда:
# samba-tool domain backup online --targetdir=<output-dir> \
 --server=<DC-server> -UAdministrator
Эту команду можно запустить как локально на контроллере домена, так и удалённо на другом узле. При удалённом запуске рекомендуется указать параметр --configfile, чтобы в резервную копию были включены правильные настройки smb.conf (т.к. локальный файл smb.conf может не существовать или его настройки могут отличаться от настроек контроллера домена).

Примечание

Перед созданием файла резервной копии рекомендуется запустить команду samba-tool dbcheck и исправить все ошибки, о которых она сообщает.

Примечание

Вся секретная информация домена будет включена в файл резервной копии.
Пример создания резервной копии в онлайн-режиме на контроллере домена:
# mkdir /var/samba-backup-online
# samba-tool domain backup online --targetdir=/var/samba-backup-online --server=dc1 -UAdministrator
Password for [TEST\Administrator]:
workgroup is TEST
realm is test.alt
Looking up IPv4 addresses
Looking up IPv6 addresses
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
A Kerberos configuration suitable for Samba AD has been generated at /var/samba-backup-online/tmpxqc6dwts/private/krb5.conf
Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
…
Creating backup file /var/samba-backup-online/samba-backup-test.alt-2024-06-04T16-15-49.475857.tar.bz2...
6.5.1.1.2. Создание резервной копии в автономном режиме
В автономном режиме (оffline) создается резервная копия локальных файлов контроллера домена, на котором запускается команда резервного копирования.
Данный вид резервного копирования оптимален для изучения причин возникновения проблем в работе службы каталогов, так как в этом режиме в резервную копию включаются дополнительные данные, как правило, не подлежащие реплицированию. В больших доменах на создание такой резервной копии требуется меньше времени, поскольку исключаются временные затраты на передачу данных из базы данных службы каталогов по сети и запись их на локальный диск. Однако следует учитывать, что при копировании базы данных с диска потенциально повышается риск попадания в резервную копию ошибочных данных.

Примечание

Отличия автономного резервного копирования от онлайн-режима:
  • резервную копию можно создать, даже если контроллер домена в данный момент не работает;
  • резервная копия включает нереплицированные атрибуты, которые не сохраняются в онлайн-резервной копии;
  • в копию попадают необработанные файлы базы данных, что может привести к тому, что какие-либо скрытые проблемы в БД сохранятся в резервной копии.
Для создания автономной резервной копии используется команда:
# samba-tool domain backup offline --targetdir=<output-dir>

Примечание

Несмотря на то, что данный тип резервного копирования называется автономным, контроллеру домена не нужно быть в автономном режиме при выполнении этой команды. Инструмент просто выполняет резервное копирование локальных файлов и имеет достаточную блокировку, чтобы гарантировать безопасное создание резервной копии.
Пример создания автономной резервной копии на контроллере домена:
# mkdir /var/samba-backup-offline
# samba-tool domain backup offline --targetdir=/var/samba-backup-offline
running backup on dirs: /var/lib/samba/private /var/lib/samba /etc/samba
Starting transaction on /var/lib/samba/private/secrets
Starting transaction on /var/lib/samba/private/sam.ldb
   backing up /var/lib/samba/private/sam.ldb

…
   adding misc file etc/lmhosts
   adding misc file etc/smb.conf
Backup succeeded.
6.5.1.1.3. Восстановление домена из резервной копии
Для восстановления домена из резервной копии необходимо выполнить следующие шаги:
  1. Остановить службу каталогов (samba) на всех контроллерах домена. Этот шаг можно пропустить если используется переименованная резервная копия.
  2. Выполнить команду samba-tool domain backup restore, с требуемыми параметрами для восстановления базы данных домена на одном новом контроллере домена.
  3. Запустить samba на новом контроллере домена.
  4. Повторно добавить старые контроллеры домена в сеть, присоединив их к восстановленному контроллеру домена, например, выполнив команду:
    samba-tool domain join <dns-realm> DC --server=<restored-dc>
    
  5. Если используется переименованная резервная копия, также потребуется перенастроить сетевые устройства, так чтобы трафик перенаправлялся в восстановленный домен, а не в неисправный/исходный домен.

Примечание

Из файла резервной копии восстанавливается весь домен, а не конкретный контроллера домена. Шаг с командой samba-tool domain backup restore выполняется только один раз, при этом домен воссоздается на одном контроллере домена. Затем все старые контроллеры домена должны быть повторно присоединены к восстановленному контроллеру домена.
Этап восстановления из файла резервной копии аналогичен разворачиванию домена, который выполнялся при первой настройке сети Samba, за исключением того, что резервная копия содержит в себе все объекты базы данных, которые были добавлены с момента создания домена. Как и при создании нового домена, при запуске команды восстановления домена потребуется указать новый контроллер домена. Этот контроллер домена не должен был существовать ранее в сети Samba.
Команда восстановления домена из резервной копии:
# samba-tool domain backup restore --backup-file=<tar-file> \
--newservername=<DC-name> --targetdir=<new-samba-dir>
где
  • tar-file — файл резервной копии;
  • DC-name — новый контроллер домена;
  • new-samba-dir — каталог, куда будут восстановлены все файлы службы каталогов (smb.conf, sam.ldb и т. п.).
Следует обратить внимание, что указанный целевой каталог должен быть пустым (или не должен существовать). Не рекомендуется восстанавливать базу данных домена в место установки по умолчанию (например, в каталог /var/lib/samba). Вместо этого рекомендуется восстановить базу данных домена в другой целевой каталог, а затем, при запуске samba, использовать параметр -s (или --configfile), например:
# samba -s <targetdir>/etc/smb.conf
Указание восстановленного smb.conf гарантирует, что Samba будет использовать правильные файлы базы данных.
Восстановленный контроллер домена будет добавлен в сайт 'Default-First-Site-Name'. Если он не существует в базе данных, он будет создан. Указать альтернативный сайт для добавления восстановленного контроллера домена можно с помощью параметра --site.
Перед запуском службы каталогов на восстановленном контроллере домена следует еще раз проверить правильность восстановленных настроек smb.conf.
Пример восстановления данных из резервной копии:
# mkdir /var/lib/samba/new
# samba-tool domain backup restore
--backup-file=/home/user/samba-backup-test.alt-2024-06-04T16-15-49.475857.tar.bz2
--newservername=newdc  --targetdir=/var/lib/samba/new
Adding new DC to site 'Default-First-Site-Name'
Updating basic smb.conf settings...
…
Backup file successfully restored to /var/lib/samba/new
Please check the smb.conf settings are correct before starting samba.

6.5.1.2. Переименованная резервная копия

Процедура создания резервной копии и восстановления из неё в режиме переименования:
Создание переименованной резервной копии
В режиме с переименованием (rename) формируется набор файлов с актуальными данными службы каталогов, не привязанными к состоянию конкретного контроллера домена, с переименованием домена.
Данный вид резервного копирования позволяет с минимальными усилиями временно подменить вышедший из строя домен таким образом, чтобы обеспечить работоспособность ключевых сетевых сервисов службы каталогов и иметь возможность детально исследовать причины возникновения проблем в существующем домене.
Создание резервной копии в режиме переименования может применяться для:
  • запуска временного альтернативного домена на случай катастрофического отказа основного домена. На альтернативный/переименованный домен можно переключиться с минимальными усилиями. Затем можно запустить два домена одновременно, не мешая друг другу (переименованный/альтернативный домен будет предоставлять основные сетевые службы Samba, в это же время на исходных контроллерах домена можно устранять неполадки);
  • создания реалистичного лабораторного домена: домен переименовывается и удаляются конфиденциальные данные (на данный момент только самые важные), чтобы создать предпроизводственную среду для тестирования.
При клонировании базы данных службы каталогов в нее вносятся изменения, обеспечивающие использование другого NetBIOS-имени и другой области DNS в новом домене. Изменяются следующие объекты:
  • все DN-имена;
  • объект раздела домена и его NetBIOS-имя;
  • объекты зоны DNS, а также атрибуты dnsRoot.

Примечание

Модифицируется только клонированный домен — исходный домен вообще не затрагивается.
Объекты, которые не меняются:
  • userPrincipalName (UPN) по-прежнему будет использовать user@old-realm. Если при выполнении команды резервного копирования с переименованием домена использовался параметр --keep-dns-realm, пользователи могут использовать для входа в домен свои полные UPN-имена. В противном случае они могут использовать имена в формате user@new-realm (при условии, что конфигурация Kerberos корректно обрабатывает новую область);
  • объекты групповой политики: атрибуты объекта групповой политики (gPCFileSysPath и gPLink) вообще не обновляются, файлы в sysvol сохраняются с прежним именем области в путях (например, sysvol/test.alt/Policies). Каталог для файлов политик в sysvol по умолчанию создается с новым именем области (например, sysvol/newtest.alt/Policies).

Примечание

Обновление объектов групповой политики для обработки изменения имени домена — нетривиальный процесс. Лучший способ справиться с долгосрочным переименованием домена — вручную экспортировать файлы ГП, а затем повторно импортировать их. В краткосрочной перспективе переименованный домен сможет продолжать использовать объекты групповой политики, относящиеся к старой области.
Переименование домена выполняется в два этапа:
  • создание переименованной резервной копии домена: команда samba-tool domain backup rename делает клон работающей базы данных DC, в процессе клонирования переименовывает домен и создаёт файл резервной копии;
  • восстановление резервной копии домена: команда samba-tool domain backup restore из файла резервной копии формирует файлы, необходимые для запуска нового контроллера домена Samba.
6.5.1.2.1. Создание переименованной резервной копии
Команда для создания переименованной резервной копии:
# samba-tool domain backup rename <new-domain-netbios> \
<newdomain-dns-realm> --server=<dc-to-backup> \
--targetdir=<output-dir> --no-secrets -UAdministrator
где
  • new-domain-netbios — новое имя NETBIOS;
  • newdomain-dns-realm — новая область DNS;
  • output-dir — каталог, куда будет записан сгенерированный файл резервной копии.

Предупреждение

Параметр --no-secrets исключает из резервной копии конфиденциальную информацию о паролях (например, такие атрибуты, как unicodePwd, lmPwdHistory и т. д.) для всех пользователей в домене. При этом, файл резервной копии по-прежнему содержит конфиденциальную информацию, такую как имена учётных записей пользователей.
В результате выполнения команды формируется файл резервной копии /var/samba-backup-rename/samba-backup-newtest.alt-<timestamp>.tar.bz2.
В случае, если команда создания резервной копии запускается на узле, который будет использоваться в качестве нового контроллера домена (он должен быть подключён к рабочему домену), рекомендуется иметь файл smb.conf, максимально соответствующий производственному контроллеру домена, и передать его команде резервного копирования (с помощью параметра --configfile=smb.conf). Это гарантирует, что резервная копия будет содержать smb.conf, точно соответствующий домену.
Пример создания переименованной резервной копии на контроллере домена:
# mkdir /var/samba-backup-rename
# samba-tool domain backup rename NEWTEST newtest.alt --server=dc1 \
--targetdir=/var/samba-backup-rename --no-secrets -UAdministrator

New realm for backed up domain: newtest.alt
New base DN for backed up domain: DC=newtest,DC=alt
New domain NetBIOS name: NEWTEST
Password for [TEST\Administrator]:
Provisioning the new (renamed) domain...
…
Если команда создания резервной копии запускается на другом узле, (например, на рабочем контроллере домена), необходимо скопировать сгенерированный файл резервной копии на узел, который будет использоваться в качестве нового контроллера домена.
6.5.1.2.2. Восстановление данных из резервной копии
Файл резервной копии /var/samba-backup-rename/samba-backup-newtest.alt-<timestamp>.tar.bz2 может использоваться для восстановления клонированной и переименованной базы данных на диске. В восстановленном домене будет только один новый контроллер домена с именем, указанными с помощью опции --newservername. В последующем к нему могут быть присоединены другие контроллеры домена. Для указания нового каталога для размещения всех файлов службы каталогов (smb.conf, sam.ldb и т. п.) может использоваться опция --targetdir.
Команда восстановления домена из резервной копии:
# samba-tool domain backup restore --backup-file=<tar-file> \
--newservername=<DC-name> --targetdir=<new-samba-dir>
где
  • tar-file — файл резервной копии;
  • DC-name — новый контроллер домена;
  • new-samba-dir — каталог, куда будут восстановлены все файлы службы каталогов (smb.conf, sam.ldb и т. п.).
Пример восстановления домена из переименованной резервной копии:
# mkdir /var/lib/samba/newtest
# samba-tool domain backup restore --targetdir=/var/lib/samba/newtest \
--newservername=NEWDC1 --backup-file=/home/user/samba-backup-newtest.alt.alt-2024-04-17T20-09-56.883910.tar.bz2

Примечание

Целевой каталог должен быть пустым (или не должен существовать). Не рекомендуется восстанавливать базу данных домена в место установки по умолчанию (например, в каталог /var/lib/samba/). Однако можно указать подкаталог (например, /var/lib/samba/newtest/).

Примечание

Новый контроллер домена не может использовать то же имя сервера, что и контроллер домена в исходной сети.
6.5.1.2.3. Сброс пароля
Во время резервного копирования/восстановления пароль для учётной записи администратора сбрасывается на случайно сгенерированный пароль. Для его изменения можно просто обновить базу данных на локальном диске, выполнив команду:
# samba-tool user setpassword Administrator \
--newpassword=<пароль> -H /var/lib/samba/newtest/private/sam.ldb
Для тестирования аутентификации пользователей можно либо добавить дополнительные «тестовые» учётные записи пользователей/машин, либо «командовать» некоторыми учётными записями, скопированными из рабочего домена. Для учётных записей, скопированных из рабочего домена, не будут установлены пароли, поэтому на этом этапе также можно сбросить пароли для выбранных учётных записей. Или можно сделать это позже, когда служба каталогов действительно запустится на новом контроллере домена.
6.5.1.2.4. Запуск Samba
Перед запуском службы каталогов на новом контроллере домена, рекомендуется проверить корректность настроек в восстановленном файле smb.conf (например, /var/lib/samba/newtest/etc/smb.conf) и в файле /etc/krb5.conf, и при необходимости вручную внести в них изменения.
При запуске службы каталогов необходимо указать восстановленный smb.conf (это гарантирует, что Samba загрузит правильные файлы базы данных для нового домена). Например:
# samba -s /var/lib/samba/newtest/etc/smb.conf
При первом запуске службы каталогов могут быть зарегистрированы ошибки DNS. Это связано с тем, что samba_dnsupdate запускается автоматически и добавляет записи DNS для нового домена.
После запуска samba можно проверить правильность работы нового контроллера домена, например, выполнив команду:
# ldbsearch -H ldap://NEWDC1 -UAdministrator
6.5.1.2.5. Обновление подсетей сайта
Новый домен будет содержать все сайты AD рабочего домена, но ни один из рабочих контроллеров домена. Однако подсети, которые используют эти сайты, скорее всего, больше не будут иметь смысла для экспериментального домена.

6.5.1.3. Рекомендуемая стратегия

Восстановление файла резервной копии имеет несколько неудобств:
  • необходимость использовать другой каталог для установки по умолчанию;
  • необходимо указать имя сервера DC, отличное от того, что было ранее в сети.
Свести эти неудобства к минимуму можно, используя временный сервер (или виртуальную машину) для восстановления контроллера домена. В этом случае процесс восстановления работоспособности домена состоит из следующих шагов:
  • выполнить восстановление из файла резервной копии на временный контроллер домена и запустить службу каталогов;
  • повторно по одному присоединить существующие контроллеры домена к временному контроллеру домена (во время присоединения можно повторно использовать одно и то же имя сервера и место установки по умолчанию);
  • после присоединения всех существующих контроллеров домена к восстановленному домену, можно удалить временный контроллер домена (например, с помощью команды samba-tool domain demote).
В этом случае новая сеть контроллеров домена будет полностью повторять существующую.

Примечание

Пример разворачивания домена (SAMBA_INTERNAL) из резервной копии на ВМ:
  1. Подготовить узел:
    • установить пакет task-samba-dc (или task-samba-dc-mitkrb5):
      # apt-get install task-samba-dc
    • остановить конфликтующие службы:
      # for service in smb nmb krb5kdc slapd bind; do systemctl disable $service; systemctl stop $service; done
      
    • очистить базы и конфигурацию Samba:
      # rm -f /etc/samba/smb.conf
      # rm -rf /var/lib/samba/*
      # rm -rf /var/cache/samba
      
  2. Скопировать файл резервной копии на ВМ и выполнить восстановление домена из файла резервной копии:
    # samba-tool domain backup restore --backup-file=/home/user/samba-backup-test.alt-2024-04-17T20-09-56.883910.tar.bz2 --newservername=newdc --targetdir=/var/lib/samba
    Adding new DC to site 'Default-First-Site-Name'
    Updating basic smb.conf settings...
    …
    Backup file successfully restored to /var/lib/samba
    Please check the smb.conf settings are correct before starting samba.
    
  3. Скопировать файл smb.conf из каталога /var/lib/samba/etc/ в /etc/samba/:
    # cp /var/lib/samba/etc/smb.conf /etc/samba/
    
  4. Запустить службу каталогов:
    # systemctl enable --now samba
    
  5. Заменить файл /etc/krb5.conf файлом из каталога /var/lib/samba/private/:
    # cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
    
  6. Проверить работоспособность домена (см. Проверка работоспособности домена):
    # samba-tool domain info 127.0.0.1
    Forest           : test.alt
    Domain           : test.alt
    Netbios domain   : TEST
    DC name          : newdc.test.alt
    DC netbios name  : NEWDC
    Server site      : Default-First-Site-Name
    Client site      : Default-First-Site-Name
    
    # smbclient -L localhost -Uadministrator
    Password for [TEST\administrator]:
    
    Sharename       Type      Comment
    ---------       ----      -------
    sysvol          Disk
    netlogon        Disk
    share           Disk      Commonplace
    Free            Disk
    IPC$            IPC       IPC Service (Samba 4.19.6)
    SMB1 disabled -- no workgroup available
    
    # host -t SRV _kerberos._udp.test.alt.
    _kerberos._udp.test.alt has SRV record 0 100 88 newdc.test.alt.
    

6.5.1.4. Отладочная информация

Если команды резервного копирования или восстановления завершится с ошибкой, то они могут оставить после себя временный каталог (указанный в параметре --targetdir). Это может помочь понять, почему произошел сбой. Необходимо удалить этот каталог перед повторным запуском команды восстановления.
Создание резервной копии:
  • резервное копирование следует запускать от имени пользователя root. Резервное копирование в онлайн-режиме может быть успешным и для пользователя без полномочий root, но при попытке восстановить данные из такой резервной копии могут возникнуть проблемы;
  • для резервных копий, выполненных в онлайн-режиме или в режиме переименования, следует проверить правильность используемых учётных данных и сведений о сервере, например:
    # ldbsearch -H ldap://<server> -UAdministrator
    
  • чтобы узнать больше информации о причине сбоя можно увеличить уровень журналирования. Например, добавить в команду параметр --debug=3;
  • работа команд, для выполнения резервного копирования резервного копирования в онлайн-режиме или в режиме переименования, очень похожа на присоединение к контроллеру домена. Если известно, что присоединение к контроллеру домена в вашей сети не удается, то эти команды также вероятно не будут работать. Сообщения «Committing SAM database» и «Cloned domain <domain>», говорят о том, что часть резервного копирования, подобная присоединению, скорее всего, выполнена успешно;
  • инструменты резервного копирования не работают напрямую с контроллером домена Windows (в основном простое резервное копирование файлов sysvol не удается из-за блокировки службы DFSR). Если используется смешанный домен контроллера домена, следует создать резервную копию контроллера домена Samba, а не контроллера домена Windows. Если используется домен Windows, можно на время резервного копирования на контроллере домена остановить службу DFSR «Репликация DFS».
Восстановление из резервной копии:
  • команду восстановления необходимо запускать от имени пользователя root;
  • имя, указанное в параметре --newservername, не должно существовать в исходном домене. В противном случае будет получена ошибка:
    Adding CN=NEWDC,OU=Domain Controllers,DC=test,DC=alt
    ERROR(ldb): uncaught exception - Entry CN=NEWDC,OU=Domain Controllers,DC=test,DC=alt already exists
      File "/usr/lib64/samba-dc/python3.9/samba/netcmd/__init__.py", line 186, in _run
        return self.run(*args, **kwargs)
      File "/usr/lib64/samba-dc/python3.9/samba/netcmd/domain_backup.py", line 562, in run
        ctx.join_add_objects(specified_sid=dom_sid(str(sid)))
      File "/usr/lib64/samba-dc/python3.9/samba/join.py", line 674, in join_add_objects
        ctx.samdb.add(rec, controls=controls)
    
  • если команда резервного копирования выполнялась локально на контроллере домена, то файл резервной копии должен содержать файл smb.conf контроллера домена. Однако smb.conf в файле резервной копии может содержать конфигурацию «интерфейсов», которая не соответствует IP-адресам на контроллере домена, на котором разворачиваются данные из резервной копии. Избежать этой проблемы можно, указав аргумент --host-ip во время восстановления (это имеет значение только на переименованных резервных копий).