Установка Samba4 в качестве контроллера домена на Ubuntu Server 14.04

Опубликовано:

Настроим Samba в качестве контроллера домена.


Установка всех пакетов будет проводиться из родных репозиториев. В качестве днс-сервера будет выступать bind9.

В качестве типовой конфигурации будем применять:

  • Название домена (realm) adminunix.ru
  • Короткое имя (domain) adminunix
  • ip-адрес контроллера домена 192.168.0.1
  • имя сервера в домене ad

Установку будем проводить на системе с последними обновлениями.

sudo apt update && sudo apt upgrade

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

sudo apt-get install samba acl krb5-user ntp cups bind9 smbclient

Конфигурирование samba4

В состав samba4 входит утилита samba-tool для администрирования домена. Более подробно о возможностях этой утилиты вы можете почитать на странице http://www.samba.org/samba/docs/man/manpages/samba-tool.8.html , мы же используем ее для поднятия домена.

После установки samba скопируем оригинальный файл конфигурации.

mv /etc/samba/smb.conf /etc/samba/smb.conf.orig

После чего запускаем настройку нашего контроллера домена (DC). В процессе надо будет ввести пароль администратора. Пароль должен быть сложным, иметь цифры, заглавные и строчные буквы !

samba-tool domain provision --use-rfc2307 --use-xattrs=yes --interactive

Отвечаем на вопросы, подставляя свое название домена:

  • Realm [adminunix.ru]: adminunix.ru ←- название домена
  • Domain [adminunix]: adminunix ←- короткое имя домена
  • Server Role (dc, member, standalone) [dc]: dc ←- роль сервера(в данном случаем dc — контроллер домена)
  • DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ ←- используемый днс-сервер
  • Administrator password:
  • Retype password:

Или указав все эти данные в одной строке

samba-tool domain provision --realm=adminunix.ru --domain adminunix --adminpass='PASSWORD' --dns-backend=SAMBA_INTERNAL --server-role=dc --use-rfc2307 --use-xattrs=yes

Объяснение параметров (аргументов)

--use-rfc2307

этот параметр добавляет POSIX атрибуты (UID / GID) на схеме AD. Это понадобится при аутентификации клиентов Linux, BSD, or OS X (в том числе на локальной машине) в дополнение к Microsoft Windows.

--use-xattrs=yes

этот параметр включает расширенное использование атрибутов unix (ACLs) для файлов, размещенных на этом сервере. Если вы не будете открывать доступ файлов на контроллере домена, пропустите этот аргумент (но это не рекомендуется). Вы также должны убедиться, что все файловые системы, которые будут принимать открыт доступ Samba, установлены с поддержкой ACL's.

--interactive

этот параметр заставляет сценарий резерва запускаться в интерактивном режиме. 
--use-xattrs

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

sudo rm /etc/samba/smb.conf

Настройка BIND9

Настраиваем bind9:

sudo nano /etc/bind/named.conf.options

и приводим файл к следующему виду(заменяя ip-адреса на свои):

options {
        directory "/var/cache/bind";
        auth-nxdomain yes;
        forwarders { 192.168.1.2; };
        allow-transfer { none; };
        notify no;
        empty-zones-enable no;
 
        allow-query {
                192.168.1.0/24;
                127.0.0.0/8;
        };
 
        allow-recursion {
                192.168.1.0/24;
                127.0.0.0/8;
        };
 
        allow-update {
                192.168.1.0/24;
                127.0.0.0/8;
        };
};

Включаем в конфиг bind9 конфиг samba4

sudo nano /etc/bind/named.conf

и дописываем в конец файла:

include "/var/lib/samba/private/named.conf";

Меняем конфиг для использования bind 9.9

sudo nano /var/lib/samba/private/named.conf

приводим к виду:

dlz "AD DNS Zone" {
    # For BIND 9.8.0
    # database "dlopen /usr/lib/i386-linux-gnu/samba/bind9/dlz_bind9.so";
 
    # For BIND 9.9.0
    database "dlopen /usr/lib/i386-linux-gnu/samba/bind9/dlz_bind9_9.so";
};

Далее, подправим конфиг apparmor разрешая bind9 использовать необходимые файлы:

sudo nano /etc/apparmor.d/usr.sbin.named

в конец файла, до »}» вставляем:

