Думаю если вы попали на эту страницу, значит тем или иным путем пришли к выводу о том, что необходимо настроить систему централизованного управления учетными записями в локальной сети вашего предприятия, скорее всего это контроллер домена на Ubuntu или Windows. У вас как обычно 3 основных пути для реализации своего плана:
-
- Выкинуть деньги на ветер
- Сесть за пиратство
- Использовать какое-либо решение на базе линукса
Если честно, есть еще 4-й вариант, и он очень даже неплох. Основывается он на Synology NAS, обладающих просто божественными возможностями даже в самых маленьких реализациях.
Но вернемся к нашим реалиям. Наш вариант номер 3. В деталях он выглядит примерно так:
- У нас в сети нет ни одного серверного решения Microsoft
- Мы не хотим появления в нашей сети пиратских серверных решений Microsoft
- В большинстве своем наша сеть состоит из машин с ОС Ubuntu Desktop, но есть и пара ноутбуков с вендами.
- У нас есть необходимость централизованного управления учётными записями
- У нас есть одно или несколько сетевых хранилищ и мы хотим управлять доступом к хранимой на них информации, предоставляя его через протоколы NFS и CIFS(smb). Сетевые хранилища могут быть реализованы как на голых ubuntu server, так на различных решениях типа FreeNAS, NAS4Free и тд, так и на покупных решениях, типа QNAP, Synology и тд.
Реализовывать контроллер домена на Ubuntu мы будем на хосте ESXi с примерно следующими характеристиками:
- CPU: 1 ядро на 2.2-2.8 GHz
- RAM: 2 Gb
- HDD: 1 hdd 32Gb
- Network: 1 Сетевая карта
- Имя сервера: ag-dc
- Имя домена: adminguide.lan
Что касается физической машины, то подойдет любая не сильно мощная машина. Но если там хотя бы 4‑х ядерный CPU и 4+ гига оперативной памяти, я рекомендовал бы запилить на неё бесплатный гипервизор ESXi и уже с его помощью полностью утилизировать имеющиеся мощности.
Поправка к инструкции: Везде в тексте инструкции, имя тестового samba домена изменено с adminguide.local на adminguide.lan. зона .local может вызывать глюки в виндовых сетях. Если вы видите на скриншоте adminguide.local, на самом деле там должно быть adminguide.lan
-
Устанавливаем Ubuntu Server 18.04 LTS amd64
-
Изменяем имя сервера на ag-dc
- После изменения имени сервера в соответствии с инструкцией, перезагружаем сервер следующей командой:
sudo reboot -h now
- Проверяем имя сервера
После загрузки сервера, авторизовываемся и смотрим результат команды
hostnamectl
. Должно быть следующее:
Важно понимать, что после того, как вы настроите контроллер домена на Ubuntu, смена имени его сервера приведет к непредвиденным последствиям, поэтому не надо пытаться превратить свою тестовую попытку, в рабочее решение. После того как вы один или несколько раз инициализируете свой ad-dc и убедитесь в его работоспособности, удалите все свои достижения и уже только после этого выполняйте чистовую работу, полностью отдавая себе отчет в производимых действиях.
- После изменения имени сервера в соответствии с инструкцией, перезагружаем сервер следующей командой:
-
Настраиваем статический IP адрес
- На данном этапе, пока у нас еще не стоит самба и не инициализирован домен, наши настройки будут следующими:
IP адрес и маска сети сервера: 192.168.1.100/24
Шлюз 192.168.1.1 (роутер в тестовой сети)
dns сервер 192.168.1.1 (роутер в тестовой сети). Переходим по ссылке и выполняем все по инструкции приводя настройки сети к следующему виду:dhcp4: no dhcp6: no addresses: [192.168.1.100/24, ] gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.1, ]
Вот как выглядит файл настроек на тестовом сервере:
Главным ДНС сервером на данный момент должен быть указан локальный роутер, или любой другой днс сервер, например 8.8.8.8, способный выполнять эти функции.
- На данном этапе, пока у нас еще не стоит самба и не инициализирован домен, наши настройки будут следующими:
-
Отключаем systemd-resolved
- Останавливаем сервис systemd-resolved
sudo service systemd-resolved stop
- Убираем systemd-resolved из автозапуска
sudo systemctl disable systemd-resolved.service
- Удаляем ссылку /etc/resolv.conf
sudo rm /etc/resolv.conf
- Открываем на редактирование файл /etc/resolv.conf
sudo nano /etc/resolv.conf
По факту, на данный момент этого файла еще не существует, он будет создан при сохранении изменений.
- Добавляем переадресацию на наш днс сервер и указываем search домен в resolv.conf .
nameserver 192.168.1.1 search adminguide.lan
На данном этапе, nameserver должен указывать на тот же адрес, что и в пункте 3.1
В search указывается имя нашего будущего домена Active Directory.
Файл /etc/resolv.conf должен выглядеть следующим образом:
- Сохраняем изменения нажав Ctrl+O
- Останавливаем сервис systemd-resolved
-
Настраиваем файл /etc/hosts
- Одним из обязательных условий, является резолв имени нашего сервера, на его IP в локальной сети. Если сервер находится в сети 192.168.1.0/24 и его IP 192.168.1.100, то набирая на нем команду ping ag-dc или же ping ag-dc.adminguide.lan должен резолвиться адрес 192.168.1.100. Имя контроллера домена, не должно резолвиться на локальный адрес 127.0.0.1 или какой либо другой адрес, кроме того, что назначен сетевому интерфейсу который использует DC.
sudo nano /etc/hosts
- Приводим файл hosts к следующему виду:
127.0.0.1 localhost.localdomain localhost 192.168.1.100 ag-dc.adminguide.lan ag-dc
- Сохраняем с помощью команды
Ctrl+O
- Одним из обязательных условий, является резолв имени нашего сервера, на его IP в локальной сети. Если сервер находится в сети 192.168.1.0/24 и его IP 192.168.1.100, то набирая на нем команду ping ag-dc или же ping ag-dc.adminguide.lan должен резолвиться адрес 192.168.1.100. Имя контроллера домена, не должно резолвиться на локальный адрес 127.0.0.1 или какой либо другой адрес, кроме того, что назначен сетевому интерфейсу который использует DC.
-
Проверяем что не запущено никаких самвобых процессов
Для этого понадобится следующая команда:
ps ax | egrep "samba|smbd|nmbd|winbindd"
Если есть хоть один процесс и вы видите что-то типа этого:
таки возможно вы настраиваете AD-DC не на новом сервере или на сервере развернутом не из оригинального образа. Если вы решите на свой страх и риск продолжить установку, то вам необходимо убить все процессы с именами samba, smbd, nmbd, winbindd. Чтобы убить процесс, надо использовать команду sudo kill <id-процесса>:sudo kill 3135
-
Устанавливаем Samba
На этом этапе так же важно знать, что после того как вы инициализируете контроллер домена на Ubuntu, вы не сможете изменить его название. Если вы называете свой домен ADMINGUIDE.LAN, он на веки вечные останется доменом ADMINGUIDE.LAN . Самба не поддерживает изменение имени домена. После его инициализации, чтобы изменить название, вам придется вывести из него все машины что вы успели зарегистрировать в нем, удалить старый домен, инициализировать новый и зарегистрировать машины повторно. Стоит ли говорить, что даже при 25 рабочих станциях — это уже проблема
- Устанавливаем samba и все необходимые пакеты командой:
sudo apt -y install samba krb5-config winbind smbclient krb5-user
- Область по умолчанию для Kerberos версии 5
Указываем ADMINGUIDE.LAN
- Серверы Kerberos для вашей области
Указываем ag-dc.adminguide.lan
- Управляющий сервер вашей области Kerberos
Так же указываем ag-dc.adminguide.lan
- Ожидаем окончание установки
- Устанавливаем samba и все необходимые пакеты командой:
-
Бэкапим стандартную конфигурацию Samba
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp
-
Инициируем контроллер домена на Ubuntu 18.04
-
Запускаем инициализацию в интерактивном режиме
Из своего домена, мы так же будем управлять пользователями и группами линуксовых машин. Поэтому нам нужно заранее включить поддержку NIS, с помощью команды —use-rfc2307
sudo samba-tool domain provision --use-rfc2307 --interactive
Включение поддержки NIS, не имеет никаких противопоказаний к применению, даже если ваш домен никогда не будет обслуживать линуксовые машины. В то же время, если инициализировать домен без поддержки NIS, и когда-нибудь в него войдут линуксовые машины и захочется управлять их учётками, расширять схему Active Directory и добавлять поддержку NIS, придётся уже ручками на свой страх и риск.
-
Указываем параметры домена
Если в процессе настройки не было допущено ошибок, все необходимые данные установщик поместит в квадратные скобки в виде стандартных значений:
Realm [ADMINGUIDE.LAN]: Domain [ADMINGUIDE]: 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) [192.168.1.1]: Administrator password: Retype password:
Когда установщик запросит пароль, рекомендую указать пароль понадежнее. Это будет пароль от учетной записи администратора домена.
Если на этом этапе в квадратных скобках у вас указано не то значение которое вам бы хотелось, значит вероятнее всего в настройках ранее вы допустили серьезный косяк.
-
Смотрим результаты инициализации
Следующие строки возвестят о том, что контроллер домена на Ubuntu успешно завершил инициализацию:
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf 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: ag-dc NetBIOS Domain: ADMINGUIDE DNS Domain: adminguide.lan DOMAIN SID: S-1-5-21-4033150357-3109693390-3173112578
Но радоваться еще слишком рано. Если вы видите нечто кардинально другое, значит вы допустили какую-то ошибку выше, либо прервали инициализацию запущенную ранее, либо инициализация вывалилась с ошибкой и сейчас вы пытаетесь инициализировать домен повторно. Если упереться рогом, можно вычистить все данные и записи сгенерированные в процессе инициализации и запустить её повторно. Это даже может привести к её успешному окончанию. НЕ ПЫТАЙТЕСЬ ЭТОГО ДЕЛАТЬ. Инициализируйте домен на новом чистом сервере. Если в процессе подготовки к инициализации, вы допустили косяк, и на момент запуска инициализации вы его не устранили и она завершилось ошибкой — просто удалите текущую инсталяцию сервера и начните сначала. Если вы настраиваете контроллер домена на виртуальной машине, сделайте снапшот выключенного сервера прежде чем приступать к пункту 7.1. В будущем в случае какого-то косяка на этапе инициализации, возвращайтесь к этому снапшоту и перепроверяйте всё исправляйте ошибки.
-
-
Настройка DC
Контроллер домена на Ubuntu, реализованный с помощью Samba сам автоматически запускает необходимые сервисы. Поэтому если они будут запущены не Samba DC, а например вручную пользователем, это может привести к необратимым последствиям и домен перестанет функционировать как должен. Поэтому на всякий случай, необходимо сделать эти сервисы недоступными для ручного запуска и отключить их автозапуск:
sudo systemctl stop smbd nmbd winbind sudo systemctl disable smbd nmbd winbind sudo systemctl mask smbd nmbd winbind
Делаем samba-ad-dc доступным для запуска, включаем сервис и включаем его автозапуск
sudo systemctl unmask samba-ad-dc sudo systemctl start samba-ad-dc sudo systemctl enable samba-ad-dc
-
Настройка DNS
- Изменяем dns сервер в настройках сети на IP настраиваемого сервера. По факту он будет ссылаться на себя же как на днс сервер 192.168.1.100
Приводим настройки параметров сети к следующему виду:dhcp4: no dhcp6: no addresses: [192.168.1.100/24, ] gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.100, ]
- Изменяем dns сервер в resolv.conf, так же указывая там IP своего сервера, приводя его к следующему виду:
nameserver 192.168.1.100 search adminguide.lan
- Изменяем dns сервер в настройках сети на IP настраиваемого сервера. По факту он будет ссылаться на себя же как на днс сервер 192.168.1.100
-
Настройка Kerberos
В процессе инициализации домена, создается файл krb5.conf, путь к нему указывается в последних строках отчета об успешной инициализации. Поэтому чтобы избежать ручной настройки файла /etc/krb5.conf, нам нужно заменить его только что сгенерированным.
sudo cp /var/lib/samba/private/krb5.conf /etc/
-
Проверяем результаты своей работы
- Смотрим все шары файл сервера DC
smbclient -L localhost -U%
Они создаются в процессе инициализации домена и должны присутствовать для его правильного функционирования.
Контроллер домена на Ubuntu — Результат smbclient -L localhost -U%
- Проверяем подключение к ним
Подключаемся к папке netlogon от имени администратора доменаsmbclient //localhost/netlogon -UAdministrator -c 'ls'
Когда система запросит пароль, необходимо ввести пароль администратора домена, который мы указали при инициализации, в пункте 9.2
Контроллер домена на Ubuntu — Результат smbclient //localhost/netlogon -UAdministrator -c ‘ls’
В случае успешной авторизации, вы без ошибок подключитесь к папке
- Проверяем правильность настройки DNS
Без правильно функционирующей службы DNS, AD DC не сможет функционировать как запланировано. Главное, нам необходимо убедиться, что SAMBA_INTERNAL dns настроен правильно и работает. Для этого попытаемся извлечь из него необходимые записи- Смотрим SRV запись _ldap
host -t SRV _ldap._tcp.adminguide.lan.
- Смотрим SRV запись _kerberos
host -t SRV _kerberos._udp.adminguide.lan.
- Проверяем A запись контроллера домена
host -t A ag-dc.adminguide.lan.
Контроллер домена на Ubuntu — Результаты проверки DNS
- Смотрим SRV запись _ldap
- Проверяем работоспособность Kerberos
kinit administrator
- Смотрим кеш авторизационных тикетов Kerberos
klist
Контроллер домена на Ubuntu — Результат kinit administrator и klist
- Смотрим все шары файл сервера DC
- Полезные ссылки:
- Best practices for sysvol maintenance
- Обновлённая версия статьи
Related
Серверное администрирование, Блог компании RUVDS.com
Рекомендация: подборка платных и бесплатных курсов создания сайтов — https://katalog-kursov.ru/
Как быть, если и контроллер домена нужен, и сэкономить хочется? Сегодня мы представим вашему вниманию один из ответов на этот вопрос. Речь пойдёт о пакете Samba, об Ubuntu Server, и о том, как всё это быстро и правильно настроить.
С помощью Samba можно превратить сервер, работающий под управлением ОС семейства Linux, в контроллер домена (Domain Controller, DC) Active Directory. Тот DC, который мы собираемся поднять, сможет работать как контроллер домена Windows NT4. Он подойдёт для централизованного хранения данных учётных записей пользователей и компьютеров.
Надо отметить, что мы не будем говорить о задаче создания основного контроллера домена (Primary Domain Controller, PDC) Active Directory, хотя связка Ubuntu Server/Samba, рассмотренная здесь (с добавлением OpenLDAP) вполне может играть и такую роль.
Итак, наша цель — быстро и экономично обзавестись AD DC. В этом нам поможет интерактивный инструмент samba-tool
, который предназначен для автоматизированной подготовки сервера к работе, а именно, он позволяет сформировать файл настроек /etc/smb.conf
.
Начнём с установки необходимого ПО.
Установка
Первый шаг — установка на сервер пакетов Samba и Winbind. Сделать это можно с помощью следующей команды:
sudo apt install samba libpam-winbind
Время установки невелико, даже с учётом того, что системе может понадобиться загрузить некоторые зависимости.
После установки можно приступать к настройкам.
Подготовка к настройке
Перед запуском samba-tool
нужно проверить файл /etc/hosts
, а именно — верны ли записанные в нём полное доменное имя и IP-адрес контроллера домена. Там можно найти что-то вроде этого:
127.0.0.1 localhost.localdomain
IP_ADDRESS_OF_SERVER localhost
IP_ADDRESS_OF_SERVER SAMBADOM.EXAMPLE.NET
SAMBADOM
Здесь IP_ADDRESS_OF_SERVER
— это реальный адрес сервера Samba. Проверьте, чтобы файл содержал актуальные данные.
Далее нужно задать имя узла для сервера. Как можно судить по приведённому выше фрагменту файла /etc/hosts
, в нашем случае имя узла — SAMBADOM
. Для того, чтобы его настроить, откройте файл /etc/hostname
и соответствующим образом его измените. Далее — перезагрузите сервер.
После того, как сервер перезагрузится, нужно удалить существующий файл smb.conf
, а так же — любые файлы баз данных Samba (это .tdb
и .ldb
-файлы). Для того, чтобы найти директории, содержащие эти файлы, выполните следующие команды:
mbd -b | grep "CONFIGFILE"
smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"
На рисунке ниже показаны результаты исполнения этих команд, которыми можно будет воспользоваться для того, чтобы удалить ненужные файлы. Если же подобные файлы в системе не существуют — можно сразу двигаться дальше.
Поиск файлов, которые надо удалить
Использование samba-tool
Теперь пришло время воспользоваться samba-tool
. Мы запустим это средство в интерактивном режиме, выполнив следующую команду:
sudo samba-tool domain provision --use-rfc2307 --interactive
Выполнив команду с ключом --use-rfc2307
, мы включаем расширения NIS. Samba-tool
предложит настроить следующие параметры:
Realm
. Это полное DNS-имя домена, которое настроено в файлеhosts
. Например:SAMBADOM.EXAMPLE.NET
.Domain
. Доменное имя NetBIOS сервера Samba. Обратите внимание на то, что здесь рекомендуется использовать первую часть доменного имени DNS. Например,SAMBADOM
.Server Role
. Этот параметр предназначен для указания типа серверной роли. По умолчанию здесь установлено значениеdc
, оно нас устроит.DNS backend
. Этот параметр позволяет настроить DNS-сервер. Здесь так же оставляем параметр по умолчанию —SAMBA_INTERNAL
.DNS forwarder IP address
. Данный параметр позволяет указать IP-адрес DNS-сервера, на который будут перенаправлены запросы, которые не может разрешить сервер Samba. Если перенаправление DNS-запросов вам не нужно — ничего не вводите в ответ на данный вопрос. Подробнее об этом можно почитать здесь.Administrator password
. Тут надо указать пароль администратора домена.
После того, как система получит ответы на интересующие её вопросы, samba-tool
настроит Samba как контроллер домена. Можете просмотреть файл /etc/samba/smb.conf
и, если нужно, внести в него изменения.
Прежде чем продолжать, позаботьтесь о регистрации пользователей в Samba. Этот шаг очень важен — иначе пользователям не удастся пройти аутентификацию. Делается это следующими командами:
ssmbpasswd -a USERNAME
smbpasswd -e USERNAME
Здесь USERNAME
— имя существующего пользователя, которого надо добавить к Samba. Указать пароль нужно будет лишь после ввода первой команды. Вторая активирует пользователя.
Настройка DNS-сервера
Нам надо, чтобы в качестве DNS-сервера на контроллере домена использовался он сам. Для того, чтобы это сделать, отредактируем файл /etc/network/interfaces
, приведя его к такому виду:
auto INTERFACE_NAME
iface INTERFACE_NAME inet static
address IP_ADDRESS_FOR_SERVER
netmask NETMASK
gateway GATEWAY
dns-nameservers IP_ADDRESS_FOR_SERVER
Тут же имеются настройки использования сетевым интерфейсом статического IP-адреса. Обратите внимание на то, что всё, набранное ЗАГЛАВНЫМИ буквами, надо настроить в соответствии с параметрами вашей системы.
После выполнения настроек перезапустите сетевые сервисы такой командой:
sudo service networking restart
Кроме того, следует отредактировать файл /etc/resolv.conf
, внеся изменения, согласующиеся с теми, о которых было сказано выше. А именно, тут нас интересует следующая строка:
nameserver IP_ADDRESS_FOR_SERVER
Здесь, вместо IP_ADDRESS_FOR_SERVER
, нужно ввести тот же адрес, который был записан в параметр dns-nameservers
выше.
Настройка Kerberos
У Kerberos имеется собственный стандартный конфигурационный файл, который нужно заменить файлом krb5.conf
, сгенерированным в ходе подготовки Samba к работе. Для того, чтобы это сделать, выполните следующие команды:
sudo mv /etc/krb5.conf /etc/krb5.conf.orig
sudo ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf
Обратите внимание на то, что вы можете столкнуться с отсутствием в системе файла /etc/krb5.conf
. Если это действительно так, достаточно будет выполнить только вторую из вышеприведённых команд.
Тестируем и подключаемся
Самое сложное позади. Теперь всё готово к тому, чтобы протестировать только что созданный контроллер домена на Samba и подключиться к нему. Быстро проверить, всё ли работает, можно с помощью такой команды:
smbclient -L localhost -U%
После ввода пароля пользователя Samba, вы должны увидеть сообщение об успешном подключении.
Успешное подключение
Как видите, при проверке smbclient
выведены сведения о netlogon
и sysvol
как об общих ресурсах. Они созданы по умолчанию и должны существовать на контроллере домена. Кроме того, в /var/lib/samba/sysvol/REALM/scripts
следует поместить любые скрипты входа в систему, которые понадобятся клиентам. Здесь REALM
соответствует тому параметру REALM
, который был задан в ходе работы с командой samba-tool
.
Итоги
Теперь контроллер домена готов принимать подключения. Однако, может оказаться так, что вам придётся отредактировать файл /etc/samba/smb.conf
, внести в него данные, отражающие ваши требования к серверу. Этот файл, сгенерированный samba-tool
, весьма лаконичен, хотя и является хорошей отправной точкой для тонкой настройки вашего AD DC, построенного на базе Samba и Ubuntu Server.
Уважаемые читатели! А какие варианты взаимодействия экосистем 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 в режиме контроллера домена (Doman 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; 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 TESTadministrator'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
Внимание! Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
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]
Состояние перевода: На этой странице представлен перевод статьи Active Directory integration. Дата последней синхронизации: 31 октября 2015. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Важно: Так как Arch Linux использует систему распространения rolling release,возможно,некоторая информация на странице может быть устаревшей из-за изменений в пакетах или конфигурациях,сделанных разработчиками. Никогда слепо не следуйте этой или любой другой инструкции. Когда в инструкции сказано изменить какой-либо файл, обязательно сделайте бэкап. Проверяйте дату последней проверки статьи.
Основной задачей системных администраторов являются попытки совместного изпользования разнообразных окружений. Мы имеем в виду смешивание разных серверных операционных систем (Обычно Microsoft Windows & Unix/Linux). Управление пользователями и аутентификацией на данный момент является наиболее сложной задачей. Популярнейший способ решения это задачи — Directory Server. Существует много открытых и коммерческих решений для разный типов *NIX; однако, только немногие решают проблему взаимодействия с Windows. Активный Каталог (AD) — служба каталогов созданная Microsoft для доменных сетей Windows. Он входит в большинство операционных систем Windows Server. Сервера,на которых запущен AD, называются контроллерами доменов(domain controllers)
Активный каталог используется как главное средство администрирования сети и безопасности.Он отвечает за аутентификацию и авторизацию все пользователей и компьютеров в доменной сети Windows, назначая и следя за правилами безопасности для всех компьютеров в сети, также устанавливая и обновляя ПО на компьютерах в этой сети. Например,когда пользователь авторизуется в компьютер,который является частью доменной сети, AD проверяет его пароль и яляется он обычным пользователем или же системным администратором.
Активный католог использует Lightweight Directory Access Protocol (LDAP) версий 2 и 3, Kerberos и DNS.
Эти же стандарты доступны в Linux, но их комбинирование — непростая задача. Эта статья поможет вам настроить хост Arch Linux для аутентификация в домене AD.
Эта статья объясняет, как интегрировать хост Arch Linux в сущестующий домен AD.
Перед продолжением у вас должен быть существующий домен AD, и пользователь с правами на добавление пользователей и компьютерных аккаунтов.
Эта сатья не предназначена ни как полное описание AD,ни как полно описание работы с Samba. Обратитесь к разделу ресурсов для дополнительной информации.
Терминология
Если вы не знакомы с AD, здесь приведены некоторые ключевые слова, которые будет полезно знать.
- Домен(Domain) : Имя,используемое для группы компьютеров и аккаунтов.
- SID : Каждый компьютер,присоединяющийся к сети должен иметь уникальный SID / Системный идентификатор.
- SMB : Блок сообщения сервера.
- NETBIOS: Network naming protocol used as an alternative to DNS. Mostly legacy, but still used in Windows Networking.
- WINS: Windows Information Naming Service. Used for resolving Netbios names to windows hosts.
- Winbind: Protocol for windows authentication. Протокол для авторизации windows.
Настройка
Настройка AD
Важно: Эта часть не была проверена, продолжайте с отсторожностью.
Обновление GPO
Возможно, нужно будет отключить Digital Sign Communication (Always) в настройках групп AD. А именно:
Local policies
->Security policies
->Microsoft Network Server
->Digital sign communication (Always)
-> выбратьdefine this policy
и поставить «галочку» наdisable
.
Если вы используете Windows Server 2008 R2, то вам нужно настроить GPO в GPO for Default Domain Controller Policy -> Computer Setting -> Policies -> Windows Setting -> Security Setting -> Local Policies -> Security Option -> Microsoft network client: Digitally sign communications (always)
Настройка Linux хоста
Следующие несколько шагов — начало конфигурации хоста. Вам понадобиться root или sudo доступ.
Установка
Установите следующие пакеты:
- samba, см. Samba
- pam-krb5
- ntp или openntpd, см. также NTPd или OpenNTPD
Обновление DNS
AD сильно зависит от DNS. Вам нужно будет обновить /etc/resolv.conf
, чтобы использовать контроллеры доменов AD:
/etc/resolv.conf
nameserver <IP1> nameserver <IP2>
Замените <IP1> и <IP2> IP адресами для сервера AD.Есили ваши AD домены не позволяют использовать DNS форвардинг или рекурсию,возможно,придётся добавить некоторые вещи.
Если ваша машина имеет дуалбут Windows и Linux, стоит использовать разные имена DNS и netbios для linux,если обе операционные системы будут членами одного домена.
Настройка NTP
См. NTPd или OpenNTPD для инструкции по настройке NTP. Стоит отметить, что OpenNTPD больше не поддерживается.
При настройке используйте IP адреса серверов AD.Как альтернативу можно использовать другие NTP сервера,которые обеспечат синхронизацию AD в то же место.Тем не менее,AD обычно запускают NTP в качестве службы.
Убедитесь,что демон настроен на sync automatically on startup.
Kerberos
Допустим,что ваша AD называется example.com. Далее допустим что ваша AD управляется двумя доменными контроллерами, главным и вторичным, которые называются PDC и BDS, pdc.example.com и bdc.example.com соответственно. Их адреса будут,например, 192.168.1.2 и 192.168.1.3. Следите за написанием,верхний регистр очень важен.
/etc/krb5.conf
[libdefaults] default_realm = EXAMPLE.COM clockskew = 300 ticket_lifetime = 1d forwardable = true proxiable = true dns_lookup_realm = true dns_lookup_kdc = true [realms] EXAMPLE.COM = { kdc = PDC.EXAMPLE.COM admin_server = PDC.EXAMPLE.COM default_domain = EXAMPLE.COM } [domain_realm] .kerberos.server = EXAMPLE.COM .example.com = EXAMPLE.COM example.com = EXAMPLE.COM example = EXAMPLE.COM [appdefaults] pam = { ticket_lifetime = 1d renew_lifetime = 1d forwardable = true proxiable = false retain_after_close = false minimum_uid = 0 debug = false } [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/kdc.log admin_server = FILE:/var/log/kadmind.log
Примечание: Heimdal 1.3.1 не принимает DES шифрование,которое необходимо для аутентификации AD до Windows Server 2008. Скорее всего вам придётся добавить
allow_weak_crypto = true
в раздел [libdefaults]
Создание ключа Kerberos
Теперь во можете запросить ключи для AD (верхний регистр необходим):
kinit administrator@EXAMPLE.COM
Можно использовать любое имя пользователя,у которого есть права администратора домена.
Подтверждение ключа
Запустите klist чтобы проверить,получили ли вы токен,должно быть нечто подобное:
# klist
Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@EXAMPLE.COM Valid starting Expires Service principal 02/04/12 21:27:47 02/05/12 07:27:42 krbtgt/EXAMPLE.COM@EXAMPLE.COM renew until 02/05/12 21:27:47
pam_winbind.conf
Если вы получаете ошибки «/etc/security/pam_winbind.conf не найден»,создайте этот файл и отредактируйте его следующим образом:
/etc/security/pam_winbind.conf
debug=no debug_state=no try_first_pass=yes krb5_auth=yes krb5_cache_type=FILE cached_login=yes silent=no mkhomedir=yes
Samba
Samba — бесплатная реализация протокола SMB/CIFS. Также она включает инструменты для Linux машин,которые заставляют их вести себя будто Windows сервера и клиенты.
Примечание: Настройка может разниться в зависимости от конфигурации сервера Windows. Будьте готовы изучать и решать проблемы.
В этом разделе мы сначала сфокусируемся на работе аутентификации с помощью изменения секции ‘Global’. Далее, мы вернёмся к остальным.
/etc/samba/smb.conf
[Global] netbios name = MYARCHLINUX workgroup = EXAMPLE realm = EXAMPLE.COM server string = %h Arch Linux Host security = ads encrypt passwords = yes password server = pdc.example.com idmap config * : backend = rid idmap config * : range = 10000-20000 winbind use default domain = Yes winbind enum users = Yes winbind enum groups = Yes winbind nested groups = Yes winbind separator = + winbind refresh tickets = yes template shell = /bin/bash template homedir = /home/%D/%U preferred master = no dns proxy = no wins server = pdc.example.com wins proxy = no inherit acls = Yes map acl inherit = Yes acl group control = yes load printers = no debug level = 3 use sendfile = no
Теперь надо «объяснить» Samba, что мы будет использовать базы даннх PDC для аутенификации.Будем использовать winbindd, который входит в поставку Samba.Winbind указывает UID и GID Linux машины для AD. Winbind использует UNIX реализацию RPC вызовов, Pluggable Authentication Modules (aka PAM) и Name Service Switch (NSS), чтобы разрешить допуск пользователей и Windows AD на Linux-машинах. Лучшая часть winbindd то,что вам не нужно размечать самому, от вас требуется только указать диапазон UID и GID! Именно их мы объявили в smb.conf.
Обновите файл настроек samba чтобы включить демона winbind
/etc/conf.d/samba
##### /etc/conf.d/samba ##### #SAMBA_DAEMONS=(smbd nmbd) SAMBA_DAEMONS=(smbd nmbd winbindd)
Далее, настройте samba
так, для запуска вместе со стартом системы. См. Daemons для подробностей.
Запуск и проверка сервисов
Запуск Samba
Надеемся,вы ещё не перезагрузились! Хорошо. Если у вас запущена X-сессия — выходите из неё,чтобы проверить вход в другой терминал не выходя из своей сессии.
Запуск Samba (включая smbd, nmbd и winbindd):
Если вы проверите список процессов,то заметите,что на самом деле winbind не запустился. Быстрый осмотр логов говорит,что SID для этого хоста может быть получен от домена:
# tail /var/log/samba/log.winbindd
[2012/02/05 21:51:30.085574, 0] winbindd/winbindd_cache.c:3147(initialize_winbindd_cache) initialize_winbindd_cache: clearing cache and re-creating with version number 2 [2012/02/05 21:51:30.086137, 2] winbindd/winbindd_util.c:233(add_trusted_domain) Added domain BUILTIN S-1-5-32 [2012/02/05 21:51:30.086223, 2] winbindd/winbindd_util.c:233(add_trusted_domain) Added domain MYARCHLINUX S-1-5-21-3777857242-3272519233-2385508432 [2012/02/05 21:51:30.086254, 0] winbindd/winbindd_util.c:635(init_domain_list) Could not fetch our SID - did we join? [2012/02/05 21:51:30.086408, 0] winbindd/winbindd.c:1105(winbindd_register_handlers) unable to initialize domain list
Присоединение к Домену
Вам нужен аккаунт администратора AD чтобы сделать это. Пусть наш логин: Administrator. Комана — ‘net ads join’
# net ads join -U Administrator
Administrator's password: xxx Using short domain name -- EXAMPLE Joined 'MYARCHLINUX' to realm 'EXAMPLE.COM'
Перезапуск Samba
winbindd не смог запуститься потому,что пока что мы не домен.
Перезапустите сервис Samba и winbind тоже должен запуститься.
NSSwitch говорит Linux хосту как получить игформацию из различных источников и к каком порядке это сделать. В нашем случае мы добаим AD как дополнительный источник для пользователей, групп и хостов.
/etc/nsswitch.conf
passwd: files winbind shadow: files winbind group: files winbind hosts: files dns wins
Проверка Winbind
Проверим, может ли winbind получить доступ к AD. Следующие команды возвращают список пользователей AD:
# wbinfo -u
administrator guest krbtgt test.user
- Note мы создали пользователя AD ‘test.user’ в домменом контоллере.
Можно сделать то же самое для групп AD:
# wbinfo -g
domain computers domain controllers schema admins enterprise admins cert publishers domain admins domain users domain guests group policy creator owners ras and ias servers allowed rodc password replication group denied rodc password replication group read-only domain controllers enterprise read-only domain controllers dnsadmins dnsupdateproxy
Проверка nsswitch
Дабы убедиться,что наш хост имеет доступ к домену для пользователей и групп, мы проверим настройки nsswitch, используя ‘getent’. Следующий вывод показывает,как оно дожно выглядеть на нетронутом Arch Linux:
# getent passwd
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/false daemon:x:2:2:daemon:/sbin:/bin/false mail:x:8:12:mail:/var/spool/mail:/bin/false ftp:x:14:11:ftp:/srv/ftp:/bin/false http:x:33:33:http:/srv/http:/bin/false nobody:x:99:99:nobody:/:/bin/false dbus:x:81:81:System message bus:/:/bin/false ntp:x:87:87:Network Time Protocol:/var/empty:/bin/false avahi:x:84:84:avahi:/:/bin/false administrator:*:10001:10006:Administrator:/home/EXAMPLE/administrator:/bin/bash guest:*:10002:10007:Guest:/home/EXAMPLE/guest:/bin/bash krbtgt:*:10003:10006:krbtgt:/home/EXAMPLE/krbtgt:/bin/bash test.user:*:10000:10006:Test User:/home/EXAMPLE/test.user:/bin/bash
Для групп:
# getent group
root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin adm:x:4:root,daemon tty:x:5: disk:x:6:root lp:x:7:daemon mem:x:8: kmem:x:9: wheel:x:10:root ftp:x:11: mail:x:12: uucp:x:14: log:x:19:root utmp:x:20: locate:x:21: rfkill:x:24: smmsp:x:25: http:x:33: games:x:50: network:x:90: video:x:91: audio:x:92: optical:x:93: floppy:x:94: storage:x:95: scanner:x:96: power:x:98: nobody:x:99: users:x:100: dbus:x:81: ntp:x:87: avahi:x:84: domain computers:x:10008: domain controllers:x:10009: schema admins:x:10010:administrator enterprise admins:x:10011:administrator cert publishers:x:10012: domain admins:x:10013:test.user,administrator domain users:x:10006: domain guests:x:10007: group policy creator owners:x:10014:administrator ras and ias servers:x:10015: allowed rodc password replication group:x:10016: denied rodc password replication group:x:10017:krbtgt read-only domain controllers:x:10018: enterprise read-only domain controllers:x:10019: dnsadmins:x:10020: dnsupdateproxy:x:10021:
Проверка команд Samba
Попробуйте некоторые команды,чтобу увидеть,может ли Samba взаимодействовать с AD:
# net ads info
[2012/02/05 20:21:36.473559, 0] param/loadparm.c:7599(lp_do_parameter) Ignoring unknown parameter "idmapd backend" LDAP server: 192.168.1.2 LDAP server name: PDC.example.com Realm: EXAMPLE.COM Bind Path: dc=EXAMPLE,dc=COM LDAP port: 389 Server time: Sun, 05 Feb 2012 20:21:33 CST KDC server: 192.168.1.2 Server time offset: -3
# net ads lookup
[2012/02/05 20:22:39.298823, 0] param/loadparm.c:7599(lp_do_parameter) Ignoring unknown parameter "idmapd backend" Information for Domain Controller: 192.168.1.2 Response Type: LOGON_SAM_LOGON_RESPONSE_EX GUID: 2a098512-4c9f-4fe4-ac22-8f9231fabbad Flags: Is a PDC: yes Is a GC of the forest: yes Is an LDAP server: yes Supports DS: yes Is running a KDC: yes Is running time services: yes Is the closest DC: yes Is writable: yes Has a hardware clock: yes Is a non-domain NC serviced by LDAP server: no Is NT6 DC that has some secrets: no Is NT6 DC that has all secrets: yes Forest: example.com Domain: example.com Domain Controller: PDC.example.com Pre-Win2k Domain: EXAMPLE Pre-Win2k Hostname: PDC Server Site Name : Office Client Site Name : Office NT Version: 5 LMNT Token: ffff LM20 Token: ffff
# net ads status -U administrator | less
objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user objectClass: computer cn: myarchlinux distinguishedName: CN=myarchlinux,CN=Computers,DC=leafscale,DC=inc instanceType: 4 whenCreated: 20120206043413.0Z whenChanged: 20120206043414.0Z uSNCreated: 16556 uSNChanged: 16563 name: myarchlinux objectGUID: 2c24029c-8422-42b2-83b3-a255b9cb41b3 userAccountControl: 69632 badPwdCount: 0 codePage: 0 countryCode: 0 badPasswordTime: 0 lastLogoff: 0 lastLogon: 129729780312632000 localPolicyFlags: 0 pwdLastSet: 129729764538848000 primaryGroupID: 515 objectSid: S-1-5-21-719106045-3766251393-3909931865-1105 ...<snip>...
Настройка PAM
Теперь мы будем менять разные правила в PAM, чтобы допустить пользователей AD к использованию системы для входа и к sudo доступу. Когда вы меняете правила, запоминание их порядка и помечены ли они как required или как sufficient критически важно,если вы хотите,чтобы всё работало,как вы задумали.Вам не стоит отклоняться от этих правил,если только вы не знаете как писать правила для PAM
В случае со входом,PAM следует сначала запросить аккаунт AD и проверять локальные аккаунты только если аккаунту AD не соответствует локальный аккаунт.Поэтому, мы добавим записи,которые включат pam_winbindd.so
в процесс аутентификации.
Главный процесс аутентификации в конфигурации PAM Arch Linux находится в /etc/pam.d/system-auth
. Начав со стандартной конфигурации из pambase
, измените её следующим образом:
system-auth
Раздел «auth»
Найдите строку:
auth required pam_unix.so ...
Удалите её, и замените следующим:
auth [success=1 default=ignore] pam_localuser.so auth [success=2 default=die] pam_winbind.so auth [success=1 default=die] pam_unix.so nullok auth requisite pam_deny.so
Раздел «account»
Найдите строку:
account required pam_unix.so
Под ней допишите следующее:
account [success=1 default=ignore] pam_localuser.so account required pam_winbind.so
Раздел «session»
Найдите строку:
session required pam_unix.so
Под ней допишите следующее:
session required pam_mkhomedir.so umask=0022 skel=/etc/skel session [success=1 default=ignore] pam_localuser.so session required pam_winbind.so
Раздел «password»
Найдите строку:
password required pam_unix.so ...
Удалите её и замените следующими:
password [success=1 default=ignore] pam_localuser.so password [success=2 default=die] pam_winbind.so password [success=1 default=die] pam_unix.so sha512 shadow password requisite pam_deny.so
Проверка входа
Теперь запустите новую сессию/войдите через ssh и попробуйте войти,использую данные аккаунта AD. Имя домена опционально, так как это было задано в настройках Winbind как ‘default realm’. Заметьте,что в случае с ssh, вам нужно изменить /etc/ssh/sshd_config
, чтобы он разрешал аутентификацию через kerberos: (KerberosAuthentication yes)
.
test.user EXAMPLE+test.user
Оба должны работать. Стоит подметить,что /home/example/test.user
будет создан автоматически.
Войдите в другую сессию использую аккаунт Linux. Удостоверьтесь,что всё ещё можете войти как root — запомните,что вы должны быть под аккаунтом root как минимум в одной сессии!
Настройка общих файлов
Ранее мы пропустили настройку общих файлов. Теперь,когда всё работает, вернитесь к /etc/smb.conf
и добавьте эксопрт для хостов,которые вы желаете сделать доступными в Windows
/etc/smb.conf
[MyShare] comment = Example Share path = /srv/exports/myshare read only = no browseable = yes valid users = @NETWORK+"Domain Admins" NETWORK+test.user
В примере выше, ключевое слово NETWORK. Не путайте его с именем домена. Для добавления групп,добавьте символ ‘@’ к группе. Заметьте, Domain Admins
заключается в «цитаты», чтобы Samba корректно считывала их,когда просматривает файл конфигурации.
Добавление файла keytab и включение беспарольного входа на машину через Kerber и ssh
Это объясняет,как сгенерировать keytab файл,который вам нужен,например,чтобы включить беспарольный вход на машину через Kerber и ssh с другой машины в том же домене. Допустим, что у вас много компьютеров в домене и вы только что добавили сервер/рабочую станцию использую описание выше в ваш домен, в котором пользователям нужен ssh для работы — например рабочаю станция GPU или вычислительный узел OpenMP и т.д. В этом случае вам, наверное, не захочется вводить пароль каждый раз при входе. С другой стороны аутентификация с помощью ключа используется множеством пользователей, в этом случае нужных полномочий для,например,монтирования общего NFSv4 с Kerberos. Так что это поможет включить беспарольные входы на машины используя «kerberos ticket forwarding».
Создание key tab файла
Запустите ‘net ads keytab create -U administrator’ как суперпользователь дабы создать keytab файл в ‘/etc/krb5.keytab’. Она напишет ваи,что необходимо включить аутентификацию с помощью keytab в файле конфигурации, чтобы мы могли совершить следующий шаг. Иногда возникают проблемы, если файл krb5.keytab уже существует,в таком случае нужно переименовать его и запустить команду ещё раз, это должно помочь.
# net ads keytab create -U administrator
Проверьте содержание файла следующим образом:
# klist -k /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 4 host/myarchlinux.example.com@EXAMPLE.COM 4 host/myarchlinux.example.com@EXAMPLE.COM 4 host/myarchlinux.example.com@EXAMPLE.COM 4 host/myarchlinux.example.com@EXAMPLE.COM 4 host/myarchlinux.example.com@EXAMPLE.COM 4 host/MYARCHLINUX@EXAMPLE.COM 4 host/MYARCHLINUX@EXAMPLE.COM 4 host/MYARCHLINUX@EXAMPLE.COM 4 host/MYARCHLINUX@EXAMPLE.COM 4 host/MYARCHLINUX@EXAMPLE.COM 4 MYARCHLINUX$@EXAMPLE.COM 4 MYARCHLINUX$@EXAMPLE.COM 4 MYARCHLINUX$@EXAMPLE.COM 4 MYARCHLINUX$@EXAMPLE.COM 4 MYARCHLINUX$@EXAMPLE.COM
Включение входа через keytab
Теперь вам нужно указать winbind,что он должен использовать keytab файлы,добавив следующий строки в /etc/samba/smb.conf:
/etc/samba/smb.conf
kerberos method = system keytab dedicated keytab file = /etc/krb5.keytab
В итоге всё должно выглядеть примерно так:
/etc/samba/smb.conf
[Global] netbios name = MYARCHLINUX workgroup = EXAMPLE realm = EXAMPLE.COM server string = %h Arch Linux Host security = ads encrypt passwords = yes password server = pdc.example.com kerberos method = system keytab dedicated keytab file = /etc/krb5.keytab idmap config * : backend = tdb idmap config * : range = 10000-20000 winbind use default domain = Yes winbind enum users = Yes winbind enum groups = Yes winbind nested groups = Yes winbind separator = + winbind refresh tickets = yes template shell = /bin/bash template homedir = /home/%D/%U preferred master = no dns proxy = no wins server = pdc.example.com wins proxy = no inherit acls = Yes map acl inherit = Yes acl group control = yes load printers = no debug level = 3 use sendfile = no
Перезапустите winbind.service с помощью ‘systemctl restart winbind.service’ с привелегиями суперпользователя.
# systemctl restart winbind.service
Проверьте,всё ли работает,получив тикет для вашей системы и запустив
# kinit MYARCHLINUX$ -kt /etc/krb5.keytab
Эта команда не должна написать ничего в консоль,ондако ‘klist’ должен показать что-то вроде этого:
# klist
Ticket cache: FILE:/tmp/krb5cc_0 Default principal: MYARCHLINUX$@EXAMPLE.COM Valid starting Expires Service principal 02/04/12 21:27:47 02/05/12 07:27:42 krbtgt/EXAMPLE.COM@EXAMPLE.COM renew until 02/05/12 21:27:47
Некоторые частые ошибки : a)забывают поставить $ или b) игнорируют чувствительный регистр — он должен быть точно таким же,как записьв keytab
Подготовка sshd на сервере
Всё,что нам нужно сделать — это добавить некоторые опции в sshd_config и перезапустить sshd.service.
Измените ‘/etc/ssh/sshd_config’ чтобы он выглядел так в нужных местах:
# /etc/ssh/sshd_config
... # Изсенить на no чтобы выключить s/key пароли ChallengeResponseAuthentication no # Опции Kerberos KerberosAuthentication yes #KerberosOrLocalPasswd yes KerberosTicketCleanup yes KerberosGetAFSToken yes # Опции GSSAPI GSSAPIAuthentication yes GSSAPICleanupCredentials yes ...
Перезапустите sshd.service:
# systemctl restart sshd.service
Добавление опций, нужных для клиента
Для начала нам нужно убедиться в том, что тикеты доступны для клиента. Обычно всё работает, но, на всякий случай, используйте следующий параметр:
forwardable = true
Далее надо добавить опции:
GSSAPIAuthentication yes GSSAPIDelegateCredentials yes
в наш файл .ssh/config
, который говорит ssh использовать эту опцию, как альтернативу: можно использовать ‘ssh -o’ (смотрите страницу справочного руководства ssh(1)).
Проверка установки
Клиент:
Убедитесь,что у вас правильный тикет, используя ‘kinit’. Затем подключитесь к своем машине через ssh
ssh myarchlinux.example.com
Вы должны подключится без просьбы ввести пароль
Если у вас также включна аутентификация ключем,нужно выполнить
ssh -v myarchlinux.example.com
чтобы увидеть,какой метод аутентификации используется на самом деле.
Для дебага вы можете включить DEBUG3 на сервере и посмотреть лог через ‘journalctl’
Настройка для полной аутентификации Kerberos без пароля.
Если ваши клиенты не используют доменные аккаунты на их локальных машинах (по какой бы то не было причине),довольно сложно будет научить их использовать ‘kinit’ перед тем,как ssh подключится к рабочей станции.Так что есть классный способ это решить:
Генерирование keytab, которые будет принимать AD
Пользователь должен выполнить:
ktutil addent -password -p username@EXAMPLE.COM -k 1 -e RC4-HMAC - enter password for username - wkt username.keytab q
Теперь провертьте файл:
kinit -kt username.keytab
Оно не должно спросить пароль, теперь просто скопируйте это в ‘~/.bashrc’, это позволит не вводит пароль каждый раз.
Интересно знать
Файл ‘username.keytab’ не спецефичен для машины,и,следовательно,может быть скопирован на другие машины. Например,мы создали файл на Linux машине и скопировали на Mac клиента так как команды в неё другие…
Смотрите также
- Wikipedia: Active Directory
- Wikipedia: Samba
- Wikipedia: Kerberos
- Samba: Documentation
- Samba Wiki: Samba & Active Directory[устаревшая ссылка 2020-08-02 ⓘ]
- Samba Man Page: smb.conf
Коммерческие решения
- Centrify
- Likewise
Выпущенная Samba 4 реализует почти полноценный аналог Active Directory (AD), включая контроллер домена, службу DNS, Kerberos-аутентификацию, групповые политики. Однако, с помощью Samba 4 пока нельзя создавать сложные доменные структуры и иерархии и устанавливать доверительные отношения, что ограничивает применимость в крупных организациях.
Таким образом, на текущий момент наиболее реальными применениями Samba 4 являются построение тестовых инфраструктур, а также внедрения в малом бизнесе.
Тем более, что во многих случаях реальный выбор не так велик. Microsoft предлагает специальные редакции Windows Server 2012 для малого бизнеса — Essentials и Foundation. Первая при цене в $500 представляет собой довольно интересное интегрированное решение для 25 пользователей, вторая предлагается для установки OEM и готова поддерживать 15 пользователей. Но проблема в том, что для большего числа потребуется не только докупать CAL, но и менять серверную лицензию на Standard. Samba 4 таких ограничений лишена и может масштабироваться до любого необходимого уровня. Вероятно, для ее распространения также лучше подошла бы OEM-модель, гарантирующая полную совместимость с оборудованием и отсутствие неожиданностей хотя бы на первых порах.
Между тем само внедрение Samba 4 — дело достаточно нехитрое. Естественно, начать лучше с тестирования какого-нибудь специализированного дистрибутива. Таковой, к примеру, предлагает SerNet, немецкий интегратор и участник проекта Samba — SerNet Samba 4 Appliance. Дополнительно на нем можно развернуть ПО коллективной работы Zafara, в состав входит готовый скрипт для корректировки схемы AD. Novell/SUSE предлагает свой вариант Excellent Samba4 Appliance, причем в виде как загрузочных образов, так и уже развернутых виртуальных дисков для всех популярных систем виртуализации. Данный дистрибутив периодически обновляется, вслед за выходом очередных исправлений к Samba 4.
Собственно, инициализация AD заключается в развертывании дистрибутива или создании и запуске соответствующей виртуальной машины и выполнения готового скрипта dcpromo, который запрашивает немногочисленные параметры (название домена, IP-адрес и пр.).
Поскольку Samba 4 создавалась на основе официально приобретенной документации Microsoft, ее совместимость обещает быть довольно высокой. Во всяком случае, можно использовать все стандартные административные инструменты Microsoft, которые в случае Excellent Samba4 Appliance даже доступны через внутренний веб-сервер.
Поскольку Samba 4 реализует все необходимые для AD процедуры RPC, также можно пользоваться утилитами командной строки и PowerShell-скриптами. Linux-сообщество разрабатывает и собственные инструменты, как графические, так и скриптовые, но степень их готовности пока неудовлетворительна.
В случае использования инструментов Microsoft дальнейшее администрирование домена происходит совершенно привычно для любого, хотя бы поверхностно знакомого с AD в Windows Server. Добавление учетных записей, создание групп, разграничение полномочий выполняется совершенно прозрачно.
Таким образом, Samba 4 позволяет организовать простой домен AD на Linux фактически без необходимости глубоких знаний собственно Linuх. К тому же, гибкость открытой ОС дает возможность создавать компактные монофункциональные дистрибутивы с Samba 4, которые будут надежно работать как в физической, так и виртуальной среде. Под вопросом пока остается стабильность и масштабируемость самой Samba 4, но команда разработчиков, похоже, на достигнутом останавливаться не собирается.
Источник: http://ko.com.ua/samba_4_domen_active_directory_na_linux_75698
Теперь подробно остановимся на установке и настройке Excellent Samba4 Appliance.
Создание Домен контроллера, Active Directory и Файлового сервера с помощью Excellent Samba 4 Appliance.
1. Для начала скачиваем Excellent Samba 4 Appliance, предварительно зарегистрировавшись на сайте https://susestudio.com/.
2. Далее, скачиваем дистрибутив. Я поднимаю на виртуальной машине Hyper-V, поэтому скачиваю ISO-образ диска.
3. Итак, имеет файл Excellent_Samba4_Appliance.x86_64-1.1.11.iso, загружаемся с него и видим:
Жмём Excellent Samba4 Appliance.
Принимаем условия лицензии, нажав y. Дальше видим картину:
Логин / пароль в данном случае: root / opensuse
4. После авторизации, необходимо настроить параметры сети, выполнив команду: yast lan
Нажмите F4 для конфигурирования IP адреса.
Назначаю статический адрес 192.168.0.253, маска 255.255.255.0, имя pbdc.pbd.net
Нажимаю Next и перехожу во-вкладку Hostname/DNS.
Назначаю Hostname — pbdc, Domain — pbd.net. DNS сервера: 192.168.0.253, 91.222.240.250 и 91.222.241.250. Domain search — pbd.net.
Перехожу во вкладку Roating, где прописываю IP адрес интернет-шлюза. В моём случае — 192.168.0.254.
Жму OK. Началось применение параметров. Теперь из любого компьютера в сети адрес 192.168.0.253 должен пинговаться. Если так, всё сделано правильно!!!
5. Теперь установим систему на жесткий диск машины. Набираем в консоли yast и жмём Enter.
Заходим в пункт Miscellaneous, затем Live Installer, жмём Enter.
Выбираем английский язык и английскую раскладку клавиатуры (русский вряд-ли будет отображаться правильно), принимаем условия лицензии и жмём Next.
Выбираем часовой пояс и устанавливаем время, жмём Next.
Далее назначаем правило разметки диска. Я оставил всё без изменений и нажал Next.
Придумываем пользователя и пароль. Придумываем пароль root’у.
Проверяем введенные данные и жмём Install!!!
По завершению установки, выходим из Yast и перезагружаемся, написав reboot, вытаскиваем загрузочный диск.
6. Входим в root и приступаем к настройке Samba 4. Для облегчения этого процесса нам уже написали неплохой скрипт, который находится в
.
Выполняем следующие команды:
cd /srv/v
./dcpromo.sh
Теперь вводим нужные нам параметры:
domain name: pbd.net
hostname: pbdc
IP addres: 192.168.0.253
Gateway/Router: 192.168.0.254
Admin password: ********* (пароль для администратора домена)
Если Вам кажется, что что-то зависло, попробуйте нажать Enter, возможно, он только этого от Вас и ждёт!
Очень тщательно проверяйте настройки сети и продолжайте установку!
Типа ВСЁ!!! После запуска скрипта, Active Dirrectory должен быть успешно установлен. Теперь, используя Windows XP или Windows 7 попытайтесь присоединиться к новоявленному домену.
7. Для того чтобы можно было включить компьютер в домен, должен пинговаться контроллер домена по имени: ping pbd. Если не пингуется, в настройках сети установите DNS сервер 192.168.0.253, альтернативный — тот что был раньше, например, 91.222.240.250.
При вхождении в состав домена, потребуется ввести имя пользователя и пароль. Пользователь: Administrator, пароль — тот, что Вы вводили после запуска скрипта (пароль для администратора домена).
Если всё правильно, компьютер входит в домен и перезагружается.
8. Теперь самое время войти под учетной записью администратора домена. Для этого вписываем Administrator и соответствующий пароль. Домен должен быть PBD.
9. Для управления всем этим чудом, нужно установить windows administrative tools.
Если после установки ничего не работает, тогда идём Панель управления -> Программы -> Программы и компоненты -> Включение или отключение компонентов Windows.
Там выбираем средства удаленного администрирования полностью, жмём ОК!
Источник: http://vavai.net/2012/10/tutorial-building-active-directory-server-domain-controller-file-server-with-excellent-samba-4-appliance-part-1/
Хочу вас предупредить, что после поднятия Excellent Samba4 Appliance, у меня возникли необъяснимые галлюцинации на входящих в домен компьютерах по части общего доступа к сетевым ресурсам. Победить эти глюки мне так и не удалось, поэтому я пробую SerNet Samba 4 Appliance, пока не жалею… Инструкцию по установке и настройке смотрите здесь!
Думаю вам будут полезны и следующие записи:
SerNet Samba4 и Hyper-V (no network interfaces found)
Изменение политики паролей Samba4
Не применяются групповые политики Active Directory
(Просмотрено 9 414 раз, 1 раз за сегодня)
Первичный домен-контроллер на Samba позволяет создать собственный домен с использованием компьютера под управлением операционной системы на базе ядра Linux. Это нужно в первую очередь для централизованной аутентификации. При входе в домен вы можете войти в систему под своей учетной записью на любом компьютере, который включен в домен. Давайте посмотрим, как же настроить первичный домен-контроллер на Samba.
Рассматривать будем на примере операционной системы Debian GNU/Linux, но принципиального различия с другими операционными системами нет. Рассматривать будем Samba 3. Установка и настройка производится под пользователем root, либо с использованием sudo. Домен, который у нас в итоге получится, не является аналогом Active Directory, наш домен будет более старой спецификации, домен NT. Но его уже достаточно для решения задачи централизованной аутентификации и выделения прав на определенные действия в операционной системе.
В первую очередь установим пакеты, которые нам будут нужны:
apt-get install samba
По зависимостям установится еще несколько пакетов
Настройка Samba
Глобальные настройки
Перед началом настройки сохраните файл /etc/samba/smb.conf
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
Теперь создадим пустой файл, в который будем записывать настройки
touch /etc/samba/smb.conf
Вот что нужно туда записать:
[global] workgroup = mydomain netbios name = dc1 server string = Samba Primary Domain Controller domain master = yes preferred master = yes domain logons = yes add machine script = /usr/sbin/useradd -N -g Computers -c Machine -d /var/lib/samba -s /bin/false %u security = user encrypt passwords = yes wins support = yes name resolve order = wins lmhosts hosts bcast logon path = \%N%Uprofile logon drive = Z: logon home = \%N%U writable = yes
Параметры «workgroup» и «netbios name» — это название вашего домена и имя домен-контроллера, измените их на свои. А если у вас уже есть WINS-сервер, закомментируйте строчку «wins support = yes», при наличии этой настройки сервер Samba будет работать как сервер Netbios. Настройки «logon path», «logon drive» и «logon home» нужны для хранения пользовательского профиля. При входе на другую машину профиль будет загружаться с домен-контроллера и пользователь сможет работать со своими настройками.
Создание файла LMHOSTS
В файле /etc/samba/lmhosts содержатся такие же записи, как и в файле /etc/hosts, но это не имена хостов, а Netbios-имена. Когда компьютер под управлением Windows включается в домен MYDOMAIN, Windows пытается найти адрес первичного домен-контроллера, и если ей это не удается, машина в домен включена не будет. Если название вашего домена MYDOMAIN, имя домен-контроллера dc1, а его IP-адрес 192.168.0.2, то файл будет выглядеть следующим образом:
192.168.0.2 mydomain 192.168.0.2 dc1
Настройка секции [netlogon]
В файл /etc/samba/smb.conf добавляем секцию [netlogon]
[netlogon] path = /var/lib/samba/netlogon browseable = no read only = no create mask = 0700 directory mask = 0700 valid users = %S
Директория /var/lib/samba/netlogon — это стартовая директория при входе в домен. При входе пользователя в домен будет выполнен скрипт netlogon.bat, размещенный в этой директории. Если такой директории нет, ее нужно создать и выставить права 755:
mkdir /var/lib/samba/netlogon chmod 755 /var/lib/samba/netlogon
В файле netlogon.bat можно настраивать окружение, или, например, подключать сетевой диск при входе в домен:
net use s: \dc1share
Настройка секции [homes]
Эта секция файла /etc/samba/smb.conf используется для настройки домашних директорий пользователей
[homes] valid users = %S guest ok = yes read only = no create mask = 0700 directory mask = 0700 browsable = no
Сохраняем и проверяем конфигурацию командой
testparm
Если при ее выполнении возникают ошибки, исправьте их и проверьте еще раз. Если ошибок нет, то можно рестартовать сервис
service samba restart
Первичный домен-контроллер на Samba настроен
Теперь необходимо разобраться с добавлением пользователей, выделением им прав и включением компьютеров с Windows в домен.
Создание доменных пользователей
Добавление администратора домена
Учетная запись администратора называется root, надо добавить ее следующей командой:
smbpasswd -a root
Не используйте такой же пароль, как у пользователя root в системе, это разные учетные записи, и у них должны быть разные пароли.
Добавление группы для компьютеров
Создадим группу с названием «Computers»
groupadd Computers
Создание пользовательской учетной записи
Создадим учетную запись, которая будет использоваться только совместно с Samba
useradd iivanov smbpasswd -a iivanov
Введите пароль два раза.
Теперь нужно выдать этому пользователю права:
net rpc rights grant "MYDOMAINiivanov" SeMachineAccountPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege SeDiskOperatorPrivilege SeRemoteShutdownPrivilege
Вот права, которые можно выдавать пользователю:
SeMachineAccountPrivilege | Разрешение на добавление машин в домен |
SeTakeOwnershipPrivilege | Разрешение на перехват прав на файлы и другие объекты |
SeBackupPrivilege | Разрешение на создание резервных копий файлов и директорий |
SeRestorePrivilege | Разрешение на восстановление файлов и директорий из резервных копий |
SeRemoteShutdownPrivilege | Разрешение на форсированное выключение с удаленной системы |
SePrintOperatorPrivilege | Разрешение на управление принтерами |
SeAddUsersPrivilege | Разрешение на добавление пользователей и групп в домен |
SeDiskOperatorPrivilege | Разрешение на управление папками общего доступа |
SeSecurityPrivilege | Разрешение на управление системной безопасностью |
При выдаче прав будет запрошен пароль администратора Samba root (тот пароль, который мы установили чуть раньше). И теперь нужно сделать маппинг NT-группы пользователей на unix-группу:
groupadd admins net groupmap add ntgroup="Administrators" unixgroup=admins rid=512 type=d
Для того, чтобы учетная запись созданного пользователя имела права администратора домена, ее необходимо добавить в ту группу, на которую сделан маппинг доменной группы «Administrators».
adduser iivanov admins
Теперь можно включить машину под управлением Windows в домен
Включение машины в домен
Для машин под управлением Windows XP машину можно сразу включать в домен и потом входить под своей доменной учетной записью. Для Windows 7 нужно сделать еще кое-что. Нужно внести в реестр следующие изменения:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesLanmanWorkstationParameters] "DomainCompatibilityMode"=dword:00000001 "DNSNameResolutionRequired"=dword:00000000
После этого можно включать машину в домен.