контроллер_домена_на_ubuntu_20.04

Контроллер домена на Ubuntu 20.04

Погнали. Обновляем свеженькую Ubuntu

sudo apt update && sudo apt dist-upgrade -y
sudo hostnamectl set-hostname ct-dc

Проверяем имя сервера

hostnamectl
   Static hostname: ct-dc
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 6663a13d00344d9998eb833017bb5f55
           Boot ID: 6c5de89f701c4190943efb793cf4e53e
    Virtualization: vmware
  Operating System: Ubuntu 20.04 LTS
            Kernel: Linux 5.4.0-40-generic
      Architecture: x86-64

Также, внесем запись в файл /etc/hosts

cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.15.10  ct-dc.skynet.lan ct-dc

Посмотрим на наш сетевой интерфейс

ip a

Узнаем текущий шлюз по умолчанию

ip route show

редактируем файл, в моем случае /etc/netplan/00-installer-config.yaml Приводим настройки к следующему виду:

This is the network config written by 'subiquity'
network:
  ethernets:
    ens160:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.15.10/24, ]
      gateway4: 192.168.15.1
      nameservers:
              addresses: [192.168.16.111, ]
  version: 2

Применяем изменения:

sudo netplan apply

Для проверки насколько верно внесены настройки, сначала можно использовать sudo netplay try. Но, если сервер конфигурируется через ssh, то смена ip адреса – приведет к разрыву соединения и ответить на запрос о подтверждении настроек получить уже не сможем. Поэтому, следует подключиться к серверу по его новым реквизитам, убедиться что всё работает, и по истечении 2х минут, когда настройки сбросятся на старые, применить их окончательно.

Начнем установку домена с установки DNS сервера

sudo apt install bind9

Смотрим версию bind

named -v
BIND 9.16.1-Ubuntu (Stable Release) <id:d497c32>

Смотрим, где bind держит named.conf

named -V | grep sysco

–sysconfdir=/etc/bind – это директория, где лежит файл named.conf Смотрим, где DNS сервер держит кеш

sudo cat /etc/passwd | grep bind

результат - /var/cache/bind Смотрим на </html>/etc/bind/named.conf</html>

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

Будем редактировать named.conf.options и named.conf.default-zones

Делаем резервную копию оригинального конфига

sudo cp /etc/bind/named.conf.options{,.bak_origin}

Удаляем содержание /etc/bind/named.conf.options и приводим его к следующему виду:

# Глобальные настройки
options {
auth-nxdomain yes;
directory "/var/cache/bind"; # Папка с кешем bind
notify no;
empty-zones-enable no;
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
minimal-responses yes;

# IP адреса и подсети от которых будут обрабатываться запросы
allow-query {
127.0.0.1;
192.168.10.0/24; # Текущая локальная сеть ct-dc.skynet.lan
};

# IP адреса и подсети от которых будут обрабатываться рекурсивные запросы (Зон не обслуживаемых этим DNS сервером)
allow-recursion {
127.0.0.1;
192.168.10.0/24; # Текущая локальная сеть ct-dc.skynet.lan
};

# Перенаправлять запросы, на которые нет информации в локальной зоне на следующие сервера:
forwarders {
8.8.8.8; # IP адрес DNS форвардера
4.4.4.4; # IP адрес DNS форвардера
};

# Запрет на трансфер зоны
allow-transfer {
none;
};
};

Делаем резервную копию оригинального конфига

sudo cp /etc/bind/named.conf.default-zones{,.bak_origin}

Удаляем содержание /etc/bind/named.conf.default-zones и приводим его к следующему виду:

# Корневые сервера
# (Необходимы для рекурсивных запросов)
zone "." {
type hint;
file "named.root";
};

# localhost zone
zone "localhost" {
type master;
file "master/localhost.zone";
};

# 127.0.0. zone.
zone "0.0.127.in-addr.arpa" {
type master;
file "master/0.0.127.zone";
};
# Останавливаем сервис
sudo service systemd-resolved stop
# Убираем из автозапуска
sudo systemctl disable systemd-resolved.service
# Удаляем симлинк /etc/resolv.conf
sudo rm /etc/resolv.conf

Открываем и изменяем конфиг /etc/resolv.conf

nameserver 192.168.16.111
search skynet.lan

На текущий момент инсталляции, nameserver должен быть настроен на адрес нашего существующего DNS сервера, который используется в локальной сети. В search указывается имя будущего домена.

Проверяем что в системе не работают демоны samba

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

Nota Bene: Очень важно помнить, что контроллер домена на samba, инициализируется раз и навсегда. Возможность изменить его название в будущем – отсутствует.

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

sudo apt -y install samba krb5-config winbind smbclient krb5-user

Область по умолчанию для Kerberos версии 5


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

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


