Развертывание контроллера домена Active Directory на Linux. Настройка Samba Active Directory на Ubuntu Server 20.04 LTS
И так. Всем привет! С вами Владислав известен я под никнеймом Imptovskii, и сегодня мы рассмотрим развертку контроллера домена Active Directory на базе Samba используя дистрибутив Ubuntu.
В этом гайде мы будет разбирать:
- Настройка основного домена
- Настройка резервного домена
- Настройка NTP
- Настройка репликации групповых политик, ибо в автоматическом режиме Samba Active Directory это не умеет.
Вообще у нас для развертывая Active Directory есть несколько путей решения данной задачи
1. Купить Windows Server и развернуть Active Directory на нем.
2. Спиратить Windows Server и получить больше проблемы от правоохранительных органов.
3. Использовать Open Source решение. Например Samba.
Кому это может быть нужно
1. Вы хотите просто выеб*** выделится что вы такой хороший специалист и сократили расходы компании. И улучшили инфраструктуру.
2. Вы работаете в госструктурах, и из-за маразма с переходом на открытое и отечественное ПО, у вас просто нет другого выхода.
3. Вы не хотите проблем от правоохранительных органов из-за пиратства Windows Server, а денег на Windows Server руководство вам выделять не хочет. А ваша инфраструктура уже требует наличие хоть кого нибудь домена Active Directory. Например прокси Squid или файловый сервер на Samba.
4. У вас просто аллергия на Windows на боевых серверах.
И так, разворачивая домен на Samba вы получаете
1. Полноценный домен уровня WIN2K8 R2
— Служба Аутентификации на базе Kerberos v5
— LDAP-совместимая служба каталогов с возможностью репликации по DRS
— Сервер управления групповыми политиками
— DNS-сервер на базе BIND.
2. Хорошее решение, если у вас небольшая локальная сеть до 100-150 компьютеров и нужды в большом лесе поддоменов у вас нет. (Точнее Samba в поддомены не умеет от слова совсем)
3. За счет открытых спецификаций технологии Active Directory и преемственности в подходах реализации службы каталога Active Directory. Клиентами домена на базе Samba могут быть рабочие станции с операционными системами, начиная с Windows XP вплоть до Windows 10. А в качестве инструментов управления доменными службами на базе Samba могут быть использованы привычные инструменты из RSAT.
А теперь поговорим об ограничениях и недостатках Samba Active Directory Domain Controller
1. Максимальный размер базы данных Samba ограничен 4 Гб. И это связано 32-битной архитектурой tdb. И это означает что для крупных организаций c условными сотнями тысяч каталогов и объектов которые решили совершить переход на Samba, это может оказаться практически невозможным.
2. Доверительные отношения (forest/domain trust). Хоть более или менее полная реализация доверительных отношений появились в версии 4.3, тем не менее в ней есть ряд ограничений.
— Поддерживаются только двухсторонние доверительные отношения.
— Отсутствует функция SID Filtering, и отказ от нее снижается существенно уровень безопасности при создании доверительных отношений.
— Не поддерживается добавление пользователей, и групп из домена A в домен B. И данное ограничение приводит к тому что мы не сможем увидеть Samba в крупных инсталляциях.
3. Поддержка многодоменной структуры/поддержка поддоменов.
Поддержка многодоменной структуры отсутствует как на уровне кода, так и на уровне базы данных. В Samba нет реализации глобального каталога (При запросе глобального каталога производится редирект на общий LDAP-каталог)
Если вы создаете поддомен на базе Samba, или вводите Samba в состав домена второго уровня, записи о других доменах и корневом домене будут потеряны, а «благодаря» ограничениям в поддержке фантомных объектов, работа в многодоменной среде может быть весьма нестабильной.
4. Репликация SYSVOL
Несмотря на то, что групповые политики полноценно функционируют в Samba (за исключением политики паролей, назначаемых на конкретное организационное подразделение), из-за отсутствия поддержки протоколов DFS-R и FRS, репликацию SYSVOL придется проводить в ручном режиме, или при помощи скрипта. Информация о настройках rsync для репликации между контроллерами Samba есть на сайте wiki.samba.org.
5. Поддержка KCC
В Samba 4.3.0 заявлено, что разработчики приблизились к реализации KCC, в соответствии с открытой спецификацией Microsoft, на деле же, стоит приготовиться к многочисленным ошибкам в журналах событий и созданию/корректировке графа репликации вручную.
6. Есть проблемы с поддержкой различных приложений типа почтового сервера Exchange и т. д.
Больше информации вы можете получить на wiki.samba.org
На самом деле, несмотря на все недостатки. Не стоит забывать что это бесплатный и открытый продукт к которому Microsoft не имеет прямого отношения. И неудивительно что у него есть ограничения и какие недостатки. И все же для небольшой фирмы это хорошее решение при отсутствии бюджета на Windows Server. И проблемы с подобным решением могут возникнуть только в одном случае это с крупными внедрениями.
Да и помимо Active Directory, на базе Samba можно сделать файловый сервер или сервер печати и сделать интеграцию с Active Directory. Но об этом как-нибудь потом.
Давайте приступим к настройке нашего домена
Основной домен
Виртуализация: QEMU/KVM
Кол-во ядер: 2
Объем выделенной памяти: 4 ГБ
Имя сервера: dc01
Имя домена: netlab.local
IP-адрес: 192.168.1.31
OS: Ubuntu Server 20.04 LTS
Резервный домен
Виртуализация: QEMU/KVM
Кол-во ядер: 2
Объем выделенной памяти: 4 ГБ
Имя сервера: dc02
Имя домена: netlab.local
IP-адрес: 192.168.1.32
OS: Ubuntu Server 20.04 LTS
Настройка сети
1. Настраиваем hostname для этого нам нужно отредактировать файл /etc/hostname и дописать к dc01 наш домен в нашем случае это netlab.local
Пишем sudo nano /etc/hostname
2. Настройка файла /etc/netplan/00-installer-config.yaml
Задаем следующие значения в файл /etc/netplan/00-installer-config.yaml
Пишем sudo nano /etc/netplan/00-installer-config.yaml
Если у вас нет этого файла, пишем в консоли ls /etc/netplan и узнаем имя конфига.
Приводим файл к следующему виду:
3. Настройка файла /etc/hosts
Одним из обязательных условий, является резолв имени нашего сервера, на его IP в локальной сети. Если сервер находится в сети 192.168.1.0/24 и его IP 192.168.1.31, то набирая на нем команду ping dc01 или же ping dc01.netlab.local должен резолвиться адрес 192.168.1.31. Имя контроллера домена, не должно резолвиться на локальный адрес 127.0.0.1 или какой-либо другой адрес, кроме того, что назначен сетевому интерфейсу который использует контроллер домена.
Пишем sudo nano /etc/hosts и приводим файл к следующему виду:
3. Отключение службы systemd-resolved.
Останавливаем службу systemd-resolved
Убираем systemd-resolved из автозапуска
Удаляем файл /etc/resolv.conf
Создаем заново файл /etc/resolv.conf
И приводим его к следующему виду:
А теперь перезапускаем сервер.
Установка Samba
1. Проверяем не запущены ли какие-нибудь процессы Samba
У нас их не должно быть и так, но лучше проверить если вы используете старую виртуалку
2. Установка Samba
На этом этапе, самое главное нужно понимать что после того как вы инициализируете контроллер домена, вы не сможете сменить его название. Если вы называете домен например NETLAB.LOCAL, LAB.LOCAL, GENERICNAME.LAN и т.д. то он на веки будет называться именно так как вы его назвали. Samba не поддерживает смену имени домена. Если вам нужно будет сменить его имя, вам придется выводить все машины из домена и инициализировать его заново с новым именем. И даже в рамках сети с 25-50 машинами это уже большая проблема.
1. Устанавливаем Samba и все необходимые пакеты командой
2. Область по умолчанию для Kerberos версии 5
3. Серверы Kerberos для вашей области:
4. Управляющий сервер вашей области Kerberos
Ожидаем окончание установки.
5. Бэкапим стандартную конфигурацию Samba
А теперь приступаем к инициализации домена
Инициализация и дополнительная настройка домена Sambа
Из своего домена, мы так же будем управлять пользователями и группами линуксовых машин. Поэтому нам нужно заранее включить поддержку NIS, с помощью команды –use-rfc2307. Включение поддержки NIS, не имеет никаких противопоказаний к применению, даже если ваш домен никогда не будет обслуживать линуксовые машины. В то же время, если инициализировать домен без поддержки NIS, и когда-нибудь в него войдут линуксовые машины и захочется управлять их учётками, расширять схему Active Directory и добавлять поддержку NIS, придётся уже ручками на свой страх и риск.
1. Запускаем инициализацию домена в интерактивном режиме, следующей командой:
- use-rfc2307 — параметр добавляет POSIX атрибуты (UID / GID) на схеме AD. Он понадобится при аутентификации клиентов Linux, BSD, or OS X (в том числе на локальной машине) в дополнение к Microsoft Windows.
- interactive — параметр заставляет сценарий резерва запускаться в интерактивном режиме.
- Realm — указывает на DNS-имя домена в верхнем регистре, которое настроено в hosts, в нашем тесте realm: NETLAB.LOCAL
- Domain — доменное имя сервера, у нас это — NETLAB
- Server Rules(роли сервера): dc — (Domen controller)
- DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) — указывает кто, будет в роли DNS сервера. SAMBA_INTERNAL — внутренний DNS самбы.
- DNS forwarder IP address. Данный параметр позволяет указать IP-адрес DNS-сервера, на который будут перенаправлены dns запросы, в случае когда сервер Samba не сможет их разрешить.
2. Указываем параметры домена
Когда установщик запросит пароль, рекомендую указать трудный пароль и также рекомендую чтобы этот пароль отличался от вашего админской учетной записи на самом сервере.
Если на этом этапе в квадратных скобках у вас указано не, то значение которое вы задавали, то скорее всего вы где-то ошиблись.
3. По этого инициализации вы должны получить подобный результат:
Но радоваться рано. Если вы видите нечто другое, то скорее всего вы допустили ошибку где-то в предыдущих пунктах.
4. Переносим файл конфигурации Kerberos следующей командой:
5. Переходим к настройкам файла /etc/samba/smb.conf и ветку [global] приводим к след виду:
Начиная с версии 3.3.0, появился модуль acl_xattr, позволяющий Samba корректно обрабатывать Windows ACL (Access Control List). Для полноценной поддержки прав доступа к файлам используйте модуль acl_xattr. Для этого добавьте в smb.conf в раздел [global] следующие параметры:
Для обновления записей в DNS добавьте два параметра в раздел [global]:
Если при автоконфигурировании не был указан DNS Forwarding, то его можно включить, добавив в секцию [global] DNS-адресс, который используется в вашей локальной сети или на внешний ресурс, например 8.8.8.8 или 1.1.1.1
В секцию [global] добавьте поддержку расширения схемы AD
6. После внесения изменений в файл /etc/samba/smb.conf выполните команду проверки testparm
7. Убераем стандартный в Linux лимит на 1024 одновременно открытых файлов, а в Windows он 16384. Чтобы убрать его добавьте, в конец файла /etc/security/limits.conf строки:
Перезапускаем систему и запускаем снова проверку и как мы видим теперь все окей
Настройка служб
Контроллер домена Samba сам должен запускать необходимые службы. Если вы будете пытаться запускать их в ручном режиме, то это может привести к необратимым последствиям, вплоть до неработоспособности домена. Поэтому сделаем недоступными для запуска или ручного запуска системные службы smbd, nmbd и winbind
1. Пишем следующие команды
2. Делаем службу samba-ad-dc доступной для запуска и включаем автозапуск
Настраиваем службу DNS
1. Переходим в файл /etc/netplan/00-installer-config.yaml и в ветке nameservers меняем с 192.168.1.1 на IP адрес нашего сервера 192.168.1.31
2. И то же самое делаем в /etc/resolv.conf
А теперь перезапускаем сервер и будем проверять нашу работу.
Проверяем итоги нашей работы
1. Проверяем шары нашего контроллера командой smbclient -L localhost -U%
2. Проверяем работоспособность Kerberos пишем команду:
И мы должны получить след ответ:
3. Смотрим кэш авторизаций Kerberos пишем команду klist
4. Проверяем DNS записи пишем следующие команды
А теперь попробуем загнать Windows машину в домен для закрепления результата и установим RSAT
Вводим компьютер в домен и устанавливаем RSAT
1. Указываем DNS сервер в настройках сети
2. А теперь вводим наш компьютер в домен вводя учетку администратора
Логин: Administrator
Пароль от учетки вы задавали при инициализации домена
3. Если вы все правильно сделали, то вы увидете след сообщение
4. Пытаемся залогиниться и скачиваем RSAT с сайта Microsoft
А теперь приступаем к настройке резервного контроллера домена.
Настройка резервного контроллера домена
Зачем нам нужен резервный контроллер домена? А все просто, давайте представим такую ситуацию. Например на одном из гипервизеров что-то не работает, например процессор вышел из строя. И, следовательно начались проблемы с общими папками на файловом сервере Samba, прокси сервер Squid не может авторизовать пользователей, люди банально не могут выйти в интернет, или зайти в свой компьютер. И тут нам на помощь приходит резервный контроллер домена, если основной сервер по каким либо причинам не работает то все задачи он берет на себя.
Настройка сети
1. Настраиваем hostname для этого нам нужно отредактировать файл /etc/hostname и дописать к dc01 наш домен в нашем случае это netlab.local
Пишем sudo nano /etc/hostname
2. Настройка файла /etc/netplan/00-installer-config.yaml
Задаем следующие значения в файл /etc/netplan/00-installer-config.yaml
Пишем sudo nano /etc/netplan/00-installer-config.yaml
Если у вас нет этого файла, пишем в консоли ls /etc/netplan и узнаем имя конфига.
Приводим файл к следующему виду:
3. Настройка файла /etc/hosts
Одним из обязательных условий, является резолв имени нашего сервера, на его IP в локальной сети. Если сервер находится в сети 192.168.1.0/24 и его IP 192.168.1.32, то набирая на нем команду ping dc02 или же ping dc02.netlab.local должен резолвиться адрес 192.168.1.32. Имя контроллера домена, не должно резолвиться на локальный адрес 127.0.0.1 или какой-либо другой адрес, кроме того, что назначен сетевому интерфейсу который использует контроллер домена.
Пишем sudo nano /etc/hosts и приводим файл к следующему виду:
3. Отключение службы systemd-resolved.
Останавливаем службу systemd-resolved
Убираем systemd-resolved из автозапуска
Удаляем файл /etc/resolv.conf
Создаем заново файл /etc/resolv.conf
И приводим его к следующему виду:
Установка Sambа
1. Проверяем не запущены ли какие-нибудь процессы Samba
2. Устанавливаем Samba командой из 1 статьи:
И ожидаем окончание установки, у нас не должно быть диалоговых окон с настройкой Kerberos и т.д.
3. Бэкапим стандартную конфигурацию Samba
Ввод в домен и настройка Samba
1. Производим ввод в домен командой sudo samba-tool domain join netlab.local DC -U»NETLAB\Administrator» и вводим пароль от учетной записи Administrator
Мы должны получить следующее
2. Переносим файл конфигурации Kerberos следующей командой:
3. А теперь переходим к настройке /etc/samba/smb.conf и настраиваем его по аналогии конфига dc01
Мы имеем чистый конфиг без всяких настроек, все параметры указаны в 1 части статьи и расписано что за что отвечает
Приводим мы наш конфиг к такому виду.
4. После внесения изменений в файл /etc/samba/smb.conf выполните команду проверки testparm
5. Убираем стандартный в Linux лимит на 1024 одновременно открытых файлов, а в Windows он 16384. Чтобы убрать его добавьте, в конец файла /etc/security/limits.conf строки:
Перезапускаем систему и запускаем снова проверку и как мы видим что все окей
Настройка служб
Контроллер домена Samba сам должен запускать необходимые службы. Если вы будете пытаться запускать их в ручном режиме, то это может привести к необратимым последствиям, вплоть до неработоспособности домена. Поэтому сделаем недоступными для запуска или ручного запуска системные службы smbd, nmbd и winbind
1. Пишем слудующие команды
2. Делаем службу samba-ad-dc доступной для запуска и включаем автозапуск
Настраиваем службу DNS
1. Переходим в файл /etc/netplan/00-installer-config.yaml и в ветке nameservers добавляем наш второй DNS сервер
2. И то же самое делаем в /etc/resolv.conf
А теперь перезапускаем сервер и будем проверять нашу работу.
Проверяем итоги нашей работы
1. Проверяем шары нашего контроллера командой smbclient -L localhost -U%
2. Проверяем работоспособность Kerberos пишем команду:
И мы должны получить след ответ:
3. Смотрим кэш авторизаций Kerberos пишем команду klist
4. Проверяем DNS записи пишем следующие команды
Вначале на dc01
А теперь на dc02
Если у вас не появились записи о dc02.netlab.local значит вы где-то ошиблись и надо разбираться в чем проблема.
5. Так а теперь проверяем репликацию командой sudo samba-tool drs showrepl
Вначале на dc01
Предупреждение «No NC replicated for Connection!» можно смело игнорировать. Оно появляется из-за того, что при регистрации нового Samba AD-DC неверно устанавливает некоторые флаги репликации.
А теперь перейдем в Windows и пропишем второй DNS сервер
Проверяем работу резервного домена в Windows
Переходим в RSAT и можем увидеть что у нас появился второй контроллер домена
Попробуем переключиться на второй домен
Как мы видим мы переключись на второй контроллер домена
А теперь давайте проверим как будет все работать если мы выключим основной контроллер домена, и перезапустим виртуалку с Windows. И как мы видим сеть есть, если бы DNS не работал, то Windows показывала что нет доступа к интернету.
Попробуем зайти в RSAT и посмотреть сможем ли мы управлять резерным контроллером домена. И как можно заметить что все окей и все работает. Давайте перейдем в управление DNS записями.
Открываем утилиту DNS и указываем dc02
И как можно заметить, что все работает
Теперь приступаем к настройке NTP сервера на наших доменах.
Настройка NTP
А теперь приступаем к настройке NTP и это необходимый элемент для нормального функционирования Active Directory, а в частности компонента Kerberos.
Да и помимо Kerberos при рассинхроне времени на клиенских машинах или серверах у вас поломается вход в систему, применение групповых политик и т.д. А вот если это произойдет на контроллерах домена, то поломается репликация, а это недопустимо.
Поэтому нам и необходим NTP на контроллере домена.
Настройка часового пояса
Прежде всего вам необходимо выбрать часовой пояс для системы, и главное чтобы этот часовой пояс совпадал с клиентскими машинами. Это необходимо сделать на всех контроллерах домена! Иначе у вас будут проблемы с репликацией!
Пишем команду dpkg-reconfigure tzdata
Выбираем в моем случае Europe
И выбираем Moscow
Мы должны получить следующий ответ:
А теперь приступим к установке и настройке NTP
Установка и настройка NTP сервера
Настройка требуется на всех контроллерах домена.
1. Устанавливаем пакет командой
2. Изменяем группу и права доступа к директории /var/lib/samba/ntp_signd/
3. А теперь приступаем к настройке файла sudo nano /etc/ntp.conf
И приводим файл к следующему виду:
Дописываем следующие строки:
А также комментируем строку driftfile /var/lib/ntp/ntp.drift
Описание параметров файла конфигурации NTP:
ntpsigndsocket /usr/local/samba/ntp_signd/ — позволит клиентским машинам отправлять NTP-запросы к серверу используя Active Directory
Server — указывает на сервера синхронизации времени
restrict 127.0.0.1 — обмен данным с самим собой
iburst — отправлять несколько пакетов (повышает точность)
prefer — указывает на предпочитаемый сервер времени
server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов.
3. Настройка NTP на резервном контроллере домена
Устанавливаем NTP, изменяем группу и права доступа к директории /var/lib/samba/ntp_signd/ и редактируем sudo nano /etc/ntp.conf
Приводим файл к следующему виду.
А также комментируем строку driftfile /var/lib/ntp/ntp.drift
Также нам необходимо задать tinker panic 0 и выполняем на всех контроллерах домена команду:
Зачем нужен tinker panic 0? Если ваш NTP сервер располагается на виртуальной машине и у него нет «физических» часов измеряющих время, А работа с виртуальной машиной, может возобновиться через несколько часов. То это будет приводить к крашу ntpd.
4. Настройка служб
Запускаем и включаем автозапуск службы NTP на наших доменах и пишем:
Проверяем работу службы через команду
5. Проверяем что у нас работает репликация и обновление ГПО
Перейдем в Windows и откроем командную строку и проверим работу NTP
Проверяем обновление ГПО
Как мы видим что все окей. А теперь проверим репликацию на контроллерах домена репликацию.
И как мы видим что все окей. А теперь приступаем к настройке репликации групповых политик.
Настройка репликации групповых политик
В этот раз мы будем рассматривать репликацию групповых политик домена Samba Active Directory. Из-за отсутствия поддержки протоколов DFS-R и FRS, репликацию SYSVOL придется проводить в ручном режиме, или при помощи скрипта.
Папка SYSVOL содержит групповые политики и скрипты. Отсутствие репликации приведет к неправильной работе групповых политик и сценариев входа.
И все же приступим.
Активация пользователя root
Эти действия необходимо сделать на обоих контроллерах домена.
Для активации пользователя root пишем команду:
И задаем пароль.
И не забываем про информационную безопасность! Задаем разные пароли!
А теперь переходим в файл /etc/ssh/sshd_config и разрешаем подключения через пользователя root
Раскомментируем строки PermitRootLogin и задаем значение yes
Перезапускам службу SSH командой:
И пытаемся залогиниться под root используя SSH если у вас все вышло значит все ок. Если нет, то ищите где вы допустили ошибку.
Генерация ключей доступа для беспарольного доступа по SSH
Обязательно логинимся под root на dc01 и вводим следующую команду
При генерации ключа не вводим passphrase, и мы должны получить такой ответ.
Скриншот сделан на другом сервере
А теперь копируем ключ c dc01 на dc02 командой:
И проверяем беспарольный доступ с dc01 на dc02, пишем команду
Установка rsync и unison и установка скрипта для двухсторонней репликации
Все действия необходимо делать под пользователем root!
Для установки rsync и unison пишем след команду:
Cоздаем каталог для unison командой:
А теперь приступаем к настройке Unison мы должны создать файл default.prf в каталоге /root/.unison пишем
Задаем ему следующие параметры:
И так теперь в директории root создаем файл например repl.sh и задаем скрипт:
Все логи об репликации будут храниться в /var/log/sysvol-sync.log отчет можно вывести командой:
Также не забываем сделать файл исполняемым командой:
Проверим работу скрипта командой пишем команду:
Не забудьте перед этим забэкапить каталог sysvol!
А теперь переходим нам нужен планировщик задач Cron
Cron — системный демон, используемый для выполнения задач (в фоновом режиме) в указанное время. Crontab — команда, которая используется, для управления планировщиком Cron
Чтобы создать задачу для репликации, нам он и нужен. Пишем команду sudo crontab -e и в конце файла пишем
*/5 в планировщике означает что данный скрипт будет запускаться каждые 5 минут.
Проверяем логи и как мы видимо что все окей:
А теперь пишем в проводнике \\dc02 и проверяем каталог sysvol
Ну что надеюсь вам понравилась данная статья. На этом пока все. До новых встреч.
Источник