Домен контроллер на linux для пользователей windows

Настраиваем контроллер домена на Ubuntu Server 18.04 LTS. Управляем пользователями, группами и шарами централизовано. Реализация контроллера домена на Linux

Думаю если вы попали на эту страницу, значит тем или иным путем пришли к выводу о том, что необходимо настроить систему централизованного управления учетными записями в локальной сети вашего предприятия, скорее всего это контроллер домена на Ubuntu или Windows. У вас как обычно 3 основных пути для реализации своего плана:

    1. Выкинуть деньги на ветер
    2. Сесть за пиратство
    3. Использовать какое-либо решение на базе линукса

Если честно, есть еще 4-й вариант, и он очень даже неплох. Основывается он на Synology NAS, обладающих просто божественными возможностями даже в самых маленьких реализациях.

Но вернемся к нашим реалиям. Наш вариант номер 3. В деталях он выглядит примерно так:

  1. У нас в сети нет ни одного серверного решения Microsoft
  2. Мы не хотим появления в нашей сети пиратских серверных решений Microsoft
  3. В большинстве своем наша сеть состоит из машин с ОС Ubuntu Desktop, но есть и пара ноутбуков с вендами.
  4. У нас есть необходимость централизованного управления учётными записями
  5. У нас есть одно или несколько сетевых хранилищ и мы хотим управлять доступом к хранимой на них информации, предоставляя его через протоколы NFS и CIFS(smb). Сетевые хранилища могут быть реализованы как на голых ubuntu server, так на различных решениях типа FreeNAS, NAS4Free и тд, так и на покупных решениях, типа QNAP, Synology и тд.

Реализовывать контроллер домена на Ubuntu мы будем на хосте ESXi с примерно следующими характеристиками:

  1. CPU: 1 ядро на 2.2-2.8 GHz
  2. RAM: 2 Gb
  3. HDD: 1 hdd 32Gb
  4. Network: 1 Сетевая карта
  5. Имя сервера: ag-dc
  6. Имя домена: adminguide.lan

Что касается физической машины, то подойдет любая не сильно мощная машина. Но если там хотя бы 4‑х ядерный CPU и 4+ гига оперативной памяти, я рекомендовал бы запилить на неё бесплатный гипервизор ESXi и уже с его помощью полностью утилизировать имеющиеся мощности.

