Установка Samba4 в качестве контроллера домена на Ubuntu Server 14.04
Настроим Samba в качестве контроллера домена.
Установка всех пакетов будет проводиться из родных репозиториев. В качестве днс-сервера будет выступать bind9.
В качестве типовой конфигурации будем применять:
-
Название домена (realm) adminunix.ru
-
Короткое имя (domain) adminunix
-
ip-адрес контроллера домена 192.168.0.1
-
имя сервера в домене ad
Установку будем проводить на системе с последними обновлениями.
sudo apt update && sudo apt upgrade
Установим необходимых пакетов:
sudo apt-get install samba acl krb5-user ntp cups bind9 smbclient
Конфигурирование samba4
В состав samba4 входит утилита samba-tool для администрирования домена. Более подробно о возможностях этой утилиты вы можете почитать на странице [urlspan]https://www.samba.org/samba/docs/man/manpages/samba-tool.8.html[/urlspan] , мы же используем ее для поднятия домена.
После установки samba скопируем оригинальный файл конфигурации.
mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
После чего запускаем настройку нашего контроллера домена (DC). В процессе надо будет ввести пароль администратора. Пароль должен быть сложным, иметь цифры, заглавные и строчные буквы !
samba-tool domain provision --use-rfc2307 --use-xattrs=yes --interactive
Отвечаем на вопросы, подставляя свое название домена:
-
Realm [adminunix.ru]: adminunix.ru ←- название домена
-
Domain [adminunix]: adminunix ←- короткое имя домена
-
Server Role (dc, member, standalone) [dc]: dc ←- роль сервера(в данном случаем dc — контроллер домена)
-
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ ←- используемый днс-сервер
-
Administrator password:
-
Retype password:
Или указав все эти данные в одной строке
samba-tool domain provision --realm=adminunix.ru --domain adminunix --adminpass='PASSWORD' --dns-backend=SAMBA_INTERNAL --server-role=dc --use-rfc2307 --use-xattrs=yes
Объяснение параметров (аргументов)
--use-rfc2307 этот параметр добавляет POSIX атрибуты (UID / GID) на схеме AD. Это понадобится при аутентификации клиентов Linux, BSD, or OS X (в том числе на локальной машине) в дополнение к Microsoft Windows. --use-xattrs=yes этот параметр включает расширенное использование атрибутов unix (ACLs) для файлов, размещенных на этом сервере. Если вы не будете открывать доступ файлов на контроллере домена, пропустите этот аргумент (но это не рекомендуется). Вы также должны убедиться, что все файловые системы, которые будут принимать открыт доступ Samba, установлены с поддержкой ACL's. --interactive этот параметр заставляет сценарий резерва запускаться в интерактивном режиме. --use-xattrs
Если в процессе конфигурирования возникли ошибки связанные с названием домена или паролем администратора, для того что заново запустить конфигурирование, удаляем файл конфигурации:
sudo rm /etc/samba/smb.conf
Настройка BIND9
Настраиваем bind9:
sudo nano /etc/bind/named.conf.options
и приводим файл к следующему виду(заменяя ip-адреса на свои):
options { directory "/var/cache/bind"; auth-nxdomain yes; forwarders { 192.168.1.2; }; allow-transfer { none; }; notify no; empty-zones-enable no; allow-query { 192.168.1.0/24; 127.0.0.0/8; }; allow-recursion { 192.168.1.0/24; 127.0.0.0/8; }; allow-update { 192.168.1.0/24; 127.0.0.0/8; }; };
Включаем в конфиг bind9 конфиг samba4
sudo nano /etc/bind/named.conf
и дописываем в конец файла:
include "/var/lib/samba/private/named.conf";
Меняем конфиг для использования bind 9.9
sudo nano /var/lib/samba/private/named.conf
приводим к виду:
dlz "AD DNS Zone" { # For BIND 9.8.0 # database "dlopen /usr/lib/i386-linux-gnu/samba/bind9/dlz_bind9.so"; # For BIND 9.9.0 database "dlopen /usr/lib/i386-linux-gnu/samba/bind9/dlz_bind9_9.so"; };
Далее, подправим конфиг apparmor разрешая bind9 использовать необходимые файлы:
sudo nano /etc/apparmor.d/usr.sbin.named
в конец файла, до »}» вставляем:
для 32-х битной системы:
# for samba4 #/var/lib/samba/private/** r, /usr/lib/i386-linux-gnu/samba/bind9/** m, /usr/lib/i386-linux-gnu/samba/ldb/** m, /usr/lib/i386-linux-gnu/ldb/modules/ldb/** m, /usr/lib/i386-linux-gnu/samba/gensec/krb5.so m, /var/lib/samba/private/dns.keytab rwk, /var/lib/samba/private/named.conf r, /var/lib/samba/private/dns/** rwk, /var/lib/samba/private/krb5.conf r, /var/tmp/** rwk, /dev/urandom rwk,
для 64-х битной системы
# for samba4 #/var/lib/samba/private/** r, /usr/lib/x86_64-linux-gnu/samba/bind9/** m, /usr/lib/x86_64-linux-gnu/samba/ldb/** m, /usr/lib/x86_64-linux-gnu/ldb/modules/ldb/** m, /usr/lib/x86_64-linux-gnu/samba/gensec/krb5.so m, /var/lib/samba/private/dns.keytab rwk, /var/lib/samba/private/named.conf r, /var/lib/samba/private/dns/** rwk, /var/lib/samba/private/krb5.conf r, /var/tmp/** rwk, /dev/urandom rwk,
Перезапускаем службы:
sudo service apparmor restart sudo service bind9 restart
Запускаем samba4:
sudo service samba-ad-dc start
Устанавливаем NTP
Прежде чем приступить к настройке Kerberos, необходимо настроить службу синхронизации времени (NTP — Network Time Protocol), без которой не возможна нормальная работа Kerberos.
Процесс установки описан в статье Настройка NTP сервера для локальной сети.
Для контроллере домена (DC) добавляем в конфигурационный файл ntp.conf
sed -i "s/restrict -4 default kod notrap nomodify nopeer noquery limited/restrict -4 default kod notrap nomodify nopeer noquery limited mssntp/g" /etc/ntp.conf
Добавляем путь к каталогу сокетов Samba
echo "ntpsigndsocket /var/lib/samba/ntp_signd/">> /etc/ntp.conf
перезапускаем наш сервер NTP
service ntp restart
Проверяем разрешения сокетов на контроллере домена (DC). Демон времени должен иметь разрешения на чтение в ntp_signed каталоге. Для проверки разрешений вводим:
# ls -ld /var/lib/samba/ntp_signd/
drwxr-x--- 2 root root 1. 09:30 /var/lib/samba/ntp_signd/
Чтобы установить разрешения, запускаем:
# chown root:ntp /var/lib/samba/ntp_signd/
# chmod 750 /var/lib/samba/ntp_signd/
Настройка Kerberos
В AD Kerberos используется для аутентификации пользователей, машин и служб.
Переименуем оригинальный файл конфигурации Kerberos операционной систем и создадим ссылку на файл конфигурации созданный при настройке Samba.
mv /etc/krb5.conf /etc/krb5.conf.orig
Делаем симлинк конфига kerberos от samba4:
ln -s /var/lib/samba/private/krb5.conf /etc/
Настройка DNS
Члены домена в AD используют DNS для поиска служб, таких как LDAP и Kerberos. Для этого им необходимо использовать DNS-сервер, способный разрешить зону DNS AD.
На своем сервере настроим домен поиска и укажем IP контроллера в параметре nameserver файла /etc/resolv.conf. Например:
search ad.adminunix.ru nameserver 192.168.0.1
Для проверки верной работы Kerberos можно установить krb5-client и проверить работу аутентификации.
kinit administrator@adminunix.ru
klist
klist должен показать информацию по тикетам, если все ок — идем дальше.
Настало время тестов:
Меняем nameserver в resolv.conf чтоб все обращения проходили через наш настроенный bind9
sudo nano /etc/resolv.conf nameserver 192.168.0.1
Проверяем
smbclient -L localhost -U% Domain=[adminunix.ru] OS=[Unix] Server=[Samba 4.1.6-Ubuntu] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.1.6-Ubuntu) Domain=[adminunix.ru] OS=[Unix] Server=[Samba 4.1.6-Ubuntu] Server Comment --------- ------- Workgroup Master --------- -------
smbclient //localhost/netlogon -UAdministrator -c 'ls' Enter Administrator's password: Domain=[ADSAMBA] OS=[Unix] Server=[Samba 4.1.6-Ubuntu] . D 0 Tue Apr 8 11:21:49 2014 .. D 0 Tue Apr 8 11:22:03 2014 46445 blocks of size 4194304. 45581 blocks available
host -t SRV _ldap._tcp.adminunix.ru. _ldap._tcp.adsamba.loc has SRV record 0 100 389 ad.adminunix.ru.
host -t SRV _kerberos._udp.adminunix.ru. _kerberos._udp.adsamba.loc has SRV record 0 100 88 ad.adminunix.ru.
host -t A ad.adminunix.ru.
ad.adminunix.ru has address 192.168.0.1
Настройка KERBEROS
Делаем симлинк конфига kerberos от samba4:
sudo ln -s /var/lib/samba/private/krb5.conf /etc/
Получаем билет:
kinit administrator@adminunix.ru
При получении билета видим сообщение в котором сказано что аккаунт администратора действителен в течении 41 дня.
Warning: Your password will expire in 41 days ...
Сразу изменим длительность аккаунта:
sudo samba-tool domain passwordsettings set --max-pwd-age=999
и проверяем что аккаунт будет работать еще 999 дней
sudo samba-tool domain passwordsettings show ... Maximum password age (days): 999
Полученный билет можем посмотреть по команде:
klist
Настройка NTP
Редактируем конфиг ntp:
sudo nano /etc/ntp.conf
и в конец файла добавляем
ntpsigndsocket /var/lib/samba/ntp_signd/ restrict default mssntp
Перезапускаем сервис:
sudo service ntp restart
На этом базовая настройка samba4 в качестве контроллера домена завершена. На виндовом клиенте прописываем адрес нашего контроллера в качестве первичного DNS-сервера, пингуем PDC по имени и вводим в домен(администратор домена — administrator)
Для управления доменом воспользуемся пакетом Adminpak.msi: [urlspan]для Windows7[/urlspan], [urlspan]для Vista[/urlspan] + RSAT, [urlspan]для Windows XP Pro[/urlspan] + [urlspan]вторая часть[/urlspan].
Устанавливаем, в Меню выбираем пункт Выполнить, вбиваем dsa.msc, наслаждаемся 🙂