Я попытался написать подробный алгоритм действий необходимых для организации Active Directory (AD) Domain Controller (DC) на базе Ubuntu Server 14.04.2. Подойдет и для других операционок, например для ubuntu server 16.04.
Эта статья является почти полной копией статьи, о том, как поднять samba 4.3 на ubuntu server.
Рассмотрим настройку контроллера домена на примере Ubuntu Server 14.04.3 LTS или ранее. Я рекомендую использовать последнюю свежую версию. Скоро правда выйдет версия 16.04, но это совсем другая статья. Кстати ubuntu server 16.04 уже доcтупен для скачивания.
Особенности samba 4.4:
1. Установка Ubuntu
Думаю установка Ubuntu-server не вызовет проблем даже у большинства пользователей компьютеров.
Желательно при установке ОС сразу правильно указать название машины в сети (hostname) с указанием домена (для примера использую dc.avanpost.local), чтобы в дальнейшем меньше надо было править конфигурацию в файлах.
Если в сети не присутствует DHCP-сервер, установщик предложит ввести IP-адрес, маску сети, шлюз и DNS.
Во время установки, также желательно установить OpenSSH server, чтобы иметь удаленный доступ к серверу, а также правильно указать часовой пояс, в котором находится машина( и настроить его для доступа).
2. Настройка параметров сетевого адаптера
Настройки сети хранятся в файле /etc/network/interfaces
Редактируем его на свой вкус. В качестве редактора можно использовать nano, vi и т.п.
Для редактирования файлов понадобятся root права, их можно получить например командой
sudo -i
после этого, Вы будете работать из под пользователя root.
Либо Вы можете перед каждой командой, которая требует root доступа, приписывать sudo
sudo nano /etc/network/interfaces
В конфигурации Вашего сетевого интерфейса, скорее всего, будет
iface eth0 inet dhcp
поменяем настройки на использование статичного ip-адреса.
В моем случае они выглядят вот так:
auto eth0 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 gateway 192.168.0.45 dns-nameservers 192.168.0.45 dns-search avanpost.local avanpost
После изменения сетевых настроек необходимо перезапустить сетевой сервис
/etc/init.d/networking restart
Отредактируем файл hosts
sudo nano /etc/hosts
127.0.0.1 localhost 127.0.1.1 dc.avanpost.local dc 192.168.0.1 dc.avanpost.local dc
3. Установка необходимых пакетов
Если Вы все же не установили OpenSSH server на первом этапе, это можно сделать командой
sudo apt-get install ssh
Перед установкой чего либо, лучше сначала обновить систему и пакеты командой
sudo apt-get update && apt-get upgrade
Для того, чтобы компьютеры сети сверяли время по нашему серверу установим ntp-сервер
sudo apt-get install ntp
Samba4 будем использовать последней стабильной версии и установим дополнительные файлы(будет юзать из github)
sudo 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. Сборка Samba 4.4
Для корректной работы Samba потребуется поддержка vfs на уровне файловой системы, для этого внесем изменения в /etc/fstab, необходимо добавить user_xattr,acl,barrier=1 в настройки корневого раздела /
nano /etc/fstab
должна получится строка, что-то вроде этой:
UUID=1423481c-210f-4076-92a6-48f6ce2b1339 / ext4 user_xattr, acl, barrier=1, errors=remount-ro 0 1
после чего ребутимся
reboot
Не забываем про root права
sudo -i
Устанавливаем последнюю стабильную версию Samba (4.4).
Делаем все по порядку – переходим в каталог, гиттим, переходим в исходники, собираем и устанавливаем(занятие продолжительное)
cd /usr/src
git clone -b v4-4-stable git://git.samba.org/samba.git samba-v4-4-stable
cd /usr/src/samba-v4-4-stable
./configure --enable-debug && make && checkinstall
Обязательно укажите версию пакета, после того как пройдет сборка выйдет следующее окно
На следующие запрос отвечаем “N”
На запрос об исключение исходных файлов из сборки пакета отвечаем “Y”
Ждем пока файлы скопируются во временный каталог и закончится установка.
После установки отредактируем файл прописав пути до исполняемых файлов /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"
РЕБУТИМСЯ
5. Настраиваем AD SAMBA
Для манипуляций с AD в Samba существует инструмент samba-tool.
Для первоначальной настройки Samba вводим команду
samba-tool domain provision
Появится окно ввода параметров
1. Realm - вводим что-то типа этого avanpost.local
2. Domain - Avanpost
3. Server role - dc
4. DNS Backened - SAMBA_INTERNAL
5. DNS FORWARDER IP ADRESS - 192.168.0.1 6. Administrator password: - Xfgt34567
Пароль должен соответствовать требованиям сложности пароля по-умолчанию: хот ябы одна буква верхнего регистра, хотя бы одна цифра, минимум 8 символов.
Для настройки сложности пароля можно использовать команду
samba-tool domain passwordsettings set --min-pwd-length=6 --complexity=off --max-pwd-age=0 --min-pwd-age=0
эта команда отключает требование сложности, отключает сроки действия паролей, устанавливает минимальную длину пароля 6 символов
эта команда упрощает требования к паролю
Если же пароль не подошел по сложности и Вы увидели ошибку вроде этой:
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 и добавить туда следующие строки в секцию [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 необходим скрипт:
sudo nano /etc/init.d/samba4
Вставляем код
description "SMB/CIFS File and Active Directory Server" author "Jelmer Vernooij " start on (local-filesystems and net-device-up) stop on runlevel [!2345] expect fork normal exit 0 pre-start script [ -r /etc/default/samba4 ] && . /etc/default/samba4 install -o root -g root -m 755 -d /var/run/samba install -o root -g root -m 755 -d /var/log/samba end script exec /usr/local/samba/sbin/samba -D
Сохраняемего необходимо сделать исполняемым
chmod 755 /etc/init.d/samba4
chmod +x /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 dc
Server: 127.0.0.1
Address: 127.0.0.1#53Name: dc1.avanpost.local
Address: 192.168.0.1
Должны быть доступны сетевые ресурсы AD
smbclient -L localhost -U%
Domain=[AVANPOST] OS=[Windows 6.1] Server=[Samba 4.3.4]
Sharename Type Comment
——— —- ——-
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.3.4)
Domain=[AVANPOST] OS=[Windows 6.1] Server=[Samba 4.3.4]Server Comment
——— ——-Workgroup Master
——— ——-
Должен подключаться Kerberos
kinit administrator
Warning: Your password will expire in 41 days on Пт. 11 марта 2016 14:53:14
Должен храниться Ticket kerberos’a
klist
Valid starting Expires Service principal
29.01.2016 15:19:09 30.01.2016 01:19:09 krbtgt/AVANPOST.LOCAL@AVANPOST.LOCAL
renew until 30.01.2016 15:19:07
Должна проходить аутентификация netlogon
smbclient //localhost/netlogon -UAdministrator -c 'ls'
Domain=[AVANPOST] OS=[Windows 6.1] Server=[Samba 4.4.4]
. D 0 Tue Feb 2 21:01:43 2016
.. D 0 Tue Feb 2 21:01:51 201633895168 blocks of size 1024. 29845508 blocks available
Profit!!!!!
Теперь можно вводить рабочие станции в домен Ubutnu, создавать учетные записи учётки. Удобно использовать для этих вещей WEBMIN.
Необходимо будет настроить webmin для того, чтобы он увидел samba, так как при сборке из исходников, меняются дефолтные пути.
Управлять AD можно:
– частично при помощи samba-tool на Ubuntu
– при помощи Administration Tools Pack на Windows XP
– при помощи Remote Server Administration Tools (RSAT) на Windows 7 и выше.
Как ввести машину с ubuntu в домен рассмотрим в этой статье.
не работает. ubuntu 14.04. делал по инструкции
Всё робит
со скриптом в 15.10 только разберись, “update-rc.d samba4 defaults” не сработал
а так на 15.10 15.04 16.04 работает
Всё работает !
на всех перечисленных версиях!
Разберитесь с “update-rc.d samba4 defaults” а то приходится вручную запускать Самбу “/usr/local/samba/sbin/samba -D” в Ubuntu 15.10
А в целом всё круто, СПС !!!
Всё РАБОТАЕТ!!!
Попробуйте тогда по этой инструкции. https://itc-life.ru/mnogofunkcionalnyj-server-na-ubuntu/
Спасибо за статью!
А вот если сервер поднимается в lxc-контейнере, т.е. fstab в самом контейнере не настроен, опции монтирования передаются с хоста, а там — «nobarrier». Как решить эту проблему? Можно ли как-то перемонтировать корневую фс именно этого контейнера во время загрузки? Или можно пропустить этот пункт? Что я потеряю в таком случае?
Upd. «The user_xattr and acl are no longer required on ext4 filesystems because those features are enabled by default. Instead, they must be explicitly disabled when they are not required. More here and here. This can be confirmed with tune2fs -l /dev/sdX | grep ‘Default mount options’.
Write Barriers improve data integrity and are enabled by default on ext4 filesystems. A nobarrier mount option disables this but doing so is a bad idea!. Barriers incur a small performance overhead.»
https://johnlane.ie/a-samba-active-directory-server.html
Проверил, все действительно так: «user_xattr» и «acl» включены по умолчанию, но у меня добавлено «barrier=0», потому что аппаратный raid, мощный бесперебойник и рекомендовали на форуме Proxmox сами разработчики, т.к. сильно влияет на производительность контейнеров.
Остап не может остановиться.
Правильно ли я понимаю, что эта схема — полноценная или даже лучшая альтернатива связке openldap+samba?
Мне лично openldap – больше нравится
А реально заставить работать win-клиенты с openldap?
В идеале, хотелось бы, чтобы человек мог сесть за любой компьютер — и, после ввода логина и пароля, оказаться в своём рабочем окружении. На Windows.
А ещё идеальней было бы, если бы эти же учётные данные могла использовать 1С, установленная на Linux-сервере.
В действительности, openldap, как мне показалось, легче устанавливать и настраивать в дальнейшем, да и администрировать через веб удобней.