Samba 4 + CentOS. Полноценный AD на Linux!

 Многие сталкивались с проблемой дороговизны AD от Microsoft и решение было одно – очень муторная связка Samba + LDAP + phpadminldap (ну или другой редактор gosa или MDS), но помимо крайне трудной настройки всего этого чуда, она еще много чего не поддерживала, например групповые политики. Но тут пришел он – SAMBA 4. Что самое главное, так это решение пресловутой проблемы с отсутствием групповых политик и гемороев с редактором, теперь у нас есть и групповые политики и относительная простота в настройке и, что самое приятное,  возможность управления с Windows, например я управляю с ноутбука (подробно написано, как ставить тут). Меня тут просили указать железо и IP в реальном случае использовалась виртуалка на базе KVM запущенная на сервере Dell R320 (под сервер выделены след. ресурсы: ОЗУ 4 ГБ, HDD 15 ГБ (каталог на СХД монтируется отдельно), Проц. 1 Intel Xeon E5-1410), с IP 192.168.0.101. В данном же примере IP, по традиции 192.168.0.1, а конфигурация приблизительно следующая (ОЗУ 2 ГБ, HDD 7 ГБ). И так, давайте приступим к настройке :)

Как понятно из комментария мы определяем имя нашего будущего сервера.

Отключаем наш “любимый” selinux

Устанавливаем все необходимое нам. В данном случае в качестве dns-backend используется bind.

Качаем и устанавливаем Samba, на момент написания статьи актуальной версией была 4.0.4

И тут у нас два варианта, либо:

и дальше по пунктам:

Не забудьте, что пароль имеет свои критерии (количество символов и т.д. как в windows).  Тут все ясно, разве что 8.8.8.8 это forwarder dns (в случае если запрашивается имя о котором нет записи в нашем dns, то мы обращаемся сюды). Либо такой вариант:

И создаем новый домен ;). Собственно и все, ну почти все, нужно еще dns поднастроить и по мелочи…

Создаем файлы конфигурации для RNDC. Он может быть использован в качестве удобной альтернативы к написанию rndc.conf файла, соответствующих элементов управления и основных ключей в named.conf. Во какая удобная штука.

Вроде все понятно  ;)

Вот мы и домене.

Настраиваем наш сервер kerberos.

Ставим NTP сервер

Ну тут все ясно, настраиваем NTP, у кого есть другие NTP сервера могут воткнуть их.

Тут происходит беспрецедентная раздача прав, прям демократия в действии ;)

Все в принципе понятно, запускаем samba

Опять раздаем права, мы добрые. Всем демократии)))

Тут такой же скрипт на запуск, только уже NTP сервера.

Все пускаем, если повезет.

Проверяем шары на samba

Такой вот выхлоп должен быть

Пытаемся пройти проверку подлинности, как Administrator

Вот такой выхлоп.

Проверяем выхлоп dns сервера для ldap

Проверяем выхлоп dns сервера для kerberos

Будут ошибки… значит что то не так)))

И финальный штрих.

Разрешаем доступ к серверу, хотя можно просто вырубить iptables… кому как удобнее. Но лучше отрубить.

Вообщем все, удачи ))) и не забудьте прописать ip сервера в качестве DNS

Совсем забыл. Чтобы сбросить пароль админа, ну или задать его.

Недавно возникла проблема с отключение политики сложных паролей, да и вообще с этим разделом. Решение следующие:

Продолжение статьи тут.

