Поднимаем контроллер домена на Ubuntu Server

  • Tutorial
Этот вариант может быть полезен для небольших организаций с компьютерами под управлением Windows.
Нет необходимости приобретать недешевую Windows Server для организации AD и CAL лицензии для доступа к контроллеру домена.
В конечном итоге имеем плюшки AD: групповые политики, разграничение прав доступа к ресурсам и т.д.

Я попытался написать подробный алгоритм действий необходимых для организации Active Directory (AD) Domain Controller (DC) на базе Ubuntu Server.

Рассмотрим настройку контроллера домена на примере Ubuntu Server 12.04.4 LTS или Ubuntu Server 13.10, инструкция подходит для обоих вариантов без дополнительных изменений

1. Установка Ubuntu

Думаю установка Ubuntu-server не вызовет проблем даже у большинства пользователей компьютеров.
Желательно при установке ОС сразу правильно указать название машины в сети (hostname) с указанием домена (для примера использую dc1.domain.local), чтобы в дальнейшем меньше надо было править конфигурацию в файлах.
Если в сети не присутствует DHCP-сервер, установщик предложит ввести IP-адрес, маску сети, шлюз и DNS.
Во время установки, также желательно установить OpenSSH server, чтобы иметь удаленный доступ к серверу, а также правильно указать часовой пояс, в котором находится машина.

2. Настройка параметров сетевого адаптера

Настройки сети хранятся в файле /etc/network/interfaces
Редактируем его на свой вкус. В качестве редактора можно использовать nano, vi и т.п.
Для редактирования файлов понадобятся root права, их можно получить например командой
sudo su
после этого, Вы будете работать из под пользователя root.
О том что Вы работаете с правами root пользователя свидетельствует знак # в приглашении командной строки
Либо Вы можете перед каждой командой, которая требует root доступа, приписывать sudo
sudo nano /etc/network/interfaces

В конфигурации Вашего сетевого интерфейса, скорее всего, будет
iface eth0 inet dhcp
поменяем настройки на использование статичного ip-адреса.
В моем случае они выглядят вот так:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.10.1
netmask 255.255.255.0
gateway 192.168.10.10
dns-nameservers 192.168.10.10
dns-search domain.local domain
После изменения сетевых настроек необходимо перезапустить сетевой сервис
/etc/init.d/networking restart

3. Установка необходимых пакетов

Если Вы все же не установили OpenSSH server на первом этапе, это можно сделать командой
apt-get install ssh

Перед установкой чего либо, лучше сначала обновить систему и пакеты командой
apt-get update && apt-get upgrade

Для того, чтобы компьютеры сети сверяли время по нашему серверу установим ntp-сервер
apt-get install ntp

Samba4 будем использовать последней версии и собирать из исходников, так что нам понадобятся пакеты для её сборки и корректной работы.
apt-get install git checkinstall build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr docbook-xsl libcups2-dev acl

4. Сборка Samba4

Для корректной работы Samba потребуется поддержка vfs на уровне файловой системы, для этого внесем изменения в /etc/fstab, необходимо добавить user_xattr,acl,barrier=1 в настройки корневого раздела /
nano /etc/fstab
должна получится строка, что-то вроде этой:
/dev/mapper/dc1--vg-root / ext4 user_xattr,acl,barrier=1,errors=remount-ro 0 1
после чего необходимо перезагрузить компьютер
reboot
Не забываем про root права
sudo su

Скачиваем последнюю стабильную версию Samba из GIT репозитария
cd /usr/src
git clone -b v4-1-stable git://git.samba.org/samba.git samba-v4-1-stable

конфигурируем, компилируем и устанавливаем Samba
cd samba-v4-1-stable && ./configure --enable-debug && make && checkinstall
Параметр --enable-debug необходим для отображения более подробной информации в логах Samba.

После того, как соберется и установится Samba (это долгое занятие), для удобства её использования, необходимо прописать пути до исполняемых файлов /usr/local/samba/sbin и /usr/local/samba/bin в файлах /etc/sudoers переменная secure_path и /etc/environment переменная PATH, добавив строку :/usr/local/samba/sbin:/usr/local/samba/bin
nano /etc/sudoers
должна получится строчка что-то вроде этой:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/samba/sbin:/usr/local/samba/bin"
nano /etc/environment
должна получится строчка что-то вроде этой:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/samba/sbin:/usr/local/samba/bin"

перезагрузимся еще раз (на всякий случай)
reboot

5. Поднимаем AD