Поправка к инструкции: Везде в тексте инструкции, имя тестового samba домена изменено с adminguide.local на adminguide.lan. зона .local может вызывать глюки в виндовых сетях. Если вы видите на скриншоте adminguide.local, на самом деле там должно быть adminguide.lan

  1. Устанавливаем Ubuntu Server 18.04 LTS amd64

  2. Изменяем имя сервера на ag-dc

    1. После изменения имени сервера в соответствии с инструкцией, перезагружаем сервер следующей командой:
      sudo reboot -h now
    2. Проверяем имя сервера
      После загрузки сервера, авторизовываемся и смотрим результат команды
      hostnamectl
      . Должно быть следующее:
      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - hostnamectl
      Важно понимать, что после того, как вы настроите контроллер домена на Ubuntu, смена имени его сервера приведет к непредвиденным последствиям, поэтому не надо пытаться превратить свою тестовую попытку, в рабочее решение. После того как вы один или несколько раз инициализируете свой ad-dc и убедитесь в его работоспособности, удалите все свои достижения и уже только после этого выполняйте чистовую работу, полностью отдавая себе отчет в производимых действиях.
  3. Настраиваем статический IP адрес

    1. На данном этапе, пока у нас еще не стоит самба и не инициализирован домен, наши настройки будут следующими:
      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, ]
      

      Вот как выглядит файл настроек на тестовом сервере:
      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройки сети
      Главным ДНС сервером на данный момент должен быть указан локальный роутер, или любой другой днс сервер, например 8.8.8.8, способный выполнять эти функции.

  4. Отключаем systemd-resolved

    1. Останавливаем сервис systemd-resolved
      sudo service systemd-resolved stop
    2. Убираем systemd-resolved из автозапуска
      sudo systemctl disable systemd-resolved.service
    3. Удаляем ссылку /etc/resolv.conf
      sudo rm /etc/resolv.conf
    4. Открываем на редактирование файл /etc/resolv.conf
      sudo nano /etc/resolv.conf

      По факту, на данный момент этого файла еще не существует, он будет создан при сохранении изменений.

    5. Добавляем переадресацию на наш днс сервер и указываем search домен в resolv.conf .
      nameserver 192.168.1.1
      search adminguide.lan

      На данном этапе, nameserver должен указывать на тот же адрес, что и в пункте 3.1
      В search указывается имя нашего будущего домена Active Directory.
      Файл /etc/resolv.conf должен выглядеть следующим образом:
      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройка resolv.conf

    6. Сохраняем изменения нажав Ctrl+O
  5. Настраиваем файл /etc/hosts

    1. Одним из обязательных условий, является резолв имени нашего сервера, на его 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
    2. Приводим файл hosts к следующему виду:
      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Настройка hosts
      127.0.0.1       localhost.localdomain   localhost
      192.168.1.100   ag-dc.adminguide.lan  ag-dc
    3. Сохраняем с помощью команды
      Ctrl+O
  6. Проверяем что не запущено никаких самвобых процессов

    Для этого понадобится следующая команда:

    ps ax | egrep "samba|smbd|nmbd|winbindd"

    Если есть хоть один процесс и вы видите что-то типа этого:
    Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Поиск процессов samba
    таки возможно вы настраиваете AD-DC не на новом сервере или на сервере развернутом не из оригинального образа. Если вы решите на свой страх и риск продолжить установку, то вам необходимо убить все процессы с именами samba, smbd, nmbd, winbindd. Чтобы убить процесс, надо использовать команду sudo kill <id-процесса>:

    sudo kill 3135
  7. Устанавливаем Samba

    На этом этапе так же важно знать, что после того как вы инициализируете контроллер домена на Ubuntu, вы не сможете изменить его название. Если вы называете свой домен ADMINGUIDE.LAN, он на веки вечные останется доменом ADMINGUIDE.LAN . Самба не поддерживает изменение имени домена. После его инициализации, чтобы изменить название, вам придется вывести из него все машины что вы успели зарегистрировать в нем, удалить старый домен, инициализировать новый и зарегистрировать машины повторно. Стоит ли говорить, что даже при 25 рабочих станциях — это уже проблема

    1. Устанавливаем samba и все необходимые пакеты командой:
      sudo apt -y install samba krb5-config winbind smbclient krb5-user
    2. Область по умолчанию для Kerberos версии 5

      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Область по умолчанию для Kerberos версии 5

      Указываем ADMINGUIDE.LAN

    3. Серверы Kerberos для вашей области

      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Серверы Kerberos для вашей области

      Указываем ag-dc.adminguide.lan

    4. Управляющий сервер вашей области Kerberos

      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Управляющий сервер вашей области Kerberos

      Так же указываем ag-dc.adminguide.lan

    5. Ожидаем окончание установки
  8. Бэкапим стандартную конфигурацию Samba

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp
  9. Инициируем контроллер домена на Ubuntu 18.04

    1. Запускаем инициализацию в интерактивном режиме

      Из своего домена, мы так же будем управлять пользователями и группами линуксовых машин. Поэтому нам нужно заранее включить поддержку NIS, с помощью команды —use-rfc2307

      sudo samba-tool domain provision --use-rfc2307 --interactive

      Включение поддержки NIS, не имеет никаких противопоказаний к применению, даже если ваш домен никогда не будет обслуживать линуксовые машины. В то же время, если инициализировать домен без поддержки NIS, и когда-нибудь в него войдут линуксовые машины и захочется управлять их учётками, расширять схему Active Directory и добавлять поддержку NIS, придётся уже ручками на свой страх и риск.

    2. Указываем параметры домена

      Если в процессе настройки не было допущено ошибок, все необходимые данные установщик поместит в квадратные скобки в виде стандартных значений:

      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:
      

      Когда установщик запросит пароль, рекомендую указать пароль понадежнее. Это будет пароль от учетной записи администратора домена.

      Если на этом этапе в квадратных скобках у вас указано не то значение которое вам бы хотелось, значит вероятнее всего в настройках ранее вы допустили серьезный косяк.

    3. Смотрим результаты инициализации

      Следующие строки возвестят о том, что контроллер домена на 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. В будущем в случае какого-то косяка на этапе инициализации, возвращайтесь к этому снапшоту и перепроверяйте всё исправляйте ошибки.

  10. Настройка 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
  11. Настройка DNS

    1. Изменяем 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, ]
      
    2. Изменяем dns сервер в resolv.conf, так же указывая там IP своего сервера, приводя его к следующему виду:
      nameserver 192.168.1.100
      search adminguide.lan
  12. Настройка Kerberos

    В процессе инициализации домена, создается файл krb5.conf, путь к нему указывается в последних строках отчета об успешной инициализации. Поэтому чтобы избежать ручной настройки файла /etc/krb5.conf, нам нужно заменить его только что сгенерированным.

    sudo cp /var/lib/samba/private/krb5.conf /etc/
  13. Проверяем результаты своей работы

    1. Смотрим все шары файл сервера DC
      smbclient -L localhost -U%

      Они создаются в процессе инициализации домена и должны присутствовать для его правильного функционирования.

      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - DC Shares

      Контроллер домена на Ubuntu — Результат smbclient -L localhost -U%

    2. Проверяем подключение к ним
      Подключаемся к папке netlogon от имени администратора домена
      smbclient //localhost/netlogon -UAdministrator -c 'ls'

      Когда система запросит пароль, необходимо ввести пароль администратора домена, который мы указали при инициализации, в пункте 9.2

      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - Подключение к netlogon

      Контроллер домена на Ubuntu — Результат smbclient //localhost/netlogon -UAdministrator -c ‘ls’

      В случае успешной авторизации, вы без ошибок подключитесь к папке

    3. Проверяем правильность настройки DNS
      Без правильно функционирующей службы DNS, AD DC не сможет функционировать как запланировано. Главное, нам необходимо убедиться, что SAMBA_INTERNAL dns настроен правильно и работает. Для этого попытаемся извлечь из него необходимые записи
      1. Смотрим SRV запись _ldap
        host -t SRV _ldap._tcp.adminguide.lan.
      2. Смотрим SRV запись _kerberos
        host -t SRV _kerberos._udp.adminguide.lan.
      3. Проверяем A запись контроллера домена
        host -t A ag-dc.adminguide.lan.

        Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - DNS тесты

        Контроллер домена на Ubuntu — Результаты проверки DNS

    4. Проверяем работоспособность Kerberos
      kinit administrator
    5. Смотрим кеш авторизационных тикетов Kerberos
      klist

      Контроллер домена на Ubuntu - Ubuntu 18.04 AD-DC - kinit & klist результат

      Контроллер домена на Ubuntu — Результат kinit administrator и klist

  14. Полезные ссылки:
    • Best practices for sysvol maintenance
    • Обновлённая версия статьи

