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

Чтобы не быть голословным, скажу, что мы это используем на достаточно крупном предприятии в городе Бронницы, Московской области.

Установка

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

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

  • nano /etc/sysconfig/network

HOSTNAME=dc

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

  • nano /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

Теперь компилируем. Это увы, приходится делать, так как новая версия SAMBA не сразу появится в хранилищах этой ОС.

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

  • make -j17

  • make -j17 install

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

  • 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

если добавляем второй и т.д. контроллер то команда

  • /usr/local/samba/bin/samba-tool domain join domain.local DC -UAdministrator –realm=domain.local)

Сделаем файлик для systemd

  • cat > /etc/systemd/system/samba4.service
1
2
3
4
5
6
7
8
9
10
[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

  • nano /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

  • nano /usr/local/samba/etc/smb.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 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
1
2
3
4
[libdefaults]
 default_realm = DOMAIN.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = true

Проверяем:

Пароль можно выставить бесконечно, хотя это и не очень хорошо

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

Проверка

  • klist
1
2
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DOMAIN.LOCAL

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

  • /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

Управляем дальше с помощью samba-tool, RSAT если windows-машинка под рукой или с помощью тех же Active Directory Manager с планшета. Для Android могу порекомендовать ActiveDir Manager (в бесплатной версии не сохраняются настройки сервера).