Указываем ct-dc.skynet.lan

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

Указываем ct-dc.skynet.lan

Удалим дефолтный конфиг samba, сделав его резервную копию

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak_origin

Для того чтобы иметь возможность управлять операционными системами семейства linux c контролера домена, активируем совместимость с NIS, используя команду –use-rfc2307

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

Включение поддержки Network Information Service (NIS), никак не повредит работе контролера домена, несмотря даже на ситуацию в которой он никогда столкнётся с Linux серверами или компьютерами. В тоже время, если настроить контроллер без этой опции, и когда-нибудь в него будут введены машины с линуксом, придётся модифицировать схему AD и добавлять поддержку NIS. Что создает большой риск сломать dc.

Если в процессе настройки не было допущено ошибок, те параметры которые нужно настроить, кроме DNS backend инсталлятор поместит в квадратные скобки как дефолтные значения.

Realm [SKYNET.LAN]:
Domain [SKYNET]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:  BIND9_DLZ
Administrator password:
Retype password:

Ключевая фраза в этой статье – Если всё было сделано правильно. Так вот, если всё было сделано правильно в файле /var/lib/samba/bind-dns/named.conf автоматически будет раскомментирована строка отвечающая за интеграцию нашей версии самбы с нашей версией bind9.

Главная проблема заключается в том, что в данный момент в репозиториях Focal нет совместимых на уровне версий dlz, пакетов samba4 и bind9. Примечательно что версия samba4 находящаяся на данный момент в репозитории, на уровне dlz поддерживает BIND 9.11.x. В то время как находящийся в репозитории пакет BIND9, на данный момент версии 9.16.х.

Вероятно это рано или поздно изменится, а пока раскомментируем строку для BIND 9.12.x

dlz "AD DNS Zone" {
    # For BIND 9.8.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9.so";

    # For BIND 9.9.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_9.so";

    # For BIND 9.10.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_10.so";

    # For BIND 9.11.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_11.so";

    # For BIND 9.12.x
    database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_12.so";
};

Файл – /var/lib/samba/bind-dns/named.conf нужно добавить в основную конфигурацию named
редактируем /etc/bind/named.conf и добавляем в конец:

include "/var/lib/samba/bind-dns/named.conf";

на dns.keytab

ls -l /var/lib/samba/private/dns.keytab
-rw-r----- 2 root bind 722 Jul  9 06:05 /var/lib/samba/private/dns.keytab

на директорию /bind-dns/

ls -l /var/lib/samba/
total 1408
drwxr-xr-x   4 root root            4096 Jul  8 15:10 DriverStore
-rw-------   1 root root          421888 Jul  8 15:10 account_policy.tdb
drwxrwx---   3 root bind            4096 Jul  9 06:21 bind-dns
-rw-------   1 root root             696 Jul  8 15:10 group_mapping.tdb
drwxr-xr-x  11 root root            4096 Jul  8 15:10 printers
drwxr-xr-x   5 root root            4096 Jul  9 06:05 private
-rw-------   1 root root          528384 Jul  8 15:10 registry.tdb
-rw-------   1 root root          421888 Jul  8 15:10 share_info.tdb
drwxrwx---+  3 root       3000000   4096 Jul  9 06:05 sysvol
drwxrwx--T   2 root sambashare      4096 Jul  8 15:10 usershares
-rw-------   1 root root           32768 Jul  8 15:10 winbindd_cache.tdb
drwxr-x---   2 root winbindd_priv   4096 Jul  8 15:10 winbindd_privileged

на /etc/krb5.conf, должно быть такие – root:bind, если нет, меняем разрешения:

ls -l /etc/krb5.conf
-rw-r--r-- 1 root root 2871 Jul  8 15:10 /etc/krb5.conf

sudo chown root:bind /etc/krb5.conf

ls -l /etc/krb5.conf
-rw-r--r-- 1 root bind 2871 Jul  8 15:10 /etc/krb5.conf

Проверяем наличие утилиты nsupdate

which nsupdate
/usr/bin/nsupdate
sudo wget -q -O /var/cache/bind/named.root http://www.internic.net/zones/named.root
sudo chown root:bind /var/cache/bind/named.root
vs@ct-dc:~$ sudo chmod 640 /var/cache/bind/named.root

проверяем конфиг

sudo named-checkconf

Если ошибок не обнаружено, то named-checkconf не выдаст никакой информации, можно пытаться запустить dns сервис

sudo service bind9 start

Если попытка запуска тоже не выдает никаких ошибок в терминал – значит DNS сервер практически готов к работе

sudo mkdir /var/cache/bind/master
sudo chown bind:bind /var/cache/bind/master

Создаем файл /var/cache/bind/master/localhost.zone и наполняем его следующим содержимым