Text.ru - 100.00%

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 logo.png

Использование 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 требуется внести следующие изменения:

  1. Установить необходимые пакеты (bind и bind-utils) на сервер:
    # apt-get install bind bind-utils
    
  2. На сервере в файл /etc/samba/smb.conf в блок [global] добавить строку:
  3. Отключить chroot:
    # control bind-chroot disabled
    
  4. Отключить KRB5RCACHETYPE:
    # grep -q KRB5RCACHETYPE /etc/sysconfig/bind || echo 'KRB5RCACHETYPE="none"' >> /etc/sysconfig/bind
    
  5. Подключить плагин BIND_DLZ:
    # grep -q 'bind-dns' /etc/bind/named.conf || echo 'include "/var/lib/samba/bind-dns/named.conf";' >> /etc/bind/named.conf
    
  6. Привести /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; };
    };
    
  7. Выполнить остановку bind:
  8. При выполнении команды создания домена одной командой указать тип dns-backend = BIND9_DLZ:
    # samba-tool domain provision --realm=domain.alt --domain domain --adminpass='Pa$$word' --dns-backend=BIND9_DLZ --server-role=dc
    
  9. Далее произвести рестарт — 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

   Выпущенная 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. suse[1]

   Собственно, инициализация AD заключается в развертывании дистрибутива или создании и запуске соответствующей виртуальной машины и выполнения готового скрипта dcpromo, который запрашивает немногочисленные параметры (название домена, IP-адрес и пр.).

   Поскольку Samba 4 создавалась на основе официально приобретенной документации Microsoft, ее совместимость обещает быть довольно высокой. Во всяком случае, можно использовать все стандартные административные инструменты Microsoft, которые в случае Excellent Samba4 Appliance даже доступны через внутренний веб-сервер.