59 comments

  1. Vlvasya:

    А как собственно юзеров добавлять? Как политиками управлять?

  2. dima:

    Спасибо за статейку, но сильно раздражает когда наводишь мышку на блоки кода и сверку появляется эта фиговина с выбором что делать, аж в газах рябит.
    И хорошо писать вначале статьи, имеем сервер , ОС такая , ip такой то

    Кстати тестил с кластером hyper-v ? Я как то проверял на бете , не работало, кластер не проходил проверку по керберосу, сейчас пофиксили или нет ?

    • admin:

      Я посмотрю, что можно сделать с фиговиной :). На счет hyper-v нечего сказать немогу, не пользовался и небуду (по причине приверженности к Linux системам и свободным решениям). Но десктопы у меня в офисе на винде и все работает как часы.

  3. dima:

    Все , раздражать стало меньше :) Спасибо
    есть помарка с
    make && make install
    И если устанавливать Centos 6.4 minimal надо доставить еще
    yum -y install perl-core
    Иначе на ./configure –enable-selftest просит установить
    самба 4.0.6 использовалась
    ну и как мелоч –adminpass ‘Ваш пароль’, хорошо
    оставить знак = , конечно кто в курсе тот поймет, но все же так лучше:
    –adminpass=’Ваш пароль’

    • admin:

      Ценные комментарии, спасибо))) правда, я ставил 4.0.4 и кажется у меня не было проблемы с perl, возможно они что то поменяли.

  4. tehnikpc:

    Инструкция вообще не рабочая. Не запускается bind пишет “/usr/local/samba/private/named.conf invalid file”.

    • admin:

      Я бы посоветовал вам удостовериться в наличии этого файла, а так же в правильности установки samba4 (в частности DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE), необходимое выделено), так как данный файл являет собой настройки к bind которые идут непосредственно с samba и подключаются в установленный bind путем дописывания /etc/named.conf (include “/usr/local/samba/private/named.conf”;). В данной статье он нигде не изменяется, так что…

    • kuksha:

      Спасибо за статью. Присоединяюсь к вопросу. Можно попросить дать начальный кусок этого файла – /usr/local/samba/private/named.conf ?
      Делаю под FreeBSD, а там всё разнесено по другим каталогам, поэтому не могу определить о каком именно одноимённом файле идёт речь в некоторых местах…

      • admin:

        Странно, на сколько я в курсе – в BSD все так же… но я сам не тестил, попробуйте посмотреть тут

        • kuksha:

          Понятно. скорее всего дело в том, что я ставил из портов, а из исходников видимо каталоги такие же как и в статье будут… ну ничего – я вроде нашёл этот файл.
          Но, вот на файле dns.keytab я похоже действительно увяз – такого вообще нигде нет, есть только в исходниках самбы… Можете рассказать о нём чуть подробнее – откуда он берётся?

          • admin:

            Возможно /var/db/samba4/private/
            или попробуйте find / -name dns.keytab (под FreeBSD она тоже есть)
            Вообще лично я пользуюсь всегда find, кто то любит locate, т.к. она быстрее, но есть одно но! Если вы пользуетесь find, то вы ищите сам файл. Если вы пользуетесь locate, то вы ищите ссылку в базе этой утилиты, а ведь эту базу нужно еще заполнить ;)
            Так же вам может помочь подобный вариант:
            tkey-gssapi-credential “DNS/dns.your.domain”;
            tkey-domain “dns.your.domain”;
            по крайней мере на вики самба, такой вариант есть.

  5. rt:

    Прошел почти весь Квест но вот здесь

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

    отказ

    session setup failed: NT_STATUS_CONNECTION_REFUSED

    • admin:

      Есть несколько вариантов из-за чего происходит подобное событие:
      1. Нет каталога /var/run/samba, выход создать его и перезапустить samba. (негде создавать smbd.pid и nmbd.pid)
      2. В samba.conf не указанны параметры local master, domain master, preferred master. (поставить yes)
      3. Но я бы советовал вам сразу после получения ошибки выполнить tail /var/log/messages (это лог последних сообщений на сервере, увидев который я смогу помочь вам более полно)

  6. rt:

    Первое ушло сейчас застрял вот здесь

    host -t SRV _ldap._tcp.mydomain.com.
    Host _ldap._tcp.mydomain.com not found: 3(NXDOMAIN)

    смотрел вот сюда при установке/настройке

    http://www.alexwyn.com/computer-tips/centos-samba4-active-directory-domain-controller

    tail /var/log/messages

    пишет вот это :

    Aug 13 15:44:56 centos1 samba[2864]: /usr/local/samba/sbin/samba_dnsupdate: File “/usr/local/samba/sbin/samba_dnsupdate”, line 124, in get_credentials
    Aug 13 15:44:56 centos1 samba[2864]: [2013/08/13 15:44:56.284201, 0] ../lib/util/util_runcmd.c:317(samba_runcmd_io_handler)
    Aug 13 15:44:56 centos1 samba[2864]: /usr/local/samba/sbin/samba_dnsupdate: raise e
    Aug 13 15:44:56 centos1 samba[2864]: [2013/08/13 15:44:56.284325, 0] ../lib/util/util_runcmd.c:317(samba_runcmd_io_handler)
    Aug 13 15:44:56 centos1 samba[2864]: /usr/local/samba/sbin/samba_dnsupdate: RuntimeError: kinit for CENTOS1$@ICS.LOCAL failed (Cannot contact any KDC for requested realm)
    Aug 13 15:44:56 centos1 samba[2864]: [2013/08/13 15:44:56.285019, 0] ../lib/util/util_runcmd.c:317(samba_runcmd_io_handler)
    Aug 13 15:44:56 centos1 samba[2864]: /usr/local/samba/sbin/samba_dnsupdate:
    Aug 13 15:44:56 centos1 abrtd: Executable ‘/usr/local/samba/sbin/samba_dnsupdate’ doesn’t belong to any package
    Aug 13 15:44:56 centos1 abrtd: ‘post-create’ on ‘/var/spool/abrt/pyhook-2013-08-13-15:44:56-3010′ exited with 1
    Aug 13 15:44:56 centos1 abrtd: Corrupted or bad directory ‘/var/spool/abrt/pyhook-2013-08-13-15:44:56-3010′, deleting

    Спасибо!

  7. rt:

    вот еще ругательство

    cannot resolve servers for kdc in realm while getting initial credentials

    у машины выделенный ip

    • admin:

      Проверьте запущены ли сервисы bind, smb, nmb. Проверьте права iptables и selinux. Удоставерьтесь, что у вас не стоит какой нибудь nss-mdns. Не поможет, скиньте лог сразу после ошибки, для более детального анализа

  8. rt:

    /etc/resolv.conf

    перезаписывает этот файл при перезагрузке

    PEERDNS=no

    не помогло

    есть идеи?

  9. Den:

    А в конфиг самбы настройки сами должны прописываться??
    Мне вот пришлось подправить samba.conf и только после этого все заработало
    если кому надо:
    [global]
    server role = domain controller
    workgroup = LPT
    realm = lpt.local
    netbios name = srv

    [netlogon]
    path = /var/lib/samba/sysvol/example.com/scripts
    read only = No

    [sysvol]
    path = /var/lib/samba/sysvol
    read only = No

    И еще DNS не забыть указать в свойствах интерфейса

    • admin:

      Я боюсь, что вся статья описывает процедуру настройки samba…

      • Den:

        Да, но вот важной части – изменение конфиг файла как раз нет

        • admin:

          Боюсь, вы не правы. Внимательнее изучите статью и сравните с процедурой описанной в официальной wiki, конфиг настраивается при выполнении /usr/local/samba/bin/samba-tool domain provision –realm=test.local –domain=TEST –adminpass ‘Ваш пароль’ –server-role=dc –dns-backend=BIND9_DLZ, вы можете это проверить если выполните testparm -s /etc/samba/smb.conf

  10. tema:

    Привет а ни кто не пытался мигрировать с самбы 3.5 на самбу 4 ? С переносом всех групп и пользователей.

  11. SANER:

    Ну а как насчет перемещаемых профилей nix-клиентов? Где искать или все как самбой 3, нужно ставить pam и тд.?

    • admin:

      Насколько я в курсе перемещаемых профилей настраиваются в секции [Profiles] файла /etc/samba/smb.conf. Вот пример Но для Linux клиентов, вам по любому придется использовать pam. Т.к. подобные профили не поддерживаются самой системой и насколько мне известно – это не секьюрно

      • SANER:

        чего все так смутно относятся к перемещаемым профилям – место сжирают? – есть квоты. Просто сломалась тачка у юзера а ему нужно продолжить и где ему его настройки программ и тд из шары? Ну блин этот pam_mount – это жесть.

        • admin:

          нет, я не против перемещаемых профилей. Возможно вам будут интересны след. ресурсы: тут по поводу pam, likewise (под linux) ну и самый правильный способ (на мой взгляд) это Calculate Linux. Но никак ни nfs + nis, как я понимаю вам именно так и хочется реализовать

          • SANER:

            уже реализовано так: сервер – Centos 6 x64 (DHCP/DNS/LDAP+SAMBA+PAM), клиентские тачки с такойже осью. Прочитал ваш док и думаю а не перейти ли в будующем, вот и интересуюсь про профиля

          • admin:

            У меня сейчас так Centos samba4 pdc (локально) + Centos samba4 bdc (цод) и тачки на mint, debian (бэкап профилей через clonzilla + pxe загрузчик + kerberos + pam). Это что касаемо профилей… У нас нет Windows кроме сервера приложений.

  12. Tema:

    ip pdc = 192.168.0.2
    ip dns = 192.168.0.1
    Подскажите что делать если DNS настроен и функционирует нормально. На виртуалках в домен все входит консоль AD работает нормально. Только при указании днс сервера там где стоит самба. При указании моего реального днс керберос не находит базы.
    [rat@dc etc]# kinit Administrator@DOMEN.RU
    kinit: Cannot resolve servers for KDC in realm “DOMEN.RU” while getting initial credentials.
    Меняю в
    /etc/resolv 192.168.0.1 ошибка.
    /etc/resolv 192.168.0.1 все работает.

    Linux dc.domen.ru 2.6.32-358.el6.i686 #1 SMP Thu Feb 21 21:50:49 UTC 2013 i686 i686 i386 GNU/Linux
    nslookup на 192.168.0.1

    [root@halt firewall]# nslookup domen.ru
    Server: 127.0.0.1
    Address: 127.0.0.1#53

    Name: domen.ru
    Address: 192.168.0.2

    • admin:

      Простите, но из вашего описания не очень понятно где DNS который держит зону вашего домена AD и как настроен сам домен, а точнее параметр dns-backend (есть литам forward на нужный вам DNS сервер и поддерживается ли у последнего динамическое обновление зон)

      • Tema:

        Днс находится на avtgate.ru(192.168.0.1)
        Samba4 находится на avtpdc.ru(192.168.0.200)
        Конф самбы
        [global]
        workgroup = AVTDC
        realm = AVTDC.RU
        netbios name = DC
        server role = active directory domain controller
        dns forwarder = 192.168.0.1

        [netlogon]
        path = /usr/local/samba/var/locks/sysvol/avtdc.ru/scripts
        read only = No

        [sysvol]
        path = /usr/local/samba/var/locks/sysvol
        read only = No
        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        cat /etc/resovl
        search avtgate.ru
        nameserver 192.168.0.200
        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        cat /etc/krb5.conf
        [logging]
        default = FILE:/var/log/krb5libs.log
        kdc = FILE:/var/log/krb5kdc.log
        admin_server = FILE:/var/log/kadmind.log

        [libdefaults]
        default_realm = AVTDC.RU
        dns_lookup_realm = true
        dns_lookup_kdc = true
        ticket_lifetime = 24h
        forwardable = yes
        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        При получении winXp по dhcp
        Днс адреса 192.168.0.1 запуская Оснастку ад полчаю вот что.
        i019.radikal. ru/1310/3e/2e4d33ec50bb. jpg
        Меняю руками адрес на WinXp на 192.168.0.200 все работает как часы.

        • admin:

          Мне интересно что вам скажет “/usr/local/samba/bin/samba-tool testparm”. Так же возможно вам поможет данная статья (там в самом низу). Ну и последнее, у вас в конфиге не хватает строчки для динамического обновления зон, о чем я писал в первом ответе на ваш комментарий (dns recursive queries = yes)

  13. Tema:

    [root@dc etc]# /usr/local/samba/bin/samba-tool testparm
    Unknown parameter encountered: “dns recursive queries”
    Ignoring unknown parameter “dns recursive queries”
    Press enter to see a dump of your service definitions

    # Global parameters
    [global]
    workgroup = AVTDC
    realm = AVTDC.RU
    netbios name = DC
    interfaces = 192.168.0.200, 127.0.0.1
    bind interfaces only = Yes
    server role = active directory domain controller
    log level = 3
    dns forwarder = 192.168.0.1

    [netlogon]
    path = /usr/local/samba/var/locks/sysvol/avtdc.ru/scripts
    read only = No

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

    [root@dc etc]# /usr/local/samba/bin/smbclient -L localhost -U%
    Unknown parameter encountered: “dns recursive queries”
    Ignoring unknown parameter “dns recursive queries”
    Domain=[AVTDC] OS=[Unix] Server=[Samba 4.2.0pre1-GIT-5990de5]

    Sharename Type Comment
    ——— —- ——-
    netlogon Disk
    sysvol Disk
    IPC$ IPC IPC Service (Samba 4.2.0pre1-GIT-5990de5)
    Domain=[AVTDC] OS=[Unix] Server=[Samba 4.2.0pre1-GIT-5990de5]

    Server Comment
    ——— ——-

    Workgroup Master
    ——— ——-

  14. SANER:

    Добрый день, а ктонибудь вкурсе можно ли получить список пользователей авторизованных в домен (openldap+samba+pam) и как это сделать?

    • admin:

      авторизованных на сервере в текущий момент или всех существующих пользователей, поясните. И какие пользователи, если win, то они скорее всего получают билет kerberos, следовательно можно командой klist посмотреть розданные билеты. Если же вы имеете ввиду рулежку самим LDAP, то могу посоветовать Apache Directory Studio под LINUX, сам пользуюсь… Ну а насчет, как получить подобную инфу с samba 4, для linux машин, боюсь, я затрудняюсь ответить возможно вам поможет /usr/local/samba/bin/samba-tool user list

      • SANER:

        …именно авторизованных на сервере в данный момент. Пользователи LINUX. домен состоит из openldap+samba3*+pam-авторизация+pam_mount. чем из этих трех софтин можно получить список? Все бы ничего все вопросы возникают из-за pam_mount, который не может отмонтировать папку(ему не дает это сделать несколько процессов) юзера, когда он делает logout.

  15. Aspar:

    chown named:named /usr/local/samba/private/dns
    chown named:named /usr/local/samba/private/dns.keytab
    chmod 775 /usr/local/samba/private/dns

    где ты их взял? нету их там.

  16. snowrider:

    Автор ты бы первоисточник указывал , ты походу не скрипты украл, а тупо все украл

    http://opentodo.net/2013/01/samba4-as-ad-domain-controller-on-centos-6/

    • admin:

      Боюсь, что вы не правы… Ссылку эту уже видел и поверьте, даже скрипты не от туда… Ну и коль вы хотите первоисточник, то пожалуйста:
      Номер раз
      Номер два

      • snowrider:

        на этот ресурс http://www.alexwyn.com/computer-tips/centos-samba4-active-directory-domain-controller я заглядывал там все не так. wiki не очень информативна. А тут глядь и потрясающие совпадения.

        • admin:

          Ну если для вас “все не так” заключается только в том, что там используется samba_internal – это скорее ваша проблема, нежели моя. А вики более чем информативна по поводу BIND_DLZ… В общем и целом – надеюсь вас более не видеть на данном сайте, что было бы логично, коль он вам так неприятен

  17. Tema:

    Nov 19 08:37:25 dc samba[7165]: Calling samba_kcc script
    Nov 19 08:37:25 dc samba[7165]: [2013/11/19 08:37:25.250311, 0] ../lib/util/util_runcmd.c:317(samba_runcmd_io_handler)
    Nov 19 08:37:25 dc samba[7165]: /usr/local/samba/sbin/samba_kcc: close failed in file object destructor:
    Nov 19 08:37:25 dc samba[7165]: [2013/11/19 08:37:25.250571, 0] ../lib/util/util_runcmd.c:317(samba_runcmd_io_handler)
    Nov 19 08:37:25 dc samba[7165]: /usr/local/samba/sbin/samba_kcc: IOError: [Errno 10] No child processes
    Nov 19 08:37:25 dc samba[7165]: [2013/11/19 08:37:25.250719, 0] ../lib/util/util_runcmd.c:317(samba_runcmd_io_handler)
    Nov 19 08:37:25 dc samba[7165]: /usr/local/samba/sbin/samba_kcc: close failed in file object destructor:
    Nov 19 08:37:25 dc samba[7165]: [2013/11/19 08:37:25.250863, 0] ../lib/util/util_runcmd.c:317(samba_runcmd_io_handler)
    Nov 19 08:37:25 dc samba[7165]: /usr/local/samba/sbin/samba_kcc: IOError: [Errno 10] No child processes

    Подскажите что это могло бы быть?

    • admin:

      Насколько мне известно IOError: [Errno 10] No child processes – это питоновская ошибка… Возможно у вас не установлен необходимый модуль питона. Попробуйте yum install python* -y

  18. Tema:

    Не раскроете тайнство подключение принтера через ad ?

  19. alex123:

    Не такой уж полноценный АД.
    Что делать с доменными корнями DFS? С ними полный шлехт

  20. alex123:

    Ерунда. Да это все известно уже как сто лет.
    Там описывается обычный изолированный корень дфс. Ну жен корень интегрированный в ад. Разницу описывать долго – есть в инете.

    Далее вы не указываете в какой моде работает у вас самба4. Если в 2008р2 – это вообще привет. Нет DFSR. Досвидания репликации.

    Далее, вы уверены, что бинд в том варианте, что вы описали нормально отрабатывает? Добавляет компьютеры, обнавляет их ип? Можно увидеть вывод зоны?

    • admin:

      DFSR – вопрос времени, но я с вами согласен – мой косяк. (http://sysadmins.ru/topic346993.html – как я понял, вы об этом. Сам не проверял)(FRS как вариант… более нечего в голову для репликации не приходит сейчас, но для windows 2008r2 не прокатит).
      Я в этом уверен потому что есть организации работающие на таком домене и, разумеется, я недам вам этой информации.

  21. alex123:

    Извините за мой французский, а почему нет?
    Что мешает заменить реальный домен фейковым, сохранив все остальное? Я ж не скриншоты прошу.

    Вы пишите, что у вас есть инстанция с минтами в качестве клиентов самбы4. Скажите на минтах у вас строит какая самба? Точнее вопрос: с какой самбой вы вводили минты в домен самбы4?

    • admin:

      Отсутствие времени – вот у вас, походу, одна организация (насколько я понимаю – это ООО «ГИП»(сайт на вашей проксе)), а у меня несколько и там где я ставил – я уже неработаю. Разворачивать специально для вас – простите, нет возможности.
      “инстанция с минтами” – я вас непонял, возможно вы имели ввиду linux станции (http://www.beyondtrust.com/Products/PowerBrokerIdentityServicesADBridge/)

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Перед отправкой формы:
Human test by Not Captcha