Домен на Samba

Подготовка

  1. Если необходимо развернуть в виртуальной среде, то подготовить виртуальный роутер (можно использовать routeros или же openwrt, или на ваш вкус) и пару виртуальный коммутаторов – один для LAN другой для WAN (сеть между виртуалками и внешка соответственно)
  2. Установить Linux Ubuntu Server 22.04. Взять можно здесь: https://releases.ubuntu.com/jammy/ (выбрать в списке ниже ubuntu-22.04.2-live-server-amd64.iso)
  3. Так же при необходимости установить клиентские машины

Настройка в Ubuntu:

  1. Настроим статический адрес в Ubuntu. У меня интерфейс называется eth0:
/etc/netplan/00-installer-config.yaml
network:
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 10.35.10.1/16
      routes:
        - to: default
          via: 10.35.0.1
      nameservers:
        addresses:
          - 10.35.0.1
  version: 2

Применяем конфигурацию:

netplan apply

или с выводом

netplan --debug apply
  1. Установка имени сервера:
hostnamectl set-hostname dc-1
  1. Редактируем файл /etc/hosts
127.0.0.1 localhost
127.0.1.1 dc-1.testdomain.lz dc-1
10.35.10.1 dc-1.testdomain.lz dc-1
  1. Проверяем имя хоста:
root@dc-1:/home/admindc# hostname -f
dc-1.testdomain.lz
root@dc-1:/home/admindc# ping -c3 dc-1.testdomain.lz
PING dc-1.testdomain.lz (127.0.1.1) 56(84) bytes of data.
64 bytes from dc-1.testdomain.lz (127.0.1.1): icmp_seq=1 ttl=64 time=0.014 ms
64 bytes from dc-1.testdomain.lz (127.0.1.1): icmp_seq=2 ttl=64 time=0.024 ms
64 bytes from dc-1.testdomain.lz (127.0.1.1): icmp_seq=3 ttl=64 time=0.024 ms
  1. Выключаем DNS-Resolver
root@dc-1:/home/admindc# systemctl disable --now systemd-resolved
Removed /etc/systemd/system/multi-user.target.wants/systemd-resolved.service.
Removed /etc/systemd/system/dbus-org.freedesktop.resolve1.service.
root@dc-1:/home/admindc# unlink /etc/resolv.conf
  1. Создаем собственный resolv.conf
root@dc-1:/home/admindc# touch /etc/resolv.conf
  1. Редактируем conf
# Samba server IP address
nameserver 10.35.10.1

# fallback resolver
nameserver 77.88.8.8

# main domain for Samba
search testdomain.lz
  1. Запрещаем редактирование файла conf
root@dc-1:/home/admindc# chattr +i /etc/resolv.conf
  1. Устанавливаем Samba
apt update
apt upgrade
apt install -y acl attr samba samba-dsdb-modules samba-vfs-modules smbclient winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools

 
 
 
  1. Выключаем Samba-сервисы:
root@dc-1:/home/admindc# systemctl disable --now smbd nmbd winbind
Synchronizing state of smbd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable smbd
Synchronizing state of nmbd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable nmbd
Synchronizing state of winbind.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable winbind
Removed /etc/systemd/system/multi-user.target.wants/smbd.service.
Removed /etc/systemd/system/multi-user.target.wants/winbind.service.
Removed /etc/systemd/system/multi-user.target.wants/nmbd.service.
  1. Активируем samba-ad-dc
root@dc-1:/home/admindc# systemctl unmask samba-ad-dc
Removed /etc/systemd/system/samba-ad-dc.service.
root@dc-1:/home/admindc# systemctl enable samba-ad-dc
Synchronizing state of samba-ad-dc.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable samba-ad-dc
Created symlink /etc/systemd/system/multi-user.target.wants/samba-ad-dc.service → /lib/systemd/system/samba-ad-dc.service.

Конфигурируем Samba Active Directory

  1. Делаем бэкап оригинального conf
root@dc-1:/home/admindc# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
  1. Реализуем домен