для 32-х битной системы:

  # for samba4
  #/var/lib/samba/private/** r,
  /usr/lib/i386-linux-gnu/samba/bind9/** m,
  /usr/lib/i386-linux-gnu/samba/ldb/** m,
  /usr/lib/i386-linux-gnu/ldb/modules/ldb/** m,
  /usr/lib/i386-linux-gnu/samba/gensec/krb5.so m,
  /var/lib/samba/private/dns.keytab rwk,
  /var/lib/samba/private/named.conf r,
  /var/lib/samba/private/dns/** rwk,
  /var/lib/samba/private/krb5.conf r,
  /var/tmp/** rwk,
  /dev/urandom rwk,

для 64-х битной системы

  # for samba4
  #/var/lib/samba/private/** r,
  /usr/lib/x86_64-linux-gnu/samba/bind9/** m,
  /usr/lib/x86_64-linux-gnu/samba/ldb/** m,
  /usr/lib/x86_64-linux-gnu/ldb/modules/ldb/** m,
  /usr/lib/x86_64-linux-gnu/samba/gensec/krb5.so m,
  /var/lib/samba/private/dns.keytab rwk,
  /var/lib/samba/private/named.conf r,
  /var/lib/samba/private/dns/** rwk,
  /var/lib/samba/private/krb5.conf r,
  /var/tmp/** rwk,
  /dev/urandom rwk,

Перезапускаем службы:

sudo service apparmor restart
sudo service bind9 restart

Запускаем samba4:

sudo service samba-ad-dc start

Устанавливаем NTP

Прежде чем приступить к настройке Kerberos, необходимо настроить службу синхронизации времени (NTP — Network Time Protocol), без которой не возможна нормальная работа Kerberos.

Процесс установки описан в статье Настройка NTP сервера для локальной сети.

Для контроллере домена (DC) добавляем в конфигурационный файл ntp.conf

sed -i "s/restrict -4 default kod notrap nomodify nopeer noquery limited/restrict -4 default kod notrap nomodify nopeer noquery limited mssntp/g" /etc/ntp.conf

Добавляем путь к каталогу сокетов Samba

echo "ntpsigndsocket /var/lib/samba/ntp_signd/">> /etc/ntp.conf

перезапускаем наш сервер NTP

service ntp restart

Проверяем разрешения сокетов на контроллере домена (DC). Демон времени должен иметь разрешения на чтение в ntp_signed каталоге. Для проверки разрешений вводим:

# ls -ld /var/lib/samba/ntp_signd/
drwxr-x--- 2 root root  1. 09:30  /var/lib/samba/ntp_signd/

Чтобы установить разрешения, запускаем:

# chown root:ntp /var/lib/samba/ntp_signd/
# chmod 750 /var/lib/samba/ntp_signd/

Настройка Kerberos

В AD Kerberos используется для аутентификации пользователей, машин и служб.

Переименуем оригинальный файл конфигурации Kerberos операционной систем и создадим ссылку на файл конфигурации созданный при настройке Samba.

mv /etc/krb5.conf /etc/krb5.conf.orig

Делаем симлинк конфига kerberos от samba4:

ln -s /var/lib/samba/private/krb5.conf /etc/

Настройка DNS

Члены домена в AD используют DNS для поиска служб, таких как LDAP и Kerberos. Для этого им необходимо использовать DNS-сервер, способный разрешить зону DNS AD.

На своем сервере настроим домен поиска и укажем IP контроллера в параметре nameserver файла /etc/resolv.conf. Например:

search ad.adminunix.ru
nameserver 192.168.0.1

Для проверки верной работы Kerberos можно установить krb5-client и проверить работу аутентификации.

kinit administrator@adminunix.ru
klist

klist должен показать информацию по тикетам, если все ок — идем дальше.

Настало время тестов:

Меняем nameserver в resolv.conf чтоб все обращения проходили через наш настроенный bind9

sudo nano /etc/resolv.conf
 
nameserver 192.168.0.1

Проверяем

smbclient -L localhost -U%
 
Domain=[adminunix.ru] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
 
        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk
        sysvol          Disk
        IPC$            IPC       IPC Service (Samba 4.1.6-Ubuntu)
Domain=[adminunix.ru] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
 
        Server               Comment
        ---------            -------
 
        Workgroup            Master
        ---------            -------
smbclient //localhost/netlogon -UAdministrator -c 'ls'
 
Enter Administrator's password:
Domain=[ADSAMBA] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
  .                                   D        0  Tue Apr  8 11:21:49 2014
  ..                                  D        0  Tue Apr  8 11:22:03 2014
 
                46445 blocks of size 4194304. 45581 blocks available
host -t SRV _ldap._tcp.adminunix.ru.
 
_ldap._tcp.adsamba.loc has SRV record 0 100 389 ad.adminunix.ru.
host -t SRV _kerberos._udp.adminunix.ru.
 
_kerberos._udp.adsamba.loc has SRV record 0 100 88 ad.adminunix.ru.
host -t A ad.adminunix.ru.
 
ad.adminunix.ru has address 192.168.0.1

Настройка KERBEROS

Делаем симлинк конфига kerberos от samba4:

sudo ln -s /var/lib/samba/private/krb5.conf /etc/

Получаем билет:

kinit administrator@adminunix.ru

 

При получении билета видим сообщение в котором сказано что аккаунт администратора действителен в течении 41 дня.

Warning: Your password will expire in 41 days ...

Сразу изменим длительность аккаунта:

sudo samba-tool domain passwordsettings set --max-pwd-age=999

и проверяем что аккаунт будет работать еще 999 дней

sudo samba-tool domain passwordsettings show
 
...
Maximum password age (days): 999

 

Полученный билет можем посмотреть по команде:

klist

Настройка NTP

Редактируем конфиг ntp:

sudo nano /etc/ntp.conf

и в конец файла добавляем

ntpsigndsocket /var/lib/samba/ntp_signd/
restrict default mssntp

Перезапускаем сервис:

sudo service ntp restart

На этом базовая настройка samba4 в качестве контроллера домена завершена. На виндовом клиенте прописываем адрес нашего контроллера в качестве первичного DNS-сервера, пингуем PDC по имени и вводим в домен(администратор домена — administrator)

Для управления доменом воспользуемся пакетом Adminpak.msi: для Windows7, для Vista + RSAT, для Windows XP Pro + вторая часть.

Устанавливаем, в Меню выбираем пункт Выполнить, вбиваем dsa.msc, наслаждаемся 🙂