Контроллер домена на SAMBA — CentOS 7

SAMBA достаточно давно уже может стать контроллером домена на предприятии и стабильно и нетребовательно выполнять свои задачи. Да, это уровень 2012R2 на сегодня. Но не везде и нужны серьёзные леса доменов с эксченджами и т.п. весьма дорогостоящими хотелками. Авторизовать пользователей, хранить о них информацию, играть групповыми политиками и скидывать по LDAP адресную книгу — это SAMBA умеет без проблем.

Установка SAMBA

Итак для начала рекомендую проработать вопрос с IP и DHCP. Сервера в начало сети и т.д. — тут уже на вкус и цвет.

Далее на свежей машинке прописываем корректное имя хоста

vim /etc/sysconfig/network

HOSTNAME=dc

Если с SeLinux не знакомы близко, то пока можно отключить

vim /etc/sysconfig/selinux

SELINUX=disabled

Так же как и firewall. Его можно и в дальнейшем настроить.

systemctl disable firewalld
   systemctl stop firewalld

Ставим нужные для сборки пакеты:

yum -y install gcc make wget python-devel gnutls-devel openssl-devel libacl-devel krb5-server krb5-libs krb5-workstation openldap-devel pam pam-devel

Теперь собираем

cd /tmp/
   wget https://ftp.samba.org/pub/samba/samba-4.6.5.tar.gz
   tar -xzvf samba-4.6.5.tar.gz
   cd ./samba-4.6.5
   ./configure –enable-selftest –with-systemd

Смотрим сколько ядер и ставим -j количество ядер+1. У меня их 8, поэтому -j9

make -j9
   make -j9 install

Настройка SAMBA как контроллер домена

Скопируем нужный конфиг, сохранив старый

mv /etc/krb5.conf /etc/krb5.conf_alt
   cp /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf

Теперь подготовим DC.

/usr/local/samba/bin/samba-tool domain provision –use-rfc2307 –interactive

Запилим службу для systemd

cat > /etc/systemd/system/samba4.service

[Unit]
Description= Samba 4 Active Directory
After=syslog.target
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
ExecStart=/usr/local/samba/sbin/samba
[Install]
WantedBy=multi-user.target

И в автозапуск :

systemctl enable samba4
   systemctl restart samba4

Далее проверяем аутентификацию NT:

/usr/local/samba/bin/smbclient -L localhost -U%

Подкорректируем resolv

vim /etc/resolv.conf
nameserver 127.0.0.1

и тестируем DNS:

host -t SRV ldap.tcp.domain.local
   host -t SRV kerberos.udp.domain.local
   host -t A dc.domain.local

Теперь  правим smb.conf

vim /usr/local/samba/etc/smb.conf
  1. Global parameters
    [global]
    workgroup = DOMAIN
    realm = domain.local
    netbios name = DC
    server role = active directory domain controller
    dns forwarder = 8.8.8.8 #пишем DNS
    allow dns updates = nonsecure
    nsupdate command = /usr/bin/nsupdate -g

[netlogon]
path = /usr/local/samba/var/locks/sysvol/domain.local/scripts
read only = No
write ok = Yes

[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No
write ok = Yes

Делаем линк на конфиг кербероса

ln -sf /usr/local/samba/private/krb5.conf /etc/krb5.conf

И его подправим

nano /etc/krb5.conf

[libdefaults]
default_realm = DOMAIN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = true

Проверяем:

kinit 

Прописываем срок жизни пароля (тут не ограничено)

/usr/local/samba/bin/samba-tool domain passwordsettings set –complexity=off –min-pwd-length=6 –max-pwd-age=0

Тест

klist

Ticket cache: FILE:/tmp/krb5cc_0
Default principal:

Добавляем зоны DNS

/usr/local/samba/bin/samba-tool dns zonecreate dc.domain.local 0.168.192.in-addr.arpa
   /usr/local/samba/bin/samba-tool dns add dc.domain.local 0.168.192.in-addr.arpa zzz PTR dc.domain.local

Готово 🙂