root@dc-1:/home/admindc# samba-tool domain provision
Realm [TESTDOMAIN.LZ]: <Enter>
Domain [TESTDOMAIN]: <Enter>
Server Role (dc, member, standalone) [dc]: <Enter>
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: <Enter>
DNS forwarder IP address (write 'none' to disable forwarding) [10.35.10.1]:  77.88.8.8
Administrator password:
Administrator password does not meet the default quality standards.
Administrator password: <Пароль отличный от системного>
Retype password: <Пароль отличный от системного (повторить)>
  1. Бэкапим и копируем Kerberos Config
root@dc-1:/home/admindc# mv /etc/krb5.conf /etc/krb5.conf.orig
root@dc-1:/home/admindc# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
  1. Стартуем и проверяем samba-ad-dc
root@dc-1:/home/admindc# systemctl start samba-ad-dc
root@dc-1:/home/admindc# systemctl status samba-ad-dc
  • samba-ad-dc.service - Samba AD Daemon
Loaded: loaded (/lib/systemd/system/samba-ad-dc.service; enabled; vendor p>
Active: active (running) since Thu 2023-06-01 08:22:54 UTC; 11s ago…
<q>

Настройка синхронизации времени

  1. Установка прав доступа
root@dc-1:/home/admindc# chown root:_chrony /var/lib/samba/ntp_signd/
root@dc-1:/home/admindc# chmod 750 /var/lib/samba/ntp_signd/
  1. Добавить следующее в /etc/chrony/chrony.conf
# bind the chrony service to IP address of the Samba AD
bindcmdaddress 10.35.10.1
# allow clients on the network to connect to the Chrony NTP server
allow 10.35.0.0/16
# specify the ntpsigndsocket directory for the Samba AD
ntpsigndsocket /var/lib/samba/ntp_signd
  1. Рестартуем chrony и проверяем его статус
root@dc-1:/home/admindc# systemctl restart chronyd
root@dc-1:/home/admindc# systemctl status chronyd
  • chrony.service - chrony, an NTP client/server
Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset>
Active: active (running) since Thu 2023-06-01 09:40:37 UTC; 5s ago
  1. Проверка Samba AD
root@dc-1:/home/admindc# host -t A testdomain.lz
testdomain.lz has address 10.35.10.1

root@dc-1:/home/admindc# host -t A dc-1.testdomain.lz
dc-1.testdomain.lz has address 10.35.10.1

root@dc-1:/home/admindc# host -t SRV _kerberos._udp.testdomain.lz
_kerberos._udp.testdomain.lz has SRV record 0 100 88 dc-1.testdomain.lz.

root@dc-1:/home/admindc# host -t SRV _ldap._tcp.testdomain.lz
_ldap._tcp.testdomain.lz has SRV record 0 100 389 dc-1.testdomain.lz.

root@dc-1:/home/admindc# kinit administrator@TESTDOMAIN.LZ
Password for administrator@TESTDOMAIN.LZ:
Warning: Your password will expire in 41 days on Чт 13 июл 2023 08:19:44

root@dc-1:/home/admindc# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TESTDOMAIN.LZ
Valid starting       Expires              Service principal
01.06.2023 09:45:56  01.06.2023 19:45:56  krbtgt/TESTDOMAIN.LZ@TESTDOMAIN.LZ
renew until 02.06.2023 09:45:52

Настройка Windows:

  1. Установить имя компьютера
  2. Установить IP адрес, адрес DNS сервера (должен соответствовать адресу Samba AD)
  3. Добавляем рабочую станцию в домен:
# add Windows 10 to Active Directory using POWERSHELL
Add-Computer -DomainName "testdomain.lz" -Restart

Либо через «Свойства системы»:

  1. Устанавливаем средства удаленного администрирования Windows 10 (RSAT) https://www.microsoft.com/ru-RU/download/details.aspx?id=45520
  2. Устанавливаем политики паролей:
sudo samba-tool user setexpiry administrator --noexpiry
sudo samba-tool domain passwordsettings set --complexity=off
sudo samba-tool domain passwordsettings set --max-pwd-age=92
sudo samba-tool domain passwordsettings set --min-pwd-length=8
sudo samba-tool domain passwordsettings set --account-lockout-threshold=5
sudo samba-tool domain passwordsettings show