Время на прочтение
6 мин
Количество просмотров 230K
Этот вариант может быть полезен для небольших организаций с компьютерами под управлением Windows.
Нет необходимости приобретать недешевую Windows Server для организации AD и CAL лицензии для доступа к контроллеру домена.
В конечном итоге имеем плюшки AD: групповые политики, разграничение прав доступа к ресурсам и т.д.
Я попытался написать подробный алгоритм действий необходимых для организации Active Directory (AD) Domain Controller (DC) на базе Ubuntu Server.
Рассмотрим настройку контроллера домена на примере Ubuntu Server 12.04.4 LTS или Ubuntu Server 13.10, инструкция подходит для обоих вариантов без дополнительных изменений
1. Установка Ubuntu
Думаю установка Ubuntu-server не вызовет проблем даже у большинства пользователей компьютеров.
Желательно при установке ОС сразу правильно указать название машины в сети (hostname) с указанием домена (для примера использую dc1.domain.local), чтобы в дальнейшем меньше надо было править конфигурацию в файлах.
Если в сети не присутствует DHCP-сервер, установщик предложит ввести IP-адрес, маску сети, шлюз и DNS.
Во время установки, также желательно установить OpenSSH server, чтобы иметь удаленный доступ к серверу, а также правильно указать часовой пояс, в котором находится машина.
2. Настройка параметров сетевого адаптера
Настройки сети хранятся в файле /etc/network/interfaces
Редактируем его на свой вкус. В качестве редактора можно использовать nano, vi и т.п.
Для редактирования файлов понадобятся root права, их можно получить например командой
sudo su
после этого, Вы будете работать из под пользователя root.
О том что Вы работаете с правами root пользователя свидетельствует знак # в приглашении командной строки
Либо Вы можете перед каждой командой, которая требует root доступа, приписывать sudo
sudo nano /etc/network/interfaces
В конфигурации Вашего сетевого интерфейса, скорее всего, будет
iface eth0 inet dhcp
поменяем настройки на использование статичного ip-адреса.
В моем случае они выглядят вот так:
auto lo
iface lo inet loopbackauto eth0
iface eth0 inet static
address 192.168.10.1
netmask 255.255.255.0
gateway 192.168.10.10
dns-nameservers 192.168.10.10
dns-search domain.local domain
После изменения сетевых настроек необходимо перезапустить сетевой сервис
/etc/init.d/networking restart
3. Установка необходимых пакетов
Если Вы все же не установили OpenSSH server на первом этапе, это можно сделать командой
apt-get install ssh
Перед установкой чего либо, лучше сначала обновить систему и пакеты командой
apt-get update && apt-get upgrade
Для того, чтобы компьютеры сети сверяли время по нашему серверу установим ntp-сервер
apt-get install ntp
Samba4 будем использовать последней версии и собирать из исходников, так что нам понадобятся пакеты для её сборки и корректной работы.
apt-get install git checkinstall build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr docbook-xsl libcups2-dev acl
4. Сборка Samba4
Для корректной работы Samba потребуется поддержка vfs на уровне файловой системы, для этого внесем изменения в /etc/fstab, необходимо добавить user_xattr,acl,barrier=1 в настройки корневого раздела /
nano /etc/fstab
должна получится строка, что-то вроде этой:
/dev/mapper/dc1—vg-root / ext4 user_xattr,acl,barrier=1,errors=remount-ro 0 1
после чего необходимо перезагрузить компьютер
reboot
Не забываем про root права
sudo su
Скачиваем последнюю стабильную версию Samba из GIT репозитария
cd /usr/src
git clone -b v4-1-stable git://git.samba.org/samba.git samba-v4-1-stable
конфигурируем, компилируем и устанавливаем Samba
cd samba-v4-1-stable && ./configure --enable-debug && make && checkinstall
Параметр —enable-debug необходим для отображения более подробной информации в логах Samba.
После того, как соберется и установится Samba (это долгое занятие), для удобства её использования, необходимо прописать пути до исполняемых файлов /usr/local/samba/sbin и /usr/local/samba/bin в файлах /etc/sudoers переменная secure_path и /etc/environment переменная PATH, добавив строку :/usr/local/samba/sbin:/usr/local/samba/bin
nano /etc/sudoers
должна получится строчка что-то вроде этой:
Defaults secure_path=»/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/samba/sbin:/usr/local/samba/bin«
nano /etc/environment
должна получится строчка что-то вроде этой:
PATH=»/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/samba/sbin:/usr/local/samba/bin«
перезагрузимся еще раз (на всякий случай)
reboot
5. Поднимаем AD
В качестве DNS сервера AD будем использовать Samba, поэтому отключаем bind командой
service bind9 stop && update-rc.d bind9 disable
Для манипуляций с AD в Samba существует инструмент samba-tool.
Для первоначальной настройки Samba вводим команду
samba-tool domain provision
Если на первом этапе Вы правильно указали имя компьютера, все настройки, которые запросит программа, можно оставить поумолчанию.
Во время настройки будет запрошен пароль пользователя Administrator для AD, он должен соответствовать требованиям сложности пароля поумолчанию: хотябы одна буква верхнего регистра, хотябы одна цифра, минимум 8 символов.
Если же пароль не подошел по сложности и Вы увидели ошибку вроде этой:
ERROR(ldb): uncaught exception — 0000052D: Constraint violation — check_password_restrictions: the password is too short. It should be equal or longer than 7 characters!
то перед повторным выполнением первоначальной настройки, необходимо удалить содержимое каталогов /usr/local/samba/private/ и /usr/local/samba/etc/
Если необходимо изменить сложность паролей это можно сделать командой
samba-tool domain passwordsettings set --min-pwd-length=6 --complexity=off --max-pwd-age=0 --min-pwd-age=0
эта команда отключает требование сложности, отключает сроки действия паролей, устанавливает минимальную длину пароля 6 символов
Далее необходимо подправить настройки Samba и добавить туда следующие строки в секцию [global]
nano /usr/local/samba/etc/smb.conf
allow dns updates = nonsecure and secure
printing = bsd
printcap name = /dev/null
Это позволит динамически обновлять DNS-записи на сервере, при входе рабочей станции (под управлением windows) в домен и отключит поддержку печати, которая постоянно выдает ошибки в лог.
В файле /etc/resolvconf/resolv.conf.d/head необходимо указать наш DNS-сервер Samba 127.0.0.1
echo "nameserver 127.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
и перезапустить сервис resolvconf
service resolvconf restart
Также установим Kerberos клиент
apt-get install krb5-user
и настроим на AD с помощью файла созданного на этапе samba-tool domain provision
mv /etc/krb5.conf /etc/krb5.conf.old
cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
Для автоматического запуска сервиса Samba необходим скрипт:
nano /etc/init.d/samba4
/etc/init.d/samba4
#! /bin/sh
### BEGIN INIT INFO
# Provides: samba4
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start Samba daemons
### END INIT INFO
#
# Start/stops the Samba daemon (samba).
# Adapted from the Samba 3 packages.
#
PIDDIR=/var/run/samba
SAMBAPID=$PIDDIR/samba.pid
# clear conflicting settings from the environment
unset TMPDIR
# See if the daemon and the config file are there
test -x /usr/local/samba/sbin/samba -a -r /usr/local/samba/etc/smb.conf || exit 0
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting Samba 4 daemon" "samba"
# Make sure we have our PIDDIR, even if it’s on a tmpfs
install -o root -g root -m 755 -d $PIDDIR
if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/samba -- -D; then
log_end_msg 1
exit 1
fi
log_end_msg 0
;;
stop)
log_daemon_msg "Stopping Samba 4 daemon" "samba"
start-stop-daemon --stop --quiet --name samba $SAMBAPID
# Wait a little and remove stale PID file
sleep 1
if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
then
# Stale PID file (samba was succesfully stopped),
# remove it (should be removed by samba itself IMHO.)
rm -f $SAMBAPID
fi
log_end_msg 0
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: /etc/init.d/samba4 {start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0
его необходимо сделать исполняемым
chmod 755 /etc/init.d/samba4
и создать настройки поумолчанию
update-rc.d samba4 defaults
Перезагружаем компьютер
reboot
6. Проверяем работоспособность сервера
У нас должна быть запущена samba после перезагрузки
ps aux | grep samba
root 865 0.3 3.0 95408 31748? Ss 18:59 0:00 /usr/local/samba/sbin/samba -D
Должен работать DNS сервер
nslookup dc1
Server: 127.0.0.1
Address: 127.0.0.1#53Name: dc1.domain.local
Address: 192.168.10.1
Должны быть доступны сетевые ресурсы AD
smbclient -L localhost -U%
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
Sharename Type Comment
— — — netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.1.6)
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
Server Comment
— — Workgroup Master
— ——-
Должен подключаться Kerberos
kinit administrator
Warning: Your password will expire in 41 days on Wed Apr 23 18:49:14 2014
Должен храниться Ticket kerberos’a
klist
Valid starting Expires Service principal
12/03/2014 19:17 13/03/2014 05:17 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
Должна проходить аутентификация netlogon
smbclient //localhost/netlogon -UAdministrator -c 'ls'
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
. D 0 Wed Mar 12 18:46:48 2014
… D 0 Wed Mar 12 18:49:15 2014
Вот и всё.
Можно вводить в домен клиентов, заводить пользователей.
Управлять AD можно:
частично при помощи samba-tool на Ubuntu
при помощи Administration Tools Pack на Windows XP
при помощи Remote Server Administration Tools (RSAT) на Windows 7 и выше
Этот пост можно считать неким переводом официального wiki Samba, который находится по адресу:
wiki.samba.org/index.php/Samba_AD_DC_HOWTO, с моими дополнениями.
P.S. Если кому-то будет интересно могу еще написать «мануал» про включение резервного контроллера на Ubuntu в домен.
На сегодняшний день сетевые среды окружают нас повсюду, и многие организации решают использовать операционные системы на базе Linux для своих серверов. Однако, во многих случаях возникает потребность в интеграции Linux с Windows, чтобы обеспечить управление пользователями и ресурсами в единой сетевой среде.
Для этой цели можно использовать контроллер домена, который предоставляет средства аутентификации, авторизации и управления пользователями и группами. В данной статье мы рассмотрим пошаговую инструкцию по настройке контроллера домена на Linux для Windows.
Прежде чем начать настройку, необходимо установить необходимые пакеты на вашем Linux-сервере. Для этого в терминале введите команду sudo apt-get install samba krb5-user winbind. После установки всех необходимых пакетов, приступим к конфигурации.
… (дальнейший текст статьи)
Содержание
- Вводная информация о контроллере домена на Linux для Windows
- Почему нужно настраивать контроллер домена на Linux для Windows
- Необходимое программное обеспечение для настройки контроллера домена
- Подготовка Linux для установки контроллера домена
- Установка и настройка контроллера домена на Linux
- Подключение Windows к контроллеру домена на Linux
- Дополнительные рекомендации и ресурсы
Вводная информация о контроллере домена на Linux для Windows
Контроллер домена – это сервер, который управляет учетными записями пользователей, группами, политиками безопасности и другими ресурсами в сети. Он обеспечивает централизованное управление и аутентификацию пользователей, а также контроль доступа к ресурсам.
Использование контроллера домена на Linux для Windows позволяет снизить затраты на лицензирование и обеспечить гибкое управление сетью. Настройка контроллера домена на Linux – достаточно простая задача, если иметь соответствующие знания и инструкции.
В следующих разделах пошаговая инструкция описывает процесс установки и настройки контроллера домена на Linux для Windows, чтобы вы могли успешно выполнить данную задачу.
Почему нужно настраивать контроллер домена на Linux для Windows
Настройка контроллера домена на Linux для Windows может предоставить несколько значимых преимуществ. Вот некоторые из основных причин, почему это важно:
- Меньшие затраты: Использование Linux вместо Windows для настройки контроллера домена может помочь снизить расходы на лицензирование операционной системы.
- Открытость и свобода: Linux основан на открытом исходном коде, что позволяет пользователям иметь полный контроль над своей системой. Это позволяет более гибко настраивать и адаптировать контроллер домена под свои потребности.
- Безопасность: Некоторые пользователи считают Linux более безопасной операционной системой по сравнению с Windows. Передача аутентификации и авторизации через контроллер домена на Linux может помочь улучшить безопасность вашей сети.
- Стабильность: Linux обычно считается более стабильной операционной системой, что может быть особенно полезно при настройке контроллера домена, который должен работать непрерывно.
- Интеграция с другими системами: Настройка контроллера домена на Linux позволяет более эффективно интегрировать его с другими компонентами инфраструктуры, такими как серверы и сервисы.
В целом, использование Linux для настройки контроллера домена может предоставить гибкость, стабильность и эффективность, которые многие организации и пользователи ценят. Решение о выборе операционной системы для контроллера домена должно быть основано на уникальных потребностях и требованиях вашей сети и организации.
Необходимое программное обеспечение для настройки контроллера домена
Для успешной настройки контроллера домена на операционной системе Linux для Windows вам понадобится следующее программное обеспечение:
1. Samba: Samba является основным компонентом для настройки контроллера домена на Linux. Он предоставляет функциональность совместного использования файлов и принтеров между Linux и Windows, а также позволяет создавать домены для Windows. Установите последнюю версию пакета Samba на вашей операционной системе Linux.
2. Kerberos: Kerberos — это протокол аутентификации, который используется для обеспечения безопасности и аутентификации пользователей в сети Windows. Установите Kerberos на вашей системе и настройте его для работы с Samba.
3. DNS: Наличие функционирующего DNS-сервера внутри контроллера домена очень важно для правильной работы сети. Установите и настройте DNS-сервер на вашей системе. Вы можете использовать BIND или любой другой DNS-сервер, который поддерживает динамическую регистрацию и обновление записей DNS.
4. LDAP: LDAP (Lightweight Directory Access Protocol) — это протокол доступа к каталогам, который используется для хранения и организации информации о пользователях, группах и других сущностях в сети Windows. Установите и настройте сервер LDAP на вашей системе.
5. SSL сертификат: Для обеспечения безопасной связи между контроллером домена и клиентами Windows, вам понадобится SSL сертификат. Вы можете либо создать свой собственный самоподписанный сертификат, либо получить сертификат от доверенного удостоверяющего центра.
Установка и настройка всех необходимых компонентов программного обеспечения является важным шагом для успешной настройки контроллера домена на Linux для Windows. Обратитесь к соответствующей документации и руководствам для вашей операционной системы Linux и используемых программных компонентов, чтобы правильно выполнить эту задачу.
Подготовка Linux для установки контроллера домена
Перед установкой контроллера домена на Linux необходимо выполнить несколько шагов подготовки. Эти шаги включают установку необходимого программного обеспечения и настройку системы.
- Установите операционную систему Linux, которую вы хотите использовать в качестве контроллера домена. Рекомендуется выбрать последнюю стабильную версию, поддерживаемую вашим оборудованием.
- Обновите систему до последней версии, чтобы иметь доступ ко всем последним исправлениям и улучшениям.
- Установите необходимое программное обеспечение. Для установки контроллера домена на Linux, вам потребуется Samba – бесплатная и открытая реализация протокола SMB/CIFS.
- Настройте сетевое подключение. Проверьте настройки сети, чтобы контроллер домена мог взаимодействовать с другими компьютерами в сети.
- Настройте DNS-резолвер. Убедитесь, что ваш контроллер домена будет иметь возможность правильно разрешать доменные имена в IP-адреса и наоборот.
После выполнения этих шагов ваша Linux-система будет готова к установке и настройке контроллера домена. Следующим шагом будет установка и настройка самого контроллера домена, что будет представлено в следующем разделе статьи.
Установка и настройка контроллера домена на Linux
Для установки Samba на Linux выполните следующие шаги:
1. Установите пакеты Samba и Samba-common:
sudo apt-get install samba samba-common
2. Создайте пользователя, который будет являться администратором домена:
sudo useradd -s /bin/false -m -d /var/lib/samba -c "Samba Domain Admin" administrator
3. Установите пароль для администратора домена:
sudo smbpasswd -a administrator
4. Отредактируйте файл конфигурации Samba:
sudo nano /etc/samba/smb.conf
5. Внесите следующие изменения в файл:
[global]
workgroup = DOMAIN
netbios name = SERVER
server role = active directory domain controller
dns forwarder = IP_ADDRESS
[netlogon]
path = /var/lib/samba/sysvol/DOMAIN/scripts
read only = no
[sysvol]
path = /var/lib/samba/sysvol
read only = no
6. Сохраните и закройте файл.
7. Перезапустите службу Samba:
sudo systemctl restart smbd nmbd
Теперь ваш контроллер домена на Linux готов к использованию. Вы можете настроить клиентские компьютеры с Windows для входа в домен и использовать его для управления пользователями, группами и ресурсами с помощью инструментов Samba.
Подключение Windows к контроллеру домена на Linux
Чтобы подключить операционную систему Windows к контроллеру домена на Linux, нужно выполнить ряд шагов.
1. Убедитесь, что на компьютере с Windows установлена полная версия операционной системы, а также корректно настроена сеть.
2. Откройте «Панель управления» в Windows и выберите раздел «Учетные записи пользователей». В открывшемся окне выберите «Сеть и общий доступ» и затем «Сетевые настройки центра и общего доступа».
3. В разделе «Изменение настроек адаптера» найдите сетевое подключение, которое вы используете, щелкните правой кнопкой мыши и выберите «Свойства».
4. В открывшемся окне выберите протокол «Internet Protocol Version 4 (TCP/IPv4)» и нажмите кнопку «Свойства».
5. В появившемся окне выберите «Использовать следующий IP-адрес» и установите IP-адрес контроллера домена на Linux, а также его подсеть. Запомните эти данные, потому что они понадобятся при настройке подключения Windows к контроллеру домена на Linux.
6. После ввода IP-адреса и подсети нажмите «OK», а затем «Закрыть».
7. Теперь нужно присоединить компьютер с Windows к домену, созданному на контроллере домена на Linux. Для этого щелкните правой кнопкой мыши по значку «Компьютер» на рабочем столе, выберите «Свойства» и перейдите на вкладку «Компьютерное имя».
8. На вкладке «Компьютерное имя» нажмите кнопку «Изменить» и выберите «Домен». Введите имя вашего домена, созданного на контроллере домена на Linux, и нажмите кнопку «ОК».
9. После нажатия кнопки «ОК» система попросит ввести имя пользователя и пароль администратора домена на Linux. Введите соответствующие данные и нажмите «ОК».
10. После этого Windows должен успешно подключиться к контроллеру домена на Linux. Перезагрузите компьютер для применения изменений.
Шаг | Описание |
---|---|
1 | Установите полную версию Windows и проверьте настройки сети |
2 | Откройте «Панель управления» и выберите «Сетевые настройки центра и общего доступа» |
3 | Откройте свойства сетевого подключения в разделе «Изменение настроек адаптера» |
4 | Выберите протокол «Internet Protocol Version 4 (TCP/IPv4)» и откройте его свойства |
5 | Введите IP-адрес и подсеть контроллера домена на Linux |
6 | Нажмите «ОК» и «Закрыть» для применения настроек сетевого подключения |
7 | Откройте свойства компьютера, выберите вкладку «Компьютерное имя» |
8 | Нажмите «Изменить» и введите имя домена на контроллере домена на Linux |
9 | Введите имя пользователя и пароль администратора домена на Linux |
10 | Перезагрузите компьютер для применения изменений и успешного подключения к домену на Linux |
Дополнительные рекомендации и ресурсы
В процессе настройки контроллера домена на Linux для Windows, может возникнуть необходимость обратиться к дополнительным рекомендациям и ресурсам. Вот некоторые полезные советы:
1. Проверьте документацию
Перед началом настройки контроллера домена, рекомендуется внимательно изучить документацию Linux-дистрибутива, который вы собираетесь использовать. В документации обычно приводятся подробные инструкции по установке и настройке службы Samba.
2. Посетите форумы и сообщества
Если возникнут вопросы или проблемы во время настройки, вы можете обратиться за помощью в форумы и сообщества, посвященные линуксу и Samba. Там опытные пользователи и разработчики смогут поделиться своими знаниями и помочь вам разобраться с возникшими проблемами.
3. Используйте помощник по установке и настройке
Некоторые Linux-дистрибутивы предлагают специальные утилиты и помощники, которые упрощают установку и настройку контроллера домена. Проверьте наличие таких инструментов в вашей системе и воспользуйтесь ими, чтобы упростить процесс.
4. Ознакомьтесь с документацией Samba
Samba — это инструмент, который позволяет Linux-системам взаимодействовать с Windows-системами. Изучите документацию Samba, чтобы лучше понять его возможности и настройки.
5. Проверьте конфигурацию SELinux
Если на вашей системе включен SELinux (Security-Enhanced Linux), убедитесь, что правильно настроена конфигурация SELinux для работы с Samba. В противном случае, SELinux может блокировать необходимые операции и вызывать проблемы.
Корректная настройка контроллера домена на Linux для Windows может быть непростой задачей. Однако, правильная установка и конфигурация позволит вам наслаждаться всеми преимуществами Windows-сети на вашей Linux-системе.
В современном мире информационных технологий все чаще возникает потребность в установке контроллера домена для Windows на серверах, работающих под управлением операционной системы Linux. Это связано с тем, что Linux является стабильной и надежной платформой, которая может обеспечить высокую производительность и безопасность в работе с сетью.
Такая конфигурация может быть особенно полезна в организациях, где используются как Windows, так и Linux, поскольку позволяет объединить и централизовать процессы аутентификации и авторизации пользователей, а также управление политиками безопасности. Это существенно упрощает работу системного администратора и повышает безопасность всей инфраструктуры.
В этой статье мы рассмотрим подробное руководство и настройку контроллера домена на Linux для Windows. Мы покажем, как установить необходимые компоненты и программное обеспечение, а также подробно объясним, как настроить и сконфигурировать контроллер домена для обеспечения полноценной работы с Windows клиентами. Мы также рассмотрим важные аспекты безопасности и производительности при работе с контроллером домена на Linux.
Если вы хотите использовать Linux вместе с Windows и создать интегрированную и удобную сетевую инфраструктуру, контроллер домена на Linux для Windows является важным компонентом этого процесса. Следуя руководству и рекомендациям, представленным в этой статье, вы сможете успешно настроить контроллер домена на основе Linux и создать надежную и безопасную сетевую среду для работы ваших пользователей.
Содержание
- Контроллер домена на Linux для Windows
- Руководство по установке
- Настройка контроллера домена
- Интеграция с Windows системами
Контроллер домена на Linux для Windows
Основным компонентом контроллера домена в Linux является Samba — свободная реализация протокола SMB/CIFS, который используется для обеспечения совместимости с Windows-системами. Samba позволяет настроить домен на Linux-сервере, создавая аналоги домена, контроллера домена, пользователей и групп.
Настройка контроллера домена на Linux для Windows требует следующих шагов:
1 | Установка и настройка Linux-сервера. Для этой цели можно использовать различные дистрибутивы, такие как Ubuntu Server, CentOS или Debian. Требуется установить Samba и настроить его для работы в качестве контроллера домена. |
2 | Создание домена и настройка пользователей и групп. Samba позволяет создавать домен, добавлять пользователей и группы, назначать им различные права доступа и настраивать политики безопасности. |
3 | Настройка клиентских компьютеров. Клиентские компьютеры подключаются к домену, используя настройки Samba. Это позволяет пользователям входить в домен, а также использовать различные функции, такие как управление доступом и авторизацию. |
Контроллеры домена на Linux для Windows предлагают ряд преимуществ, таких как открытый исходный код, бесплатность, гибкость и возможность использования существующей инфраструктуры Linux. Они также могут быть особенно полезны для малых и средних предприятий, которые хотят снизить расходы на лицензии и оборудование.
В итоге, создание контроллера домена на Linux для Windows — это эффективный и экономически выгодный способ управления сетью Windows, используя свободные и открытые технологии.
Руководство по установке
Представляем вашему вниманию руководство по установке контроллера домена на Linux для Windows. Этот процесс довольно простой, но требует некоторых предварительных действий и настроек.
Шаг 1: Установка Linux
Первым делом необходимо установить операционную систему Linux на ваш сервер. Вы можете выбрать любой популярный дистрибутив Linux, такой как Ubuntu, CentOS или Debian. Для этого загрузите образ операционной системы с официального сайта и следуйте инструкциям по установке.
Шаг 2: Обновление системы
После установки Linux необходимо обновить все пакеты и установить последние исправления безопасности. Для этого выполните команду:
sudo apt update && sudo apt upgrade
Шаг 3: Установка Samba
Samba — это программное обеспечение, которое позволяет Linux-серверам взаимодействовать с клиентами Windows по протоколам SMB и CIFS. Установите Samba, выполнив команду:
sudo apt install samba
Шаг 4: Создание пользователя root
Для управления контроллером домена вам потребуется пользователя с правами root. Создайте пользователя root и установите пароль:
sudo adduser root
sudo passwd root
Шаг 5: Установка Kerberos и Winbind
Установите пакеты Kerberos и Winbind, которые позволят Linux-серверу аутентифицировать пользователей Windows:
sudo apt install krb5-user krb5-config winbind
Шаг 6: Настройка Kerberos
Следующий шаг — настройка Kerberos для вашей сети Windows. Отредактируйте файл /etc/krb5.conf и добавьте следующую конфигурацию:
[libdefaults]
default_realm = YOUR.DOMAIN
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
YOUR.DOMAIN = {
kdc = your.domain.controller
admin_server = your.domain.controller
}
[domain_realm]
.your.domain = YOUR.DOMAIN
your.domain = YOUR.DOMAIN
Шаг 7: Настройка Samba
Отредактируйте файл /etc/samba/smb.conf и добавьте следующую конфигурацию:
[global]
workgroup = YOURDOMAIN
realm = YOUR.DOMAIN
security = ADS
encrypt passwords = yes
dns proxy = no
winbind refresh tickets = yes
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
idmap config * : backend = tdb
idmap config * : range = 70001-80000
template homedir = /home/%D/%U
template shell = /bin/bash
preferred master = no
domain master = no
local master = no
os level = 0
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
Шаг 8: Рестарт Samba
После внесения всех изменений перезапустите службу Samba, чтобы изменения вступили в силу:
sudo systemctl restart smbd
Шаг 9: Присоединение к домену
Теперь вы готовы присоединить свой Linux-сервер к домену Windows. Выполните следующую команду:
sudo net ads join -U Administrator
Шаг 10: Проверка
Проверьте, что контроллер домена успешно установлен, выполнив команду:
sudo net ads info
Поздравляем! Теперь ваш Linux-сервер является контроллером домена для Windows.
Настройка контроллера домена
Настройка контроллера домена на Linux для Windows может быть выполнена следующим образом:
- Установите необходимые пакеты для работы с контроллером домена на Linux.
- Создайте пользователя с правами администратора для управления контроллером домена.
- Сгенерируйте и настройте сертификаты для обеспечения безопасной связи с клиентами.
- Настройте DNS-сервер для регистрации и разрешения имен клиентов в домене.
- Создайте конфигурационный файл для контроллера домена, указав необходимые параметры.
- Запустите контроллер домена и проверьте его работоспособность.
- Настройте клиентские компьютеры для присоединения к домену и проверьте их подключение.
При выполнении настройки контроллера домена важно удостовериться, что все шаги выполняются корректно и без ошибок. После успешной настройки контроллера домена, вы сможете управлять пользовательскими учетными записями, группами, политиками безопасности и другими аспектами доменной структуры.
Интеграция с Windows системами
Для интеграции с Windows системами на контроллере домена на Linux используются различные протоколы и технологии:
Протокол/технология | Описание |
---|---|
Active Directory (AD) | Контроллер домена на Linux может быть настроен в качестве замены сервера Active Directory. Это позволяет использовать стандартные инструменты Windows для управления пользователями, группами и политиками без необходимости установки дополнительного программного обеспечения на клиентской стороне. |
Kerberos | Протокол Kerberos обеспечивает безопасную аутентификацию пользователей в Windows домене на Linux. Клиенты Windows могут использовать Kerberos для авторизации на сервере и доступа к ресурсам. |
LDAP | Протокол LDAP позволяет работать с каталогом пользователей и ресурсов, хранящимся на контроллере домена на Linux. Он обеспечивает доступ к информации о пользователях, группах и других объектах домена. |
Samba | Samba является пакетом программного обеспечения, который позволяет Linux-системам работать с протоколами и сервисами Windows. В контексте контроллера домена на Linux, Samba обеспечивает интеграцию с Windows-клиентами для обеспечения общего доступа к файлам и принтерам, а также управления пользователями и группами. |
Благодаря интеграции с Windows системами, контроллер домена на Linux может быть использован в смешанной среде, где присутствуют как Windows, так и Linux клиенты. Это позволяет организациям использовать гибридные решения и перейти на Linux-серверы без полного отказа от Windows систем.
Использование Samba 4 в роли контроллера домена Active Directory. Такой способ позволяет вводить Windows 7/8 в домен безо всяких манипуляций с реестром.
Возможности
Поддерживаются базовые возможности Active Directory:
- Аутентификация рабочих станций Windows и Linux и служб;
- Авторизация и предоставление ресурсов;
- Групповые политики (GPO);
- Перемещаемые профили (Roaming Profiles);
- Поддержка инструментов Microsoft для управления серверами (Remote Server Administration Tools) с компьютеров под управлением Windows (под WINE не работает);
- Поддержка протоколов SMB2 и SMB3 (в том числе с поддержкой шифрования);
- Репликация с другими серверами (в том числе с Windows 2012).
Не поддерживается
Не поддерживаются следующие возможности[1]:
- Не реплицируется хранилище SYSVOL (можно использовать osync[2][3]);
- Доверительные отношения с некоторыми ограничениями[4]):
- Правила SID filtering не реализованы;
- Невозможно добавить пользователей и группы в доменные группы доверенного домена;
- Не поддерживаются поддомены[5];
- В Samba отсутствует полноценная поддержка фантомных объектов[6];
- Проблемы при построении структуры AD (Active Directory browser), проблемы при поиске объектов в другом домене;
- При применении групповых политик в многодоменной среде могут быть проблемы с определением, в каком домене находится компьютер;
- DFS работает только в режиме одиночного сервера;
- Не реализован протокол DFS-R[7];
- Не полностью реализована поддержка контроллеров домена только на чтение[8] — RODC[9];
- Ограничения размера базы TDB в 4 ГБ[10], приводит к невозможности перехода от леса доменов к плоской структуре с одним доменом (решено в samba-4.9 и старше с использованием бекенда LMDB[11]).
- Не закончено тестирование поддержки CTDB (хранение данных в кластерной инфраструктуре);
- Не закончено тестирование работы Winbind.
Смотрите также статью Возможности и ограничения Samba 4 как контроллера домена Active Directory на http://habrahabr.ru/.
Внимание! Samba AD DC несовместима с OpenLDAP и MIT Kerberos, поэтому службы, использующие MIT Kerberos, несовместимы с ним.
Внимание! Samba AD DC функционирует на уровне контроллера доменов Windows 2008 R2. Вы можете ввести его в домен Windows 2012 как клиента, но не как контроллер домена.
Установка
1. Установите пакет task-samba-dc с версии 4.3.1 для Samba DC на базе Heimdal Kerberos или task-samba-dc-mitkrb5 с версии 4.10.3-alt4 для Samba DC на базе MIT Kerberos, который установит необходимое.
Примечание: До версии 4.3.1 требовалось явно установить пакеты: samba-DC python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-client krb5-kinit
Примечание: Samba на базе Heimdal Kerberos использует KDC несовместимый с MIT Kerberos, поэтому на контроллере домена на базе Heimdal Kerberos из пакета samba-dc, для совместимости с клиентской библиотекой libkrb5, в krb5.conf (в блоке —- libdefaults) необходимо отключить использование ядерного кеша ключей — KEYRING:persistent:%{uid}
:
# control krb5-conf-ccache default
2. Так как Samba в режиме контроллера домена (Domain Controller, DC) использует свой сервер LDAP, свой центр распределения ключей KDC (сервер Kerberos) и свой сервер DNS (если не включен плагин BIND9_DLZ), перед установкой
остановите конфликтующие службы krb5kdc и slapd, а также bind:
# for service in smb nmb krb5kdc slapd bind; do chkconfig $service off; service $service stop; done
или
# for service in smb nmb krb5kdc slapd bind; do systemctl disable $service; systemctl stop $service ; done
Примечание: Вы так же можете отключить службы и выключить автозагрузку служб графическим способом в ЦУС. Например, в ALT Server зайдите в Система > Администрирование > ЦУС > Режим эксперта> Системные службы.
Примечание: При использовании плагина BIND9_DLZ, после создания домена, службу bind потребуется включить.
Создание нового домена
Восстановление к начальному состоянию samba
Очищаем базы и конфигурацию Samba (если уже создавался домен):
# rm -f /etc/samba/smb.conf # rm -rf /var/lib/samba # rm -rf /var/cache/samba # mkdir -p /var/lib/samba/sysvol
Внимание! Обязательно удаляйте /etc/samba/smb.conf перед созданием домена:
rm -f /etc/samba/smb.conf
Выбор имени домена
Имя домена для разворачиваемого DC должно состоять минимум из двух компонентов, разделённых точкой.
При этом должно быть установлено правильное имя узла и домена для сервера hostnamectl set-hostname name:
- HOSTNAME=dc.domain.alt в /etc/sysconfig/network
- # hostname dc.domain.alt
- # domainname domain.alt
Внимание! При указании домена, имеющего суффикс .local, потребуется на сервере и подключаемых компьютерах под управлением Linux
отключить службу avahi-daemon
.
Создание домена с SAMBA_INTERNAL
Создание домена одной командой
Создание контроллера домена domain.alt с паролем администратора Pa$$word:
# samba-tool domain provision --realm=domain.alt --domain domain --adminpass='Pa$$word' --dns-backend=SAMBA_INTERNAL --server-role=dc
Примечание: В команду можно добавить параметр, который позволяет указать внешний DNS-сервер, чтобы DC мог разрешать внешние доменные имена:
--option="dns forwarder=xxx.xxx.xxx.xxx"
Интерактивное создание домена
Примечание: У Samba свой собственный DNS-сервер. В DNS forwarder IP address нужно указать внешний DNS-сервер, чтобы DC мог разрешать внешние доменные имена.
В примере показано создание домена domain.alt.
Запустите samba-tool domain provision:
# samba-tool domain provision
Realm [DOMAIN.ALT]:
Domain [DOMAIN]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]:
Administrator password:
Retype password:
Looking up IPv4 addresses
More than one IPv4 address found. Using 192.168.1.1
Looking up IPv6 addresses
No IPv6 address will be assigned
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
Adding DomainDN: DC=domain,DC=alt
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=domain,DC=alt
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: c228
NetBIOS Domain: DOMAIN
DNS Domain: domain.alt
DOMAIN SID: S-1-5-21-80639820-2350372464-3293631772
При запросе ввода нажимайте Enter за исключением запроса пароля администратора («Administrator password:» и «Retype password:»).
Примечание: Пароль администратора должен быть не менее 7 символов и содержать символы как минимум трёх групп из четырёх возможных: латинских букв в верхнем и нижнем регистрах, чисел и других небуквенно-цифровых символов.
Параметры —use-rfc2307 —use-xattrs=yes позволяют поддерживать расширенные атрибуты типа UID и GID в схеме LDAP и ACL на файловой системе Linux.
Запуск службы
Установите службу по умолчанию и запустите её:
# systemctl enable --now samba
Примечание: Если служба после установки никаким способом не запускается, перезагрузите сервер
Создание домена с BIND9_DLZ
По умолчанию в Samba используется dns-backend = SAMBA_INTERNAL, для возможности переключения режимов dns_backend для сервера SAMBA_INTERNAL/BIND9_DLZ требуется внести следующие изменения:
- Установить необходимые пакеты (bind и bind-utils) на сервер:
-
# apt-get install bind bind-utils
-
- На сервере в файл /etc/samba/smb.conf в блок [global] добавить строку:
- Отключить chroot:
-
# control bind-chroot disabled
-
- Отключить KRB5RCACHETYPE:
-
# grep -q KRB5RCACHETYPE /etc/sysconfig/bind || echo 'KRB5RCACHETYPE="none"' >> /etc/sysconfig/bind
-
- Подключить плагин BIND_DLZ:
-
# grep -q 'bind-dns' /etc/bind/named.conf || echo 'include "/var/lib/samba/bind-dns/named.conf";' >> /etc/bind/named.conf
-
- Привести /etc/bind/options.conf к виду (вместо {} подставить свои параметры в «»):
-
options { version "unknown"; directory "/etc/bind/zone"; pid-file ""; dump-file "/var/run/named_dump.db"; statistics-file "/var/run/named.stats"; recursing-file "/var/run/recursing"; tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab"; forwarders { {{ samba_dns_forward }}; }; allow-query { localnets; {{ samba_network }}; }; allow-recursion { localnets; {{ samba_network }}; }; max-cache-ttl 86400; }; logging { category lame-servers {null;}; };
- Например:
-
options { version "unknown"; directory "/etc/bind/zone"; pid-file ""; dump-file "/var/run/named_dump.db"; statistics-file "/var/run/named.stats"; recursing-file "/var/run/recursing"; tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab"; minimal-responses yes; //может понадобиться отключить dnssec //dnssec-enable no; //dnssec-validation no; allow-query { localnets; 192.168.0.0/24; }; allow-recursion { localnets; 192.168.0.0/24; }; include "/etc/bind/resolvconf-options.conf"; max-cache-ttl 86400; }; logging { category lame-servers {null;}; }; zone "example.test" { type forward; forwarders { 192.168.0.113; }; };
-
- Выполнить остановку bind:
- При выполнении команды создания домена одной командой указать тип dns-backend = BIND9_DLZ:
-
# samba-tool domain provision --realm=domain.alt --domain domain --adminpass='Pa$$word' --dns-backend=BIND9_DLZ --server-role=dc
-
- Далее произвести рестарт — samba, bind:
-
# systemctl restart samba # systemctl restart bind
-
Настройка Kerberos
Откройте от имени суперпользователя файл /etc/krb5.conf.
Проверить что установлено значение false в строке «dns_lookup_realm = false«.
Раскомментируйте строку в [libdefaults] «default realm» и введите название области заглавными буквами.
Ниже, под строкой [realms] вместо EXAMPLE.COM введите название области, а вместо example.com в «default domain» введите IP-адрес сервера с Samba.
Под строкой [domain_realm] example.com и EXAMPLE.COM замените на ваш домен сохраняя регистр.
Альтернативный вариант
В момент создания домена Samba автоматически конфигурирует шаблон файла krb5.conf для вашего домена, и оставляет его в директории /var/lib/samba/private/krb5.conf.
Как следствие, можно его просто скопировать с заменой:
# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
Проверка работоспособности
1. Общая информация о домене:
# samba-tool domain info 127.0.0.1
Forest : domain.alt
Domain : domain.alt
Netbios domain : DOMAIN
DC name : c228.domain.alt
DC netbios name : C228
Server site : Default-First-Site-Name
Client site : Default-First-Site-Name
2. Просмотр предоставляемых служб:
# smbclient -L localhost -U administrator
Enter TEST\administrator's password:
Sharename Type Comment
--------- ---- -------
sysvol Disk
netlogon Disk
public Disk Public Stuff
free Disk
IPC$ IPC IPC Service (Samba 4.14.10)
SMB1 disabled -- no workgroup available
3. Проверка конфигурации DNS
3.1 Убедитесь в наличии nameserver 127.0.0.1 в /etc/resolv.conf:
host domain.alt
3.2 Проверяем имена хостов:
- адрес _kerberos._udp.*адрес домена с точкой
# host -t SRV _kerberos._udp.domain.alt. _kerberos._udp.domain.alt has SRV record 0 100 88 c228.domain.alt.
- адрес _ldap._tcp.*адрес домена с точкой
# host -t SRV _ldap._tcp.domain.alt. _ldap._tcp.domain.alt has SRV record 0 100 389 c228.domain.alt.
- адрес хоста.*адрес домена с точкой
# host -t A c228.domain.alt. c228.domain.alt has address 192.168.1.1
Если имена не находятся, проверяйте выключение службы named.
systemctl status named
4. Проверка Kerberos:
Внимание! Имя домена должно быть в верхнем регистре, иначе выдаст:
kinit: KDC reply did not match expectations while getting initial credentials
# kinit administrator
Password for administrator@DOMAIN.ALT:
Warning: Your password will expire in 41 days on Вт 11 ноя 2014 08:58:30
Просмотр полученного билета:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DOMAIN.ALT
Valid starting Expires Service principal
30.09.2014 10:23:54 30.09.2014 20:23:54 krbtgt/DOMAIN.ALT@DOMAIN.ALT
renew until 01.10.2014 10:23:45
Внимание! Для серверов, не внесённых в зону обратного просмотра DNS, авторизация через nslcd по GSSAPI будет вылетать с диагностикой:
Local error: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Server not found in Kerberos database)
Управление пользователями
Создать пользователя с паролем[12], :
samba-tool user create <имя пользователя> samba-tool user setexpiry <имя пользователя>
Например,
samba-tool user create ivanov --given-name='Иван Иванов' --mail-address='ivanov@stand.alt'
Просмотреть доступных пользователей:
samba-tool user list
Удалить пользователя:
samba-tool user delete <имя пользователя>
Отключить пользователя:
samba-tool user disable <имя пользователя>
Включить пользователя:
samba-tool user enable <имя пользователя>
Изменить пароль пользователя:
samba-tool user setpassword <имя пользователя>
Не забудьте разблокировать пользователя:
samba-tool user setexpiry <имя пользователя> --noexpiry
Внимание! Не допускайте одинаковых имён для пользователя и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). [13]
Если компьютер с таким именем заведён, удалить его можно командой:
pdbedit -x -m <имя>
Добавить группу:
samba-tool group add groupname
Добавить UNIX-группу:
samba-tool group add groupname --nis-domain=samdom --gid-number=<next available GID>
Удалить группу:
samba-tool group delete groupname
Добавить пользователя в группу:
samba-tool group addmembers "Domain Users" user samba-tool group addmembers "Domain Users" user,user1,user2
Удалить пользователя из группы:
samba-tool group removemembers "Domain Users" user samba-tool group removemembers "Domain Users" user,user1,user2
Пользователи группы:
samba-tool group listmembers "Domain Users" | grep username
Группы пользователя:
samba-tool user show username
Смотрим значение memberOf.
Заведение вторичного DC
Подробная инструкция на английском языке: https://wiki.samba.org/index.php/Join_a_domain_as_a_DC
Примечание: Для корректного взаимодействия обязательно проверить синхронизацию времени на серверах (актуально при использовании виртуальных машин, и снапшотов!)
Имя узла: dc2.domain.alt (192.168.1.106). Предполагается, что пакет task-samba-dc уже установлен.
1. Заводим IP-адрес для dc2 на PDC (с версии Samba 4.7 и выше — запись вносится автоматически):
Внимание! Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
# samba-tool dns add 192.168.1.1 domain.alt DC2 A 192.168.1.106 -U administrator
2. На dc2.domain.alt правим файл /etc/krb5.conf:
[libdefaults] default_realm = DOMAIN.ALT dns_lookup_realm = false dns_lookup_kdc = true
Примечание: Перед вводом в домен в resolvconf обязательно должен быть добавлен PDC как nameserver.
3. Получаем билет и убеждаемся, что билет получен:
Внимание! Имя домена должно быть указано в верхнем регистре
# kinit administrator@DOMAIN.ALT Password for administrator@DOMAIN.ALT: Warning: Your password will expire in 37 days on Пт 14 ноя 2014 14:31:40 # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@DOMAIN.ALT Valid starting Expires Service principal 07.10.2014 18:51:01 08.10.2014 04:51:01 krbtgt/DOMAIN.ALT@DOMAIN.ALT renew until 08.10.2014 18:50:51
4. Вводим в домен:
# samba-tool domain join domain.alt DC -Uadministrator --realm=domain.alt
Если всё нормально, в конце видим:
Joined domain DOMAIN (SID S-1-5-21-80639820-2350372464-3293631772) as a DC
5. После успешного ввода в домен в resolvconf необходимо сменить адрес PDC на адрес вторичного DC (в нашем примере 192.168.1.106).
6. Делаем службу samba запускаемой по умолчанию:
# systemctl enable samba
7. Запускаем службу, соответственно:
# systemctl start samba
Репликация
Внимание! Помните, что без успешной двунаправленной репликации в течение 14 дней DC исключается из Active Directory
Внимание! Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
Примечание: Начиная с версии samba 3.5 топология репликации выстраивается автоматически, следовательно пункты 1. и 2. можно пропустить
1. Реплицируем на вторичном DC (с первичного):
# samba-tool drs replicate dc2.domain.alt c228.domain.alt dc=domain,dc=alt -Uadministrator
(сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP).
2. Реплицируем на вторичном DC (на первичный):
# samba-tool drs replicate с228.domain.alt dc2.domain.alt dc=domain,dc=alt -Uadministrator
(сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP).
Примечание: Имя домена в именах серверов можно опустить (если они одинаковые)
3. Просмотр статуса репликации на PDC:
# samba-tool drs showrepl
Примечание: Если репликация на Windows не работает, добавьте в Active Directory Sites and Services новое соединение Active Directory. Реплицируйте на DC, подождите минут 5 и пробуйте реплицировать с Samba на Windows
Доверительные отношения
Доверительные отношения позволяют аутентифицироваться под пользователями не только текущего домена, но и доверенных.
Подробнее:
- Samba/InterdomainTrustRelationships
- Trusts
Ссылки
- Рекомендуемые серверные установочные образы (после установки выполните обновление ОС):
- Альт Сервер
- Альт Линукс СПТ 7.0 (сертификат ФСТЭК)
- стартеркиты: x86_64, i586 (GPL)
- существуют сборки samba-DC для порта на «Эльбрус»
- Тестовые образы:
- altlinux-p7-server-samba4.iso (старая стабильная ветка)
- regular-server-samba4.iso (нестабильная ветка)
- Документация на русском языке:
- Инструкция по настройке Samba в качестве контроллера домена, совместимого с Active Directory
- Samba4 — использование Python Scripting Interface
- Возможности и ограничения Samba 4 как контроллера домена Active Directory
- Samba DC в качестве второго контроллера в домене AD Windows 2012R2 и перемещаемые папки для клиентов на Windows и Linux
- wiki.samba.org:
- Samba AD DC HOWTO
- Installing RSAT on Windows for AD Management
- Добавление ещё одного DC в домен
- Samba & Windows Profiles
- Join an additional Samba DC to an existing Active Directory
- Backup and restore an Samba AD DC
- Иные ресурсы:
- Заведение групповых политик для домена (ролик)
- Samba 4 — domain controller#Join domain with a linux machine
Советы
- Введите в домен машину с Windows, установите на неё Remote Server Administration Tools и управляйте доменом из графического интерфейса.
- Для того, чтобы посмотреть конфигурацию LDAP контроллера домена, получите билет Kerberos (через kinit) и выполните:
ldapsearch -LLL -b '' -s base -x
- Для отключения проверки необходимой длины и стойкости паролей выполните:
samba-tool domain passwordsettings set --complexity=off samba-tool domain passwordsettings set --history-length=0 samba-tool domain passwordsettings set --min-pwd-age=0 samba-tool domain passwordsettings set --max-pwd-age=0
- Для просмотра всех записей DNS домена выполните:
samba-tool dns query localhost test.altlinux '@' ALL -U 'Administrator%Pa$$word'
- Для удаления заведённого хоста выполните:
samba-tool dns delete localhost test.altlinux host-51 A 192.168.3.51 -U 'Administrator%Pa$$word'
Troubleshooting
- Если домен не создаётся с ошибкой типа
ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2241
- Удалите директиву include или includedir в /etc/krb5.conf[14]
This post will detail how to setup a pair of active directory domain
controllers using Samba 4 on Ubuntu 20.04 Server. One will be a primary domain controller and the other will be a backup domain controller. This provides redundancy incase one server has to go down for updates.
Pre-Requisites
- Two independent linux servers, this guide will use Ubuntu 20.04 Server.
- A domain name, sometimes called a fully qualified domain name (FQDN).
Network Configuration
You should configure these as static IP addresses on your router.
Hostname | Domain | IP Address |
---|---|---|
dc1 | ad.ifsg.ca | 192.168.2.10 |
dc2 | ad.ifsg.ca | 192.168.2.11 |
Setup the Primary Domain Controller
This is broken up into pre-configuration of the server, installation and post-installation configuration.
Pre-configuration of the server
Set the hostname of the primary domain controller to dc1
~$ sudo hostnamectl set-hostname dc1
Edit the hosts file to resolve dc1’s hostname to the static IP address of this
server
~$ sudo nano /etc/hosts
# Add the following line to the /etc/hosts file:
192.168.2.10 dc1.ad.ifsg.ca dc1
Package installation
Install all of the required packages for Samba
~$ sudo apt-get install -y acl attr samba samba-dsdb-modules samba-vfs-modules winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools
Provision the primary Samba domain controller. The first step is to ensure
that Samba is not running, search for any Samba processes and if it is present
kill the «root process» pid.
~$ ps -ax | grep samba
1593 ? Ss 0:00 samba: root process
4319 pts/0 S+ 0:00 grep --color=auto samba
~$ sudo kill 1593
Now move the default smb.conf and krb5.conf files installed by the package manager
~$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
~$ sudo mv /etc/krb5.conf /etc/krb5.conf.orig
Run the samba-tool in interactive mode to configure the primary domain controller
- This needs to be run as root (aka sudo), so it can write the configuration files to /etc/ and elsewhere
- The configuration tool will first ask for you to provide several pieces of information, the default is between square brackets []. You should be able to click through with the defaults, but the following were the settings I used:
- Realm = AD.IFSG.CA
- Domain = AD
- DNS backbone = SAMBA_INTERNAL
- I am configuring using the Internal DNS, you can use BIND9 but that is outside the scope of this guide.
- DNS forwarder IP address = 208.67.222.222 208.67.220.220
- Several DNS IPs can be provided by separating them with a space
- Administrator password
- Should meet the minimum requirements as indicated in Microsoft’s complexity requirements
~$ sudo samba-tool domain provision --use-rfc2307 --interactive
Realm [AD.IFSG.CA]
Domain [AD]
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.53]: 208.67.222.222 208.67.220.220
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
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
Unable to determine the DomainSID, can not enforce uniqueness constrant on local domainSIDs
Adding DomainDN: DC=ad,DC=ifsg,DC=ca
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers and extended rights
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Repackaging database from v1 to v2 format
Repack: repacked 10000 records so far
Repackaging database from v1 to v2 format
Repackaging database from v1 to v2 format
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=ad,DC=ifsg,DC=ca
Creating DomainDnsZones and ForestDnsZones partitions
Population DomainDnsZones and ForestDnsZones partitions
Repacking database from v1 to v2 format
Setting up sam.lbd rootDSE marking as syncronized
Fixing privision GUIDs
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
Merge the contents of the file with your system krb5.conf or replace it with this one. Do not create a symlink!
Setting up fake yp server settings
Once the above files are installed, your Samba AD server will be ready to use
Server Role: active directory domain controller
Hostname: dc1
NetBIOS Domain: AD
DNS Domain: ad.ifsg.ca
DOMAIN SID: S-1 ...
Post install configuration and testing
Copy the krb5.conf file that samba-tool created to /etc/
~$ sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
The Samba domain controller can now be started
~$ sudo samba
Check the DNS settings
~$ host -t SRV _ldap._tcp.ad.ifsg.ca
Host _ldap._tcp.ad.ifsg.ca not found: 3(NXDOMAIN)
~$ host -t SRV _kerberos._udp.ad.ifsg.ca
Host _kerberos._udp.ad.ifsg.ca not found: 3(NXDOMAIN)
~$ host -t A dc1.ad.ifsg.ca
dc1.ad.ifsg.ca has address 192.168.2.10
This seems to indicate that DNS is not working properly, per Rico Sharp’s documentation, this is caused by Ubuntu’s built-in DNS server (systemd-resolve) is overriding the internal DNS server that Samba has. We can see this is the case by checking what is listening on port 53
~$ sudo netstat -tulpn | grep :53
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 120/systemd-resolve
udp 0 0 127.0.0.53:53 0.0.0.0:* 120/systemd-resolve
To fix this we can disable the systemd-resolve service on the server
~$ sudo systemctl stop systemd-resolved
~$ sudo systemctl disable systemd-resolved
~$ sudo unlink /etc/resolv.conf
~$ sudo nano /etc/resolv.conf
nameserver 192.168.2.10
search ad.ifsg.ca
~$ sudo reboot
Start the Samba domain controller again
~$ sudo samba
Check the DNS settings again, these should resolve correctly now
~$ host -t SRV _ldap._tcp.ad.ifsg.ca
_ldap._tcp.ad.ifsg.ca has SRV record 0 100 389 dc1.ad.ifsg.ca.
~$ host -t SRV _kerberos._udp.ad.ifsg.ca
_kerberos._udp.ad.ifsg.ca has SRV record 0 100 88 dc1.ad.ifsg.ca.
~$ host -t A dc1.ad.ifsg.ca
dc1.ad.ifsg.ca has address 192.168.2.10
We now need to configure the network time protocol (NTP) server, chronyd. Chronyd enables time syncronization which is required by the DC to function; however, by default it is not configured during the Samba setup process. What is more, the Samba instructions point us in the wrong direction for where the NTP socket folder is setup.
~$ samba -b | grep 'NTP' | awk '{print $NF}'
/var/lib/samba/ntp_signd
By default, the permissions and group settings will not let chronyd use this socket.
~$ ls -ld /var/lib/samba/ntp_signd
drwxr-x--- 2 root root 4096 Jan 24 05:08 /var/lib/samba/ntp_signd
Change the permissions as follows.
~$ sudo chown root:_chrony /var/lib/samba/ntp_signd/
~$ sudo chmod 750 /var/lib/samba/ntp_signd/
~$ ls -ld /var/lib/samba/ntp_signd
drwxr-x--- 2 root _chrony 4096 Jan 24 05:08 /var/lib/samba/ntp_signd
Now edit the chronyd configuration file to connect it to the above socket and enable connections on the network.
~$ sudo nano /etc/chrony/chrony.conf
# Settings for Samba DC
allow 192.168.2.0/24 # dns netmask
ntpsigndsocket /var/lib/samba/ntp_signd
By defafult Samba is not configured to run as a service meaning it will not startup automatically with the server. Running Samba as a service can be accomplished using systemd. First though, kill the Samba process so the service setup does not fail.
~$ ps -ax | grep samba
1593 ? Ss 0:00 samba: root process
4319 pts/0 S+ 0:00 grep --color=auto samba
~$ sudo kill 1593
Now configure Samba to run as a systemd service. Mask the smbd, nmbd and winbind services and unmask the samba-ad-dc service.
~$ sudo systemctl mask smbd nmbd winbind
~$ sudo systemctl disable smbd nmbd winbind
~$ sudo systemctl stop smbd nmbd winbind
~$ sudo systemctl unmask samba-ad-dc
~$ sudo systemctl start samba-ad-dc
~$ sudo systemctl enable samba-ad-dc
Reboot the server and test!
~$ sudo reboot
~$ sudo systemctl status samba-ad-dc
Now confirm the server is working, test using kinit
~$ kinit Administrator
If you this worked, you should have entered your password and seen a message about your password expiring in # days
Setup the Backup Domain Controller
This will also be broken up into a few different sections
Pre-configuration of the server
Set the hostname of the primary domain controller to dc2
~$ sudo hostnamectl set-hostname dc2
Edit the hosts file to resolve dc1 and dc2 hostnames to the static IP address of each server
~$ sudo nano /etc/hosts
# Add the following line to the /etc/hosts file:
192.168.2.10 dc1.ad.ifsg.ca dc1
192.168.2.11 dc2.ad.ifsg.ca dc2
Package installation
Install all of the required packages for Samba
~$ sudo apt-get install -y acl attr samba samba-dsdb-modules samba-vfs-modules winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools
Provision the backup Samba domain controller. The first step is to ensure
that Samba is not running, search for any Samba processes and if it is present
kill the «root process» pid.
~$ ps -ax | grep samba
1593 ? Ss 0:00 samba: root process
4319 pts/0 S+ 0:00 grep --color=auto samba
~$ sudo kill 1593
Now move the default smb.conf and krb5.conf files installed by the package manager
~$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
~$ sudo mv /etc/krb5.conf /etc/krb5.conf.orig
Now move the default smb.conf and krb5.conf files installed by the package manager
~$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
~$ sudo mv /etc/krb5.conf /etc/krb5.conf.orig
We can now try and install the backup DC server
~$ sudo samba-tool domain join ad.ifsg.ca DC -W AD -U Administrator
We get an error that it can’t find a primary AD server to connect to. This seems to be related to the systemd-resolved and is preventing samba-tool from seeing the primary AD server. To fix this edit the /etc/resolv.conf and try again.
~$ sudo cp /etc/resolv.conf /etc/resolv.conf.orig
~$ sudo nano /etc/resolv.conf
Change nameserver to 192.168.2.10
Change search to ad.ifsg.ca
Try installing the backup DC server again
~$ sudo samba-tool domain join ad.ifsg.ca DC -W AD -U Administrator
Finding a writable DC for domain 'ad.ifsg.ca'
Found DC dc1.ad.ifsg.ca
Password for [AD\Administrator]:
workgroup is AD
realm is ad.ifsg.ca
Adding CN=DC2,OU=Domain Controlls,DC=ac,DC=ifsg,DC=ca
Adding CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=ac,DC=ifsg,DC=ca
Adding CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=ac,DC=ifsg,DC=ca
Adding SPNs to CN=DC2,OU=Domain Controllers,DC=ac,DC=ifsg,DC=ca
Setting acount password for DC2$
Enabling account
Calling bare provision
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
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
Unable to determine the DomainSID, can not enforce uniqueness constrant on local domainSIDs
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
Merge the contents of the file with your system krb5.conf or replace it with this one. Do not create a symlink!
Provision OK for domain DN DC=ad,DC=ifsg,DC=ca
Starting replication
[ works through replicating the databases ]
Adding 1 remote DNS records for DC2.ad.ifsg.ca
Adding DNA A record DC2.ad.ifsg.ca for IPv4: 192.168.2.11
Adding DNS CNAME record [long id]._msdcs.ad.ifsg.ca for DC2.ad.ifsg.ca
All other DNS recordxcs (like _ldap SRV records) will be created samba_dnsupdate on first startup
Replicating new DNS records in DC=DomainDnsZones,DC=ad,DC=ifsg,DC=ca
Replicating new DNS records in DC=ForestDnsZones,DC=ad,DC=ifsg,DC=ca
Sending DsReplicaUpdateRefs for all the replicated partitions
Setting isSyncronized and dsServiceName
Setting up secrets database
Joined daomin AD (SID S-1 ... ) as a DC
Post install configuration and testing
Copy the krb5.conf file that samba-tool created to /etc/
~$ sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
We can attempt startup of the Samba backup domain controller
~$ sudo samba
Check the DNS settings
~$ host -t SRV _ldap._tcp.ad.ifsg.ca
Host _ldap._tcp.ad.ifsg.ca not found: 3(NXDOMAIN)
~$ host -t SRV _kerberos._udp.ad.ifsg.ca
Host _kerberos._udp.ad.ifsg.ca not found: 3(NXDOMAIN)
~$ host -t A dc1.ad.ifsg.ca
dc1.ad.ifsg.ca has address 192.168.2.10
Same problem as we saw with the primary DC server. Checking what is listening on port 53 indicates the same problem.
~$ sudo netstat -tulpn | grep :53
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 120/systemd-resolve
udp 0 0 127.0.0.53:53 0.0.0.0:* 120/systemd-resolve
To fix this we can disable the systemd-resolve service on the server
~$ sudo systemctl stop systemd-resolved
~$ sudo systemctl disable systemd-resolved
~$ sudo unlink /etc/resolv.conf
~$ sudo nano /etc/resolv.conf
nameserver 192.168.2.11
search ad.ifsg.ca
~$ sudo reboot
Start the Samba domain controller again
~$ sudo samba
Check the DNS settings again, these should resolve correctly now. There will be two lines in for ldap and kerberos connections as we now have a second domain controller.
~$ host -t SRV _ldap._tcp.ad.ifsg.ca
_ldap._tcp.ad.ifsg.ca has SRV record 0 100 389 dc1.ad.ifsg.ca.
_ldap._tcp.ad.ifsg.ca has SRV record 0 100 389 dc2.ad.ifsg.ca.
~$ host -t SRV _kerberos._udp.ad.ifsg.ca
_kerberos._udp.ad.ifsg.ca has SRV record 0 100 88 dc1.ad.ifsg.ca.
_kerberos._udp.ad.ifsg.ca has SRV record 0 100 88 dc2.ad.ifsg.ca.
~$ host -t A dc1.ad.ifsg.ca
dc1.ad.ifsg.ca has address 192.168.2.10
~$ host -t A dc2.ad.ifsg.ca
dc2.ad.ifsg.ca has address 192.168.2.11
As before we need to configure the NTP server chronyd.
~$ samba -b | grep 'NTP' | awk '{print $NF}'
/var/lib/samba/ntp_signd
By default, the permissions and group settings will not let chronyd use this socket.
~$ ls -ld /var/lib/samba/ntp_signd
drwxr-x--- 2 root root 4096 Jan 24 05:08 /var/lib/samba/ntp_signd
Change the permissions as follows.
~$ sudo chown root:_chrony /var/lib/samba/ntp_signd/
~$ sudo chmod 750 /var/lib/samba/ntp_signd/
~$ ls -ld /var/lib/samba/ntp_signd
drwxr-x--- 2 root _chrony 4096 Jan 24 05:08 /var/lib/samba/ntp_signd
Now edit the chronyd configuration file to connect it to the above socket and enable connections on the network.
~$ sudo nano /etc/chrony/chrony.conf
# Settings for Samba DC
allow 192.168.2.0/24 # dns netmask
ntpsigndsocket /var/lib/samba/ntp_signd
By defafult Samba is not configured to run as a service meaning it will not startup automatically with the server. Running Samba as a service can be accomplished using systemd. First though, kill the Samba process so the service setup does not fail.
~$ ps -ax | grep samba
1593 ? Ss 0:00 samba: root process
4319 pts/0 S+ 0:00 grep --color=auto samba
~$ sudo kill 1593
Now configure Samba to run as a systemd service. Mask the smbd, nmbd and winbind services and unmask the samba-ad-dc service.
~$ sudo systemctl mask smbd nmbd winbind
~$ sudo systemctl disable smbd nmbd winbind
~$ sudo systemctl stop smbd nmbd winbind
~$ sudo systemctl unmask samba-ad-dc
~$ sudo systemctl start samba-ad-dc
~$ sudo systemctl enable samba-ad-dc
Reboot the server and test!
~$ sudo reboot
~$ sudo systemctl status samba-ad-dc
Now confirm the server is working, test using kinit
~$ kinit Administrator
If you this worked, you should have entered your password and seen a message about your password expiring in # days
Lastly, confirm that redundancy is working by ssh’ing into the dc1 server and turning off the DC server
~$ sudo systemctl stop samba-ad-dc
# On dc2 try and use kinit
~$ kinit Administrator
# If you are asked for your password and it says it will expire then the backup server is working.
# On dc1, turn the primary DC back on.
~$ sudo systemctl start samba-ad-dc
References
- Samba 4 Active Directory Domain Controller on Ubuntu 18.04 Server
- Setting up Samba as an Active Directory Domain Controller
- Joining a Samba DC to an Existing Active Directory