$TTL 3D

$ORIGIN localhost.

@       1D      IN     SOA     @       root (
                       2013050101      ; serial
                       8H              ; refresh
                       2H              ; retry
                       4W              ; expiry
                       1D              ; minimum
                       )

@       IN      NS      @
        IN      A       127.0.0.1

Устанавливаем владельца и права доступа

sudo chown bind:bind /var/cache/bind/master/localhost.zone
sudo chmod 640 /var/cache/bind/master/localhost.zone

Создаём файл зоны /var/cache/bind/master/0.0.127.zone, со следующим содержимым

$TTL 3D
 
@       IN      SOA     localhost. root.localhost. (
                        2013050101      ; Serial
                        8H              ; Refresh
                        2H              ; Retry
                        4W              ; Expire
                        1D              ; Minimum TTL
                        )
 
       IN      NS      localhost.
 
1      IN      PTR     localhost.

устанавливаем права

sudo chown bind:bind /var/cache/bind/master/0.0.127.zone
sudo chmod 640 /var/cache/bind/master/0.0.127.zone

Перезапускаем bind9

sudo service bind9 restart

И проверяем созданные зоны. Зону прямого просмотра:

host -t A localhost 127.0.0.1

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:

localhost has address 127.0.0.1

И зону обратного просмотра

host -t PTR 127.0.0.1 127.0.0.1

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:

1.0.0.127.in-addr.arpa domain name pointer localhost.

На этом этапе настройка DNS сервера закончена, он способный обслуживать контроллер домена.

Для корректной работы, все процессы samba должен запускать сам демон samba и никто иной.

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

Указываем DNS сервер, ip адрес ct-dc (свой собственный ip)

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens160:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.10.10/24, ]
      gateway4: 192.168.10.1
      nameservers:
              addresses: [192.168.10.10, ]
  version: 2

Настроим адрес DNS сервера, так же указывая там ip ct-dc, приведем /etc/resolv.conf к следующему виду:

nameserver 192.168.10.10
search skynet.lan

При инициализации ct-dc, будет создан файл конфигурации kerberos, где он расположен, указывается в конце отчета об инициализации. Дабы не делать двойную работу, заменяем существующий файл настроек Kerberos, только что созданным файлом

sudo cp /var/lib/samba/private/krb5.conf /etc/

Посмотрим имеющиеся на контроллере общие каталоги, они автоматически создаются в момент инициализации.

smbclient -L localhost -U%

        Sharename       Type      Comment
        ---------       ----      -------
        sysvol          Disk
        netlogon        Disk
        IPC$            IPC       IPC Service (Samba 4.11.6-Ubuntu)
SMB1 disabled -- no workgroup available

Проверим возможность подключения администратора DC к netlogon. Вводим пароль указанный при инициализации

smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter SKYNET\Administrator's password:
  .                                   D        0  Thu Jul  9 09:05:04 2020
  ..                                  D        0  Thu Jul  9 09:05:09 2020

                20511312 blocks of size 1024. 14572136 blocks available

Проверим правильность настройки DNS. Если bind9 был настроен некорректно, то DC не заработает.

  1. Смотрим SRV запись _ldap
    host -t SRV _ldap._tcp.skynet.lan
    _ldap._tcp.skynet.lan has SRV record 0 100 389 ct-dc.skynet.lan.
  2. смотрим SRV запись _kerberos
    host -t SRV _kerberos._udp.skynet.lan
    _kerberos._udp.skynet.lan has SRV record 0 100 88 ct-dc.skynet.lan.
  3. проверяем A запись контроллера домена
    host -t A ct-dc.skynet.lan
    ct-dc.skynet.lan has address 192.168.10.10
  4. Проверяем работоспособность Kerberos
    kinit administrator
    Password for administrator@SKYNET.LAN:
    Warning: Your password will expire in 41 days on Thu Aug 20 09:05:09 2020
  5. Посмотрим кеш авторизационных тикетов Kerberos
    klist
    Ticket cache: FILE:/tmp/krb5cc_1000
    Default principal: administrator@SKYNET.LAN
    
    Valid starting     Expires            Service principal
    07/09/20 14:40:43  07/10/20 00:40:43  krbtgt/SKYNET.LAN@SKYNET.LAN
            renew until 07/10/20 14:40:37

На текущий момент статьи, DC AD настроен.

Управляем DC из под os windows
Средства удаленного администрирования сервера для Windows 10
Средства удаленного администрирования сервера для Windows 7 с пакетом обновления 1 (SP1)

Настройка DHCP сервера для работы с samba DC

  • контроллер_домена_на_ubuntu_20.04.txt
  • Последнее изменение: 2020/07/09 17:22
  • admin