В качестве DNS сервера AD будем использовать Samba, поэтому отключаем bind командой
service bind9 stop && update-rc.d bind9 disable

Для манипуляций с AD в Samba существует инструмент samba-tool.
Для первоначальной настройки Samba вводим команду
samba-tool domain provision

Если на первом этапе Вы правильно указали имя компьютера, все настройки, которые запросит программа, можно оставить поумолчанию.
Во время настройки будет запрошен пароль пользователя Administrator для AD, он должен соответствовать требованиям сложности пароля поумолчанию: хотябы одна буква верхнего регистра, хотябы одна цифра, минимум 8 символов.
Если же пароль не подошел по сложности и Вы увидели ошибку вроде этой:
ERROR(ldb): uncaught exception — 0000052D: Constraint violation — check_password_restrictions: the password is too short. It should be equal or longer than 7 characters!
то перед повторным выполнением первоначальной настройки, необходимо удалить содержимое каталогов /usr/local/samba/private/ и /usr/local/samba/etc/
Если необходимо изменить сложность паролей это можно сделать командой
samba-tool domain passwordsettings set --min-pwd-length=6 --complexity=off --max-pwd-age=0 --min-pwd-age=0
эта команда отключает требование сложности, отключает сроки действия паролей, устанавливает минимальную длину пароля 6 символов

Далее необходимо подправить настройки Samba и добавить туда следующие строки в секцию [global]
nano /usr/local/samba/etc/smb.conf
allow dns updates = nonsecure and secure
printing = bsd
printcap name = /dev/null
Это позволит динамически обновлять DNS-записи на сервере, при входе рабочей станции (под управлением windows) в домен и отключит поддержку печати, которая постоянно выдает ошибки в лог.

В файле /etc/resolvconf/resolv.conf.d/head необходимо указать наш DNS-сервер Samba 127.0.0.1
echo "nameserver 127.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
и перезапустить сервис resolvconf
service resolvconf restart

Также установим Kerberos клиент
apt-get install krb5-user
и настроим на AD с помощью файла созданного на этапе samba-tool domain provision
mv /etc/krb5.conf /etc/krb5.conf.old
cp /usr/local/samba/private/krb5.conf /etc/krb5.conf

Для автоматического запуска сервиса Samba необходим скрипт:
nano /etc/init.d/samba4
/etc/init.d/samba4
#! /bin/sh
### BEGIN INIT INFO
# Provides: samba4
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start Samba daemons
### END INIT INFO
#
# Start/stops the Samba daemon (samba).
# Adapted from the Samba 3 packages.
#
PIDDIR=/var/run/samba
SAMBAPID=$PIDDIR/samba.pid

# clear conflicting settings from the environment
unset TMPDIR
# See if the daemon and the config file are there
test -x /usr/local/samba/sbin/samba -a -r /usr/local/samba/etc/smb.conf || exit 0

. /lib/lsb/init-functions

case "$1" in
start)
log_daemon_msg "Starting Samba 4 daemon" "samba"
# Make sure we have our PIDDIR, even if it’s on a tmpfs
install -o root -g root -m 755 -d $PIDDIR
if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/samba -- -D; then
log_end_msg 1
exit 1
fi

log_end_msg 0
;;
stop)
log_daemon_msg "Stopping Samba 4 daemon" "samba"

start-stop-daemon --stop --quiet --name samba $SAMBAPID
# Wait a little and remove stale PID file
sleep 1
if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
then
# Stale PID file (samba was succesfully stopped),
# remove it (should be removed by samba itself IMHO.)
rm -f $SAMBAPID
fi

log_end_msg 0
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: /etc/init.d/samba4 {start|stop|restart|force-reload}"
exit 1
;;
esac

exit 0

его необходимо сделать исполняемым
chmod 755 /etc/init.d/samba4

и создать настройки поумолчанию
update-rc.d samba4 defaults

Перезагружаем компьютер
reboot

6. Проверяем работоспособность сервера

У нас должна быть запущена samba после перезагрузки
ps aux | grep samba
root 865 0.3 3.0 95408 31748? Ss 18:59 0:00 /usr/local/samba/sbin/samba -D

Должен работать DNS сервер
nslookup dc1
Server: 127.0.0.1
Address: 127.0.0.1#53

Name: dc1.domain.local
Address: 192.168.10.1

Должны быть доступны сетевые ресурсы AD
smbclient -L localhost -U%
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
Sharename Type Comment
— — — netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.1.6)
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
Server Comment
— — Workgroup Master
— -------

