Контроллер домена Samba на Ubuntu server

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

Рассмотрим настройку контроллера домена на примере Ubuntu Server 14.04.3 LTS или ранее. Я рекомендую использовать последнюю свежую версию. Скоро правда выйдет версия 16.04, но это совсем другая статья.

Как установить SAMBA 4.4 на Ubuntu смотрим здесь.

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.3

Для корректной работы 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.3) (дальше, пока, лезть я не стал, попробовал 4-4 — вышли ошибки.). Делаем все по порядку — переходим в каталог, гиттим, переходим в исходники, собираем и устанавливаем(занятие продолжительное)

cd /usr/src
git clone -b v4-3-stable git://git.samba.org/samba.git samba-v4-3-stable
cd /usr/src/samba-v4-3-stable
./configure --enable-debug && make && checkinstall

Обязательно укажите версию пакета, после того как пройдет сборка  выйдет следующее окно

samba 4.4 ubuntu

На следующие запрос отвечаем «N»

samba 4.4 ubuntu2

На запрос об исключение исходных файлов из сборки пакета отвечаем «Y»

samba 4.4 ubuntu3

Ждем пока файлы скопируются во временный каталог и закончится установка.

После установки отредактируем файл прописав  пути до исполняемых файлов /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

В качестве DNS сервера AD будем использовать Samba, поэтому отключаем bind командой

sudo su
service bind9 stop && update-rc.d bind9 disable

Для манипуляций с 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#53

Name: 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.3.4]
.                                   D        0  Tue Feb  2 21:01:43 2016
..                                  D        0  Tue Feb  2 21:01:51 2016

33895168 blocks of size 1024. 29845508 blocks available

Profit!!!!!

Теперь можно вводить рабочие станции в домен Ubutnu, создавать учетные записи учётки. Удобно использовать для этих вещей WEBMIN.
Управлять AD можно:
частично при помощи samba-tool на Ubuntu
при помощи Administration Tools Pack на Windows XP
при помощи Remote Server Administration Tools (RSAT) на Windows 7 и выше.

Как ввести машину с ubuntu в домен рассмотрим в этой статье.

 

2 thoughts on “Контроллер домена Samba на Ubuntu server

  1. Запускал подобную конфигурацию на UBUNTU 16.04 LTS
    самбу не собирал из исходников, а ставил из репозитория.
    сразу не заработало.
    при команде: # smbclient -L localhost -U%
    Вывод был:
    Domain=[XXX] OS=[Windows 6.1] Server=[Samba 4.3.9-Ubuntu]
    tree connect failed: NT_STATUS_CONNECTION_DISCONNECTED

    cat /var/log/samba/log.smbd

    [2016/05/19 23:41:19.405598, 0] ../libcli/smb/smb_signing.c:138(smb_signing_good)
    smb_signing_good: BAD SIG: seq 2
    [2016/05/19 23:41:19.406498, 0] ../source3/smbd/process.c:572(receive_smb_talloc)
    receive_smb: SMB Signature verification failed on incoming packet!
    [2016/05/19 23:45:29.437823, 0] ../libcli/smb/smb_signing.c:138(smb_signing_good)
    smb_signing_good: BAD SIG: seq 2
    [2016/05/19 23:45:29.438937, 0] ../source3/smbd/process.c:572(receive_smb_talloc)
    receive_smb: SMB Signature verification failed on incoming packet!
    [2016/05/19 23:45:52.467982, 0] ../lib/util/become_daemon.c:124(daemon_ready)
    STATUS=daemon ‘smbd’ finished starting up and ready to serve connections

    помогла правка /etc/samba/smb.conf
    в global добавил
    idmap_ldb:use rfc2307 = yes
    server signing = Auto

    Следующая трабла — при kinit administrator
    не находило реалм…
    поправил /etc/krb5.conf
    заменил значение default_realm с переменной на ручками прописанный домен… (не забываем про большие буковки)

    после этого все закрутилось замечательно :)
    Кстати, чтобюы избежать свистоплясок с /etc/resolv.conf надо указать в /etc/network/interfaces днс сервер — адрес текущего сервера.. в данной статье — это 192,168,0,1
    и тогда ресольвюконф трогать не нужно.. хотя, возможно, это справедливо только для убунты

  2. Поднять новый домен — еще еще ничего, а вот переход с MS на Unix обслуживание без потери домена? Там танцы с бубном, когда в DNS у тебя уже много зон работает, введено в домен порядка 1500 станций и 1200 пользователей, настроен MS Exchange, MS Lync Server….терять не хочеться, а уходить от CAL нужно только поочередно, без потери данных и репликаций данных в SQL… Как правильно ввести сначала в существующий домен ДС на базе Unix/Samba, чтобы все данные среплицировали, включая GPO и Netlogon? ТОлько после этого начинать тушить старый MS AD DC

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *