Настройка контроллера домена на Samba 4, Debian 7

Настройка контроллера домена на Samba 4, Debian 7

Решил заменить контроллеры домена на базе Windows Server 2003 R2 на samba 4. Как известно Samba 4 способна выступать как DC Windows 2003 R2 или как DC Windows 2008 R2. В результате выбрал схему Windows 2008 R2. Для реализации поставленной задачи в качестве платформы выбрал Debian 7. Количество контроллеров два, настройки на обоих одинаковы за исключением разброса по ролям, и некоторых нюансов. В целом Active Directory на Samba работает, на мой взгляд, хуже, чем на Windows, но для не больших сетей, основным функционалом которых является хранение информации о компьютерах и пользователях Samba 4 AD имеет право на жизнь. Эта статья, прежде всего заметка для себя на случай когда нужно вспомнить, как я настраивал Samba 4 Active Directory на Debian 7. В заметке прежде всего отражены трудности с которыми я столкнулся и шаги которые я выполнял.

Действия по установке и настройке samba 4 Active Directory на Debian 7

  1. Подготовлен дистрибутив Debian7, установка проводилась со стандартным набором пакетов  без иксов
  2. Произведена локализация Debian7, использую кодировку UTF-8
  3. Установлен и настроен vsftpd
  4. Произведена регистрация на портале portal.enterprisesamba.com логин МойЛогин пароль МойПароль, портал включает в себя не зависимый репозитарий с samba 4, в официальных репах поддерживается только samba версии 3, для доступа к репозитарию с samba 4 присвоен следующий ACCESSKEY = Мой ключ
  5. Линки на репы с samba 4 добавлены в source.list /etc/apt
  6. Добавляем ключ (Мой ключ) подтверждающий источник репа с samba 4
    gpg --keyserver wwwkeys.pgp.net --recv-keys KEY
    gpg --export --armor KEY | apt-key add -
    gpg --fingerprint KEY
  7. Для сборки из исходников, исходники samba копируем в папку /usr/src Устанавливаем  зависимости, которые могут привести к проблемам на стадии сборки:
    ./configure --enable-debug --enable-selftest > /root/samba4.log 2>&1
    cat /root/samba4.log | grep "not found" > /root/samba4_not_found.log
  8. Используя официальное HOWTO на Вики wiki.samba.org/index.php/Samba_4/OS_Requirements,
    Знакомимся с списком библиотек и программ которые должны быть установлены в системе, для того, чтобы samba успешно функционировала.
    Для Debian и Ubuntu:
    build-essential
    libacl1-dev
    libattr1-dev
    libblkid-dev
    libgnutls-dev
    libreadline-dev
    libpam0g-dev
    python-dev
    python-dnspython
    gdb
    pkg-config
    libpopt-dev
    libldap2-dev
    dnsutils
    libbsd-dev
    attr
    krb5-user
    docbook-xsl
    libcups2-dev
    acl

Если требуется поддержка PAM в winbind, то нужно установить libpam0g-dev
Для использования Dynamically Loadable Zones, нужно добавить опцию dlopen в конфиг bind, могут понадобиться библиотеки libkrb5-dev, libssl-dev

  1. Так как samba уже присутствует в репозитариях для установки готового пакета нужно выставить sernet более высокий приоритет, для этого создаем файл samba-sernet.pref /etc/apt/preferences.d/
    Package: *
    Pin: origin "download.sernet.de"
    Pin-Priority: 900
    Package: *
  2. Устанавливаем Samba
    apt-get update
    apt-get install sernet-samba-ad
    apt-get install sernet-samba-client
    (sernet-samba установится как зависимость)
  3. Правильно выбираем имя домена, официально samba не рекомендует использовать в качестве имени домена записи вида local, example,
    я использовал имя biznes.gr
  4. Выбираем имя серверов домена и прописываем их в соответствующие файлы
    Основной контролер домена, стандартно pdc
    Резервный контроллер домена bdc
    В файл /etc/resolv.conf
    search biznes.gr
    nameserver 127.0.0.1
    В файл /etc/hosts
    127.0.0.1 localhost
    192.168.0.5 pdc.biznes.gr pdc
    В файл /etc/hostname
    pdc
    В /etc/network/interfaces
    dns-nameservers 192.168.0.5>
    dns-serch biznes.gr
  5. Отключаем IPv6, за ненадобностью
    меняем 0 на 1 в файле /proc/sys/net/ipv6/conf/all/disable_ipv6
    отключаем поддержку ipv6 в sysctl
    /etc/sysctl.d/disableipv6.conf
    net.ipv6.conf.all.disable_ipv6=1
    Блокируем загрузку модуля ядра
    /etc/modprobe.d/blacklist.conf
    blacklist ipv6
    /etc/modprobe.d/aliases.conf
    alias net-pf-10 ipv6 off
    net-pf-10 off
    Ipv6 off
    Запрет привязывать ipv6 адрес к сокету
    /etc/sysctl.d/bindv6only.conf
    net.ipv6.bindv6only=0
    /proc/sys/net/ipv6/bindv6only
    вносим 0
    Закомментируем все записи относящиеся к ipv6 в файле
    /etc/hosts
    Отключаем ipv6 в ssh для этого вносим в файл /etc/ssh/sshd_config
    AddressFamily inet
    Отключаем в /etc/netconfig rpcbind поддержку ipv6. Устанавливаем и настраиваем ntpd демон. Ntpd должен быть выше версии 4.2.6
    Отключаем ipv6 ntpd
    interface ignore ipv6 в ntp.conf
    Отключаем автозагрузку Exim4
    chkconfig exim4 off, если команды chkconfig нет, chkconfig нужно инсталлировать
    Отключаем Ipv6 в apache2, при его использовании
    nano /etc/apache2/ports.conf
    Listen 0.0.0.0:80
    Проверяем результат отключения IPv6:
    netstat -tunlp
  6. Поднимаем контроллер домена
    samba-tool domain provision use-rfc2307 interactive
    Realm [BIZNES.GR]
    Domain [BIZNES]
    Server Role (dc, member, standalone) [dc]
    Dns backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL) 8.8.8.8
    Administrator password МойПароль
    Retype password:
    Looking up IPv4 addresses
    Looking up IPv6 addresses
    No IPv6 address will be assigned
    Setting up share.ldb
    Setting up secrets.ldb
    Setting up the registry
    Setting up the privileges database
    Setting up idmap db
    Setting up SAM db
    Setting up sam.ldb partitions and settings
    Setting up sam.ldb rootDSE
    Pre-loading the Samba 4 and AD schema
    Adding DomainDN: DC=biznes,DC=gr
    Adding configuration container
    Setting up sam.ldb schema
    Setting up sam.ldb configuration data
    Setting up display specifiers
    Modifying display specifiers
    Adding users container
    Modifying users container
    Adding computers container
    Modifying computers container
    Setting up sam.ldb data
    Setting up well known security principals
    Setting up sam.ldb users and groups
    Setting up self join
    Adding DNS accounts
    Creating CN=MicrosoftDNS,CN=System,DC=biznes,DC=gr
    Creating DomainDnsZones and ForestDnsZones partitions
    Populating DomainDnsZones and ForestDnsZones partitions
    Setting up sam.ldb rootDSE marking as synchronized
    Fixing provision GUIDs
    A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
    Setting up fake yp server settings
    Once the above files are installed, your Samba4 server will be ready to use
    Server Role active directory domain controller
    Hostname pdc
    NetBIOS Domain BIZNES
    DNS Domain biznes.gr
    DOMAIN SID Сид Домена
  7. Создаем символическую ссылку на файл krb5.conf
    cd /etc
    ln -s /var/lib/samba/private/krb5.conf /etc/
  8. Правим файл /etc/default/sernet-samba
    Опцию SAMBA_START_MODE=”none” меняем на
    SAMBA_START_MODE=”ad”
  9. Правим файл nsswitch.conf
    passwd: compat winbind
    group: compat winbind
  10. Отключаем загрузку сервисов
    chkconfig sernet-samba-nmbd off
    chkconfig sernet-samba-smbd off
    chkconfig sernet-samba-winbindd off
  11. Запускаем Samba AD
    mkdir /var/run/samba
    /etc/init.d/sernet-samba-ad start
  12. Тестируем подключение:
    Проверяем наличие самба клиента
    smbclient version
    smbclient L localhost U%

    Domain=[BIZNES] OS=[Unix] Server=[Samba 4.1.7-SerNet-Debian-7.wheezy]
    Sharename Type Comment
    netlogon Disk
    sysvol Disk
    IPC$ IPC Service (Samba 4.1.7-SerNet-Debian-7.wheezy)
    Domain=[BIZNES] OS=[Unix] Server=[Samba 4.1.7-SerNet-Debian-7.wheezy]
    Server Comment
    Workgroup Master
  13. Проверяем аутентификацию в домене
    smbclient //localhost/netlogon –UAdministrator  –c  ‘ls’
    Enter Administrator password
    Domain=[BIZNES] OS=[Unix] Server=[Samba 4.1.7-SerNet-Debian-7.wheezy]
    D Sun May 11 00:21:36 2014
    D Sun May 11 00:21:41 2014
    52338 blocks of size 524288. 48599 blocks available
  14. Тестируем DNS
    host -t SRV _ldap._tcp.biznes.gr.
    _ldap._tcp.biznes.gr has SRV record 0 100 389 pdc.biznes.gr.
    host -t SRV _kerberos._udp.biznes.gr.
    _kerberos._udp.biznes.gr has SRV record 0 100 88 pdc.biznes.gr.
    host -t A pdc.biznes.gr.
    pdc.biznes.gr has address 192.168.0.5
  15. Динамическое обновление DNS стартует каждые 10 минут и использует утилиту samba_dnsupdate. Чтобы динамическое обновление в принципе было возможным нужна утилита nsupdate из комплекта Bind. Для проверки можно использовать:
    # /usr/local/samba/sbin/samba_dnsupdate --verbose --all-names
  16. Проверяем Kerberos (Имя домена обязательно заглавными буквами)
    kinit administrator@BIZNES.GR
    Warning: Your password will expire in 40 days on Sun Jun 22 00:21:40 2014
  17. Проверяем, что был выдан билет
    klist
    Ticket cache: FILE:/tmp/krb5cc_0
    Default principal: administrator BIZNES.GR
    Valid starting Expires Service principal
    12.05.2014 17:31:46 13.05.2014 03:31:46 krbtgt BIZNES.GR@BIZNES.GR
    renew until 13.05.2014 17:31:30
  18. Настройка ntpd
    Для правильной работы AD и Kerberos в частности важно, чтобы время между клиентом и сервером было одинаковым, особенно важно установить равное время на pdc и bdc так как расхождение часов на этих серверах хотя бы на пять минут приведут к не возможности репликации
    Ntpd должен быть версии не ниже 4.2.6 и поддерживать signet ntp
    apt-get install ntp
    apt-get install ntpdate
    apt-get install ntp-doc
    Производим разовую синхронизацию
    ntpdate Server времени
    Смотрим права на папку /var/lib/samba/ntp_signd
    drwxr-x--- 2 root root 4096 Май 13 09:58 /var/lib/samba/ntp_signd/
    Приводим файл /etc/ntp.conf к такому виду:
    # Local clock (this is not the localhost address!)
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
    # The source, where we are receiving the time from
    server 192.168.1.3 iburst prefer
    driftfile /var/lib/ntp/ntp.drift
    logfile /var/log/ntp
    ntpsigndsocket /var/lib/samba/ntp_signd/
    # Access control
    # Default restriction: Only allow querying time (incl. ms-sntp) from this machine
    restrict default kod nomodify notrap nopeer mssntp
    # Allow everything from localhost
    restrict 127.0.0.1
    # Allow that our time source can only provide time and do nothing else
    restrict 192.168.1.3 mask 255.255.255.255 nomodify notrap nopeer noquery # Allow lan mashines to me pdc
    restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer
  19. Управление Samba 4, утилиты
    Samba-tool основная конфигурационная утилита samba-ad
    Настройки политики паролей samba 4
    Настраивается через консоль, используем команду для просмотра,
    samba-tool domain passwordsettings show
    Параметры
    --quiet выход
    --complexity=on|off|default - Пароль должен отвечать требованиям сложности
    --store-plaintext=on|off|default - Хранить пароли используя обратимое шифрование
    --history-length=число - Число хранимых предыдущих паролей пользователей.(Требовать неповторяемость паролей)
    --min-pwd-length=число - Минимальное количество символов в пароле
    --min-pwd-age=число - Минимальный срок действия пароля
    --max-pwd-age=число - Максимальный срок действия пароля
    Моя политика, кроме того продублирована в default domain policy
    Password complexity: off
    Store plaintext passwords: off
    Password history length: 10
    Minimum password length: 5
    Minimum password age (days): 0
    Maximum password age (days): 180
    Повышение уровня домена и леса до 2008R2 samba 4
    samba-tool domain level raise --domain=2008_R2 --forest=2008_R2
    samba-tool domain level show
    Forest function level: (Windows) 2008 R2
    Domain function level: (Windows) 2008 R2
    Lowest function level of a DC: (Windows) 2008 R2
    Утилиты
    nmblookup разрешение имен NetBios
    smbstatus информация о текущих файловых соединениях
    testparm правильность конфиг файла
    wbinfo информация демона winbindd
    samba_dnsupdate динамическое обновление DNS стартует каждые 10 минут использует nsupdate
    ldbsearch инструмент работы с ldap
    Полезные ресурсы: samba4.ru, habrahabr.ru, wiki.samba.org, info-linux.ru, smb-conf.ru

Глюки, и тонкости при работе с AD (2003) samba

  1. При добавлении станции в AD dns запись A может добавиться, а может и нет.
  2. Обратные записи PTR в обратной зоне автоматически не создаются.
  3. При переименовании станции sid станции не меняется (ну это нормально). Имя в AD (сама запись) сохраняет свое значение, что не очень кошерно. Поэтому переименование станции лучше выполнять ее выводом из домена, удалением ПК из AD, и заведением станции в домен.
  4. Перед добавлением ПК в домен нужно вручную подвести часы на станции и выбрать правильный регион (net time /set).
  5. При работе с samba-tools dns при не правильном вводе параметров, а иногда и вовсе по не понятным причинам, программа не выполняет, то, что мы от нее хотим. Вываливается ошибка с проблемами phyton.
  6. При добавлении dns записей через MS остнастку DNS, возникают ошибки с ссылкой на заглушки, при чем сама ошибка при совершении одних и тех же действий способна пропадать. Т.Е при добавлении записи и получении ошибки, нужно пробовать добавлять ее еще раз.
  7. Для настройки времени в Windows XP правим в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Parameters\NtpServer значение на 192.168.0.5
    выполняем w32tm /resync
    На Windows 7 выполняем следующие команды
    w32tm /config /syncfromflags:manual /manualpeerlist:192.168.0.5
    w32tm /config /update
    w32tm /resync
    Нужно изменить параметр
    HKLM\System\CurrentControlSet\Services\W32time\Parameters\Type из AllSync в NT5DS
    Позже, изменил политику домена по умолчанию
  8. Поднимаем slave server AD
    root@bdc:/etc# samba-tool domain join biznes.gr DC -UAdministrator --realm=biznes.gr
    Finding a writeable DC for domain 'biznes.gr'
    Found DC pdc.biznes.gr
    Password for [WORKGROUP\Administrator]:
    workgroup is BIZNES
    realm is biznes.gr
    checking sAMAccountName
    Adding CN=BDC,OU=Domain Controllers,DC=biznes,DC=gr
    Adding CN=BDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=biznes,DC=gr
    Adding CN=NTDS Settings,CN=BDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=biznes,DC=gr
    Adding SPNs to CN=BDC,OU=Domain Controllers,DC=biznes,DC=gr
    Setting account password for BDC$
    Enabling account
    Calling bare provision
    No IPv6 address will be assigned
    Provision OK for domain DN DC=biznes,DC=gr
    Starting replication
    Schema-DN[CN=Schema,CN=Configuration,DC=biznes,DC=gr] objects[402/1550] linked_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=biznes,DC=gr] objects[804/1550] linked_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=biznes,DC=gr] objects[1206/1550] linked_values[0/0]
    Schema-DN[CN=Schema,CN=Configuration,DC=biznes,DC=gr] objects[1550/1550] linked_values[0/0]
    Analyze and apply schema objects
    Partition[CN=Configuration,DC=biznes,DC=gr] objects[402/1615] linked_values[0/0]
    Partition[CN=Configuration,DC=biznes,DC=gr] objects[804/1615] linked_values[0/0]
    Partition[CN=Configuration,DC=biznes,DC=gr] objects[1206/1615] linked_values[0/0]
    Partition[CN=Configuration,DC=biznes,DC=gr] objects[1608/1615] linked_values[0/0]
    Partition[CN=Configuration,DC=biznes,DC=gr] objects[1615/1615] linked_values[28/0]
    Replicating critical objects from the base DN of the domain
    Partition[DC=biznes,DC=gr] objects[97/97] linked_values[28/0]
    Partition[DC=biznes,DC=gr] objects[499/433] linked_values[0/0]
    Partition[DC=biznes,DC=gr] objects[530/433] linked_values[346/0]
    Done with always replicated NC (base, config, schema)
    Replicating DC=DomainDnsZones,DC=biznes,DC=gr
    Partition[DC=DomainDnsZones,DC=biznes,DC=gr] objects[201/201] linked_values[0/0]
    Replicating DC=ForestDnsZones,DC=biznes,DC=gr
    Partition[DC=ForestDnsZones,DC=biznes,DC=gr] objects[18/18] linked_values[0/0]
    Partition[DC=ForestDnsZones,DC=biznes,DC=gr] objects[36/18] linked_values[0/0]
    Committing SAM database
    Sending DsReplicateUpdateRefs for all the replicated partitions
    Setting isSynchronized and dsServiceName
    Setting up secrets database
    Joined domain BIZNES (SID) as a DC
    Если запись A для BDC не создалась, создаем
    host -t A bdc.biznes.gr
    Host bdc.biznes.gr not found: 3(NXDOMAIN)
    root@bdc:/etc# samba-tool dns add 192.168.0.5 biznes.gr BDC A 192.168.0.6 –Uadministrator
    Password for [BIZNES\Administrator]:
    Record added successfully
    root@bdc:/etc# host -t A bdc.biznes.gr
    bdc.biznes.gr has address 192.168.0.6
    ObjectGUID разрешима ли на новое имя bdc
    ldbsearch -H /var/lib/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid
    # record 1
    dn: CN=NTDS Settings,CN=PDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=biznes,DC=gr
    objectGUID: d7ca031b-4255-4de6-86b4-b14d1c61dfe2
    # record 2
    dn: CN=NTDS Settings,CN=BDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=biznes,DC=gr
    objectGUID: bae6ae55-0659-4f34-bbd7-3145ffc084b9
    # returned 2 records
    # 2 entries
    # 0 referrals
    host -t CNAME bae6ae55-0659-4f34-bbd7-3145ffc084b9._msdcs.biznes.gr.
    Host bae6ae55-0659-4f34-bbd7-3145ffc084b9._msdcs.biznes.gr. not found: 3(NXDOMAIN)
    root@bdc:/var/lib/samba/private# host -t CNAME d7ca031b-4255-4de6-86b4-b14d1c61dfe2._msdcs.biznes.gr.
    d7ca031b-4255-4de6-86b4-b14d1c61dfe2._msdcs.biznes.gr is an alias for pdc.biznes.gr.
    samba-tool dns add 192.168.0.5 _msdcs.biznes.gr bae6ae55-0659-4f34-bbd7-3145ffc084b9 CNAME bdc.biznes.gr –Uadministrator
    Password for [BIZNES\Administrator]:
    Record added successfully

    Захват ролей Samba 4

    samba-tool fsmo seize --role='naming'
    samba-tool fsmo seize --role='schema'
    samba-tool fsmo show

Поделиться:

Добавить комментарий

+ 5 = 12
Решите простой математический пример. Например для "два плюс четыре =?" введите "6".