tools[1]

   Поскольку Samba 4 реализует все необходимые для AD процедуры RPC, также можно пользоваться утилитами командной строки и PowerShell-скриптами. Linux-сообщество разрабатывает и собственные инструменты, как графические, так и скриптовые, но степень их готовности пока неудовлетворительна.

   В случае использования инструментов Microsoft дальнейшее администрирование домена происходит совершенно привычно для любого, хотя бы поверхностно знакомого с AD в Windows Server. Добавление учетных записей, создание групп, разграничение полномочий выполняется совершенно прозрачно. snapin[1]

   Таким образом, 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, загружаемся с него и видим:

1

Жмём Excellent Samba4 Appliance.

Принимаем условия лицензии, нажав y. Дальше видим картину:

1

Логин / пароль в данном случае:  root / opensuse

4. После авторизации, необходимо настроить параметры сети, выполнив команду: yast lan

 1

Нажмите F4 для конфигурирования IP адреса.

Назначаю статический адрес 192.168.0.253, маска 255.255.255.0, имя pbdc.pbd.net

1

Нажимаю 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.

1

Перехожу во вкладку 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

1

Теперь вводим нужные нам параметры:

domain name: pbd.net

hostname: pbdc

IP addres: 192.168.0.253

Gateway/Router: 192.168.0.254

Admin password: ********* (пароль для администратора домена)

Если Вам кажется, что что-то зависло, попробуйте нажать Enter, возможно, он только этого от Вас и ждёт!

Очень тщательно проверяйте настройки сети и продолжайте установку!

0-

Типа ВСЁ!!! После запуска скрипта, Active Dirrectory должен быть успешно установлен. Теперь, используя Windows XP или Windows 7 попытайтесь присоединиться к новоявленному домену.

7. Для того чтобы можно было включить компьютер в домен, должен пинговаться контроллер домена по имени: ping pbd. Если не пингуется, в настройках сети установите DNS сервер 192.168.0.253, альтернативный — тот что был раньше, например, 91.222.240.250.

При вхождении в состав домена, потребуется ввести имя пользователя и пароль. Пользователь: Administrator, пароль — тот, что Вы вводили после запуска скрипта (пароль для администратора домена).

1

Если всё правильно, компьютер входит в домен и перезагружается.

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Первичный домен-контроллер на 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

После этого можно включать машину в домен.

Понравилась статья? Поделить с друзьями:

Вот еще несколько интересных статей:

  • Домашняя сеть windows не может получить доступ к
  • Домашняя сеть windows 10 через роутер с андроид
  • Домашняя расширенная windows 7 на английском
  • Домашняя локальная сеть через wifi роутер в windows 10
  • Домашняя коллекция apple на windows 10

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии