SAMBA как Domain Controller на CentOS 7
SAMBA достаточно давно уже может стать контроллером домена на предприятии и стабильно и нетребовательно выполнять свои задачи. Да, это уровень 2008R2 на сегодня. Но не везде и нужны серьёзные леса доменов с эксченджами и т.п. весьма дорогостоящими хотелками. Авторизовать пользователей, хранить о них информацию, играть групповыми политиками и скидывать по LDAP адресную книгу - это SAMBA умеет без проблем.
Чтобы не быть голословным, скажу, что мы это используем на достаточно крупном предприятии в городе Бронницы, Московской области.
Чем Active Directory на SAMBA может быть полезен вам
- нетребовательность к ресурсам. Действительно, достаточно минимальной VDS (ставили на одноядерниках с 512МБ памяти), простого нетбука (был и такой вариант: легко спрятать и долго работает от батареи) или старого системника для нормального функционирования сервиса;
- скорость работы очень высокая;
- удобно диагностировать, так как лог очень подробный;
- простые и понятные команды. Это позволяет и автоматизировать ряд процессов (например, атоматическое добавление некоторых полей пользователям при создании учетных данных).
Установка 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 не сразу появится в хранилищах этой ОС.
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. У меня их 16, поэтому -j17
make -j17 make -j17 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
если добавляем второй и т.д. контроллер то команда
/usr/local/samba/bin/samba-tool domain join domain.local DC -UAdministrator –realm=domain.local)
Сделаем файлик для 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
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
# 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 administrator@DOMAIN.LOCAL
Пароль можно выставить бесконечно, хотя это и не очень хорошо
/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: 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 (в бесплатной версии не сохраняются настройки сервера).