Должен подключаться Kerberos
kinit administrator
Warning: Your password will expire in 41 days on Wed Apr 23 18:49:14 2014

Должен храниться Ticket kerberos'a
klist
Valid starting Expires Service principal
12/03/2014 19:17 13/03/2014 05:17 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL

Должна проходить аутентификация netlogon
smbclient //localhost/netlogon -UAdministrator -c 'ls'
Domain=[DOMAIN] OS=[Unix] Server=[Samba 4.1.6]
. D 0 Wed Mar 12 18:46:48 2014
… D 0 Wed Mar 12 18:49:15 2014


Вот и всё.
Можно вводить в домен клиентов, заводить пользователей.

Управлять AD можно:
частично при помощи samba-tool на Ubuntu
при помощи Administration Tools Pack на Windows XP
при помощи Remote Server Administration Tools (RSAT) на Windows 7 и выше

Этот пост можно считать неким переводом официального wiki Samba, который находится по адресу:
wiki.samba.org/index.php/Samba_AD_DC_HOWTO, с моими дополнениями.

P.S. Если кому-то будет интересно могу еще написать «мануал» про включение резервного контроллера на Ubuntu в домен.
Поделиться публикацией

Похожие публикации

Комментарии 58
    –2
    А почему нельзя сделать все на линуксе и пользоваться другими сервисами каталогов? Раз уж контора маленькая. Или наоборот — сколько будет стоить AD со всем калом?
      +2
      если клиенты windows, то MS AD самое лучшее будет.
        0
        Это очевидно.
        Я спрашивал про другое.
          0
          Про какое?
            0
            Что конкретно вам не ясно из моего поста?
        +3
        Не всегда есть возможность использовать linux на компьютерах пользователей (теже драйвера под специфическое оборудование).
        Стоимость сервера примерно 25000 руб (включено 5 CAL) + стоимость 1 CAL ~1000 руб. На сеть из 15 компьютеров 35000 руб, чем больше сеть тем больше затраты.
          +3
          Я не знаю ваших реалий, поэтому сужу со своей колокольни.
          Я считаю, что пачка разных ОСей — это грабли в первую очередь для конторы. Правда, с другой стороны, если контора зажилила тыщу баксов (разве много?) на серверную винду — то так ей и надо.
            +3
            Плюсую, кстати. Время, потраченное админом на тряхомудию с опенсорсными реверс-инженеренными вариантами AD стоить будет гораздо дороже, хотя бы в перспективе 1-2 лет. Потенциальные простои сети по этой же причине, могут растянуться вообще на дни, и вызвать в итоге большие убытки.

            Почему бы просто не купить винду — непонятно.
              +3
              Неумение или нежелание считать. Ведь в ТСО входит не только стоимость продукта, но даже з.п. обслуживающего персонала. Например, при всей открытости и бесплатности линукса, я еще не видел бесплатных линуксовых админов.
                +2
                а бесплатных виндовс админов пруд пруди, так?
                  0
                  Но ведь в windows все удобно. Даже домохозяйка разберется. Тыц — тыц мышкой и настроит любую роль для сервера.
                  Чтобы контроллер домена поднять вообще особо не надо напрягаться. А если что-то сломается, то все легко и самостоятельно
                  исправится.
                  :)))

                  Мы вот тут недавно вызывали себе администратора для установки Windows Server 2012. Он там немного завис. Говорил что немного поменялось все. Меня лично порадовал на сервере стартовый экран в стиле Метро.
                  :))

                  У нас в конторе пока «пачка разных ОСей». В первую очередь дизайнеры сидят под виндой. Остальных потихоньку двигаем в сторону линукса.
                    0
                    Ну значит такого администратора вызывали за 300 р в час )

                    Сервер 12 очень классная штука по сравнению с 2008. Как в настройке так и в сопровождении. А Hyper-V там вообще песня
            0
            Но еще есть Windows Azure Active Directory
            0
            Например что? Раньше, помнится, была Нетварь со своим доменным клиентом для Винды (и Линуксов вроде тоже).
              0
              Например en.wikipedia.org/wiki/389_Directory_Server

              Если что, то я говорю о том, что негоже делать ассорти из операционок. То есть, можно конечно сделать шлюз на фряхе, особенно если требуется динамическая маршрутизация, но поднимать такую интимную штуку как АД на самбе, тогда как она гораздо лучше чувствует себя на винде — неправильно.
                0
                Ну если все сервера на линуксе, а 2/3 рабочих станций на винде, то как-то нелогично поднимать AD.

                  0
                  Боюсь, я не понимаю, к чему вы это сказали.

                  Еще раз: в случае с раб. станциями нужна максимально возможная унификация, винда там будет или линукс — неважно, т.е. в вакуумно-сферической компании, 2/3 винды + 1/3 невинды — следствие фигового планирования. В отношении серверов требуется определить их роли, если сервер предназначен для внутренних нужд, то логично будет делать его максимально совместимым с клиентскими компутерами. Ну и так далее. Это мое личное мнение; я бы старался либо делать так с самого начала, либо привести все к этому, если подключился в процессе.
                    0
                    Спланировано было 100% Линукса, но так получилось…

                    Про 398 почитал, и даже обнаружил его в штатном репозитории убунты. Но вот не понял — он тоже эмулирует AD? Винда к нему подключается бес специального клиента?
                      0
                      Эмулирует — вряд ли. Оно не для этого разрабатывалось, поэтому специальный клиент скорее всего нужен. В технических вопросах такого рода я помочь вряд ли чем-то смогу, т.к. системным администрированием корпоративных сетей я, к моему удовольствию, уже давно не занимаюсь. Попробуйте на виртуалках.
                      • НЛО прилетело и опубликовало эту надпись здесь
              +6
              вместо make install лучше сделать checkinstall, дабы собрать deb пакет и уже потом его установить, что намного лучше в плане установки/удаления софта.
                +2
                Спасибо, буду знать.
                  +3
                  а зачем его вобще собирать из исходников?
                  для пущщей брутальности?
                    0
                    В репозиториях убунты были не самые свежие релизы 4-й самбы, но не знаю, как сейчас обстоят с этим дела.
                +3
                Эхх… думал про GPO расскажите.
                  0
                  GPO работают частично. Но основные функции доступны, было только пара моментов, которые не заработали.
                    0
                    А какие именно моменты не заработали?
                      +1
                      Раздел для управления файловой системой и еще что-то среди настроек GPO для компьютера. Но если кого интересует, то установка программ через GPO работает.
                        +2
                        GPO работает в полном объёме, в т.ч. политики файлов/папок, реестра и прочие плюшки.
                        Контроллер AD на Samba4 имеется начиная с альфы14 в продакшене (до того многолетний стабильный NT4-style домен на 3 ветке)
                  +6
                  С перезагрузками странно. Неужели нельзя сделать remount после изменения fstab или релогин после изменения environment? Это же не windows, где перезагрузка является панацеей.
                    –4
                    А что плохого в перезагрузках? Что бы поставить WinSrv + AD + DNS + DHCP требуется 3 перезагрузки (2 из них в процессе установки). И не требуется тянуть из репозиториев пакеты. Во всяком случаи скорость развертывания WinSrv намного быстрее чем AD на *nix.
                    +4
                    Samba Enterprise (sernet) — зачем собирать, когда всё уже собрано и обновляется из репозиториев?
                      0
                      вроде, его нет под убунту?
                        +1
                        Когда последний раз пробовал — дебиановские подходили. Сомневаюсь, что что-то изменилось.
                          0
                          все есть под убунту
                        +3
                        Не совсем ясен пассаж со сборкой самбы из исходников.
                        Я понимаю — если нужен какой-то функционал из bleeding edge (но в этом случае — зачем его сразу на сервер? Камикадзе? Садо-мазо?)
                        Или сборка под LFS? Или по крайней мере Gentoo?
                        Да не, вроде stable-версия. Да ещё и под ubuntu.
                        Поэтому — идём на launchpad.net пишем в поиске samba4 и видим кучу репов на любой вкус (в т.ч. и stable).
                        А никаких тулчейнов на сервере вообще не надо.
                          +1
                          Гуру подскажите почему работает в Samba4 GPO только для User, а параметры для Machine нет?
                            0
                            А вы сделали линк GPO в контейнер, где располагаются компьютеры?
                            +5
                            Как уже писали выше — чтобы собирать чть-то на Debian/Ubuntu из исходников нужна очень веская причина. Обычно, если ПО популярно, его тут же добавляют в какой-нибудь репозиторий. Если не добавили до сих пор — значит, как правило, есть причины.
                            Checkinstall, несмотря на все его плюсы (сам им иногда пользуюсь) — жуткий костыль, который работает на перехвате API
                            Что-то из исходников собирается так:
                            apt-get build-dep samba (или samba4) — вместо строки «apt-get install [куча dev-пакетов]»
                            apt-get source samba
                            правим файлик debian/rules под наши нужды
                            dpkg-buildpackage -b -rfakeroot (собираем только бинарный пакет, работает без прав админа)
                            Результат — нормальные deb-пакеты со всеми зависимостями, скриптами установки и т.п.
                            А вот еще мануал от самой Самбы. Тоже через dpkb-buildpackage: wiki.samba.org/index.php/Samba4/Debian

                            В случае с Самбой намного более интересен вопрос: «Что не работает?»
                            У вас все с первого раза завелось? Клиенты под всем спектром ОС от Windows 2000 до Windows 8/Server 2012 заходят/авторизуются? Все стабильно, ничего не отваливается? Сколько уже работает система в продакшене?
                              –1
                              Разве на клиентов службы AD нужны CAL? Вроде не нужны.
                                +2
                                Большое спасибо за популяризацию опенсорс.
                                Есть несколько замечаний:
                                1. Не надо учить людей компилировать пакеты в убунте. Всегда можно найти ppa. В крайнем случае, автор статьи мог сделать свой ppa и дать ссылку на него в статье. Те кто знает ПОЧЕМУ он должен компилировать пакет, эту статью не читает.
                                2. Коль уж вы пытаетесь сделать нормальную замену АД, то делали бы хранилище учетных записей в LDAP (таких мануалов инете — пруд пруди)
                                3. Виндовый домен без GPO никому не нужен. Можно было написать о них абзац.
                                  +1
                                  Я Samba 4 ставил только на пробу, и у меня сложилось ощущение, что она пригодна в продакшене только как реплика основного контроллера домена. Скажем, есть у нас куча филиалов, Windows 2008R2/2012 туда покупать жалко, да и железо под новые ОС нужно хорошее. А в случае Samba4 все можно развернуть на старых серверах, и на CAL не тратиться. В основном же офисе будет стоять полноценный Win-контроллер AD

                                  Кто пробовал Samba4 в боевых условиях — отпишитесь пожалуйста, если не трудно.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                      0
                                      С 2009 вполне для обычной фирмы в сотню человек, без филиалов достойно работает. На мой взгляд в wiki не все нюансы рассмотрены, но если вы человек с головой, то не составит труда разобраться. Для обычной фирмы вполне хорошее решение.
                                      0
                                      А кто-нибудь пробовал внедрять Resara? Я устанавливал их сервер на виртуальной машине. Поигрался, на тот момент выглядело неплохо. Только для работы с GPO надо было использовать Group Policy Management Console на Windows 7 :)
                                      0
                                      мы попробовали некоторое время назад, но не смогли настроить трасты Samba 4 домена с виндовым AD.
                                      есть такие — у кого получилось?
                                        +2
                                        Так же, чтобы упростить жизнь, при настройке домена можно использовать ключ --use-rfc2307, чтобы потом если потребуется авторизация на *nix машинах через самбу.
                                          +3
                                          Т.к. имею опыт Samba4 в роли ADC на протяжении длительного времени — поделюсь:
                                          1) GPO работают в полном объёме
                                          2) LDAP функционал полностью имеется
                                          3) DNS (я использую bind9.9) работает полностью, обновление записей и зон в том числе
                                          4) NTP подписывает и отдаёт инфу клиентам для синхронизации (опция mssntp)

                                          Так же имеется второй контроллер, репликация работает.
                                          Клиенты: Win XP, 7, 8
                                            +2
                                            Не могли бы Вы описать момент репликации, я думаю, что другим это тоже было бы интересно! А конкретнее какое-нибудь how-to с описанием граблей на которые Вы натолкнулись.
                                              +2
                                              Пошаговые инструкции — явно лишнее. Всё делается по вики. Единственное, как и говорят там же, не работает репликация SysVol, потому решается сторонними методами.
                                              0
                                              А сколько клиентов обслуживают ваши сервера?
                                                0
                                                Малый офис. 35 ПК с клиентскими ОС
                                                  0
                                                  150, 70, 20 — три офиса
                                                  0
                                                  только репликация gpo до сих пор в 4ой самбе не реализована. приходится пользоваться всякими unison-ами :(
                                                    0
                                                    Unison разве научился копировать расширенные атрибуты (xattr)?
                                                    Это обязательно требование для репликации SysVol
                                                      0
                                                      нет, но лучше, чем никак. есть иные варианты?
                                                        0
                                                        Прикрутить к Unison (тадаааам) rsync.
                                                        Велосипед, конечно, но работает. Надеюсь, что когда-нибудь к Unison всё-таки прикрутят нужные фичи.

                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                Самое читаемое