Инструменты резервного копирования и восстановления позволяют пересоздать домен при возникновении проблем, делающих невозможной его дальнейшую полноценную эксплуатацию.
Примером такой проблемы может служить изменение или удаление какого-либо объекта или группы объектов в базе данных службы каталогов, приводящее к неработоспособности одного из доменных сервисов. Подобное изменение реплицируется на все контроллеры домена. То есть для восстановления работоспособности такого сервиса недостаточно выполнить повторное присоединение к домену какого-либо отдельного контроллера, так как он получит копию базы данных с вызвавшим проблему изменением. В этом случае при наличии резервной копии домена без внесенного «проблемного» изменения она может быть использована для восстановления.
В процессе восстановления создается новый контроллер домена с базой данных из резервной копии. Существующие контроллеры домена должны быть остановлены и заново присоединены к нему.
Если контроллер домена используется и в качестве файлового сервера (что не рекомендуется), потребуется также создать отдельные резервные копии этих данных.
6.5.1.1. Создание резервной копии в онлайн/офлайн режимах
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. Восстановление домена из резервной копии
Для восстановления домена из резервной копии необходимо выполнить следующие шаги:
Остановить службу каталогов (samba
) на всех контроллерах домена. Этот шаг можно пропустить если используется переименованная резервная копия.
Выполнить команду samba-tool domain backup restore
, с требуемыми параметрами для восстановления базы данных домена на одном новом контроллере домена.
Запустить samba
на новом контроллере домена.
Повторно добавить старые контроллеры домена в сеть, присоединив их к восстановленному контроллеру домена, например, выполнив команду:
samba-tool domain join <dns-realm> DC --server=<restored-dc>
Если используется переименованная резервная копия, также потребуется перенастроить сетевые устройства, так чтобы трафик перенаправлялся в восстановленный домен, а не в неисправный/исходный домен.
Из файла резервной копии восстанавливается весь домен, а не конкретный контроллера домена. Шаг с командой 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 в новом домене. Изменяются следующие объекты:
Модифицируется только клонированный домен — исходный домен вообще не затрагивается.
Объекты, которые не меняются:
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/
).
Новый контроллер домена не может использовать то же имя сервера, что и контроллер домена в исходной сети.
Во время резервного копирования/восстановления пароль для учётной записи администратора сбрасывается на случайно сгенерированный пароль. Для его изменения можно просто обновить базу данных на локальном диске, выполнив команду:
# samba-tool user setpassword
Administrator \
--newpassword=<пароль> -H /var/lib/samba/newtest/private/sam.ldb
Для тестирования аутентификации пользователей можно либо добавить дополнительные «тестовые» учётные записи пользователей/машин, либо «командовать» некоторыми учётными записями, скопированными из рабочего домена. Для учётных записей, скопированных из рабочего домена, не будут установлены пароли, поэтому на этом этапе также можно сбросить пароли для выбранных учётных записей. Или можно сделать это позже, когда служба каталогов действительно запустится на новом контроллере домена.
Перед запуском службы каталогов на новом контроллере домена, рекомендуется проверить корректность настроек в восстановленном файле 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.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
во время восстановления (это имеет значение только на переименованных резервных копий).