Ubuntu 16.04 Active Directory

Решил ввести ubuntu 16.04 server в домен active directory. Заодно посмотреть что изменилось с предыдущего раза.

https://imbicile.pp.ru/samba-server-ad/

Поэтому решено написать новую статью. Старую на всякий случай не трогаю.

Изначальные данные

Имя сервера: u1604
Имя сервера контроллера домена: SERV.DOMEN.MY
Имя домена: DOMEN.MY
Пользователь домена с правами на присоединение: supauser@DOMEN.MY
Папка для общего доступа с правами 777 : /home/virtual/Share

Перед правкой конфигурационных файлов ОБЯЗАТЕЛЬНО делайте их бэкапы

Обновляем сервер

sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y

Ставим samba и winbind

sudo apt-get install samba winbind

Ставим авторизацию kerberos

sudo apt-get install krb5-user

Ставим механизмы авторизации. Иначе не будет работать и будем при тестировании получать ошибку
session setup failed: NT_STATUS_INVALID_PARAMETER

sudo apt-get install libpam-krb5 libpam-winbind libnss-winbind

Правим winbind

nano /etc/nsswitch.conf 
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat winbind
group:          compat winbind
shadow:         compat winbind
gshadow:        files

hosts:          files dns mdns4_minimal [NOTFOUND=return] mdns4

networks:       files dns

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Правим samba

nano /etc/samba/smb.conf
[global]
   netbios name = u1604

   workgroup = DOMEN
   realm = DOMEN.MY

   security = ADS
   encrypt passwords = yes

   dns proxy = no 
   panic action = /usr/share/samba/panic-action %d

   winbind enum groups = yes
   winbind enum users = yes
   winbind use default domain = yes
   template shell = /bin/bash
   winbind refresh tickets = yes

   idmap config *:backend = tdb
   idmap config *:range = 10000-80000
   idmap config DOMEN:backend = rid
   idmap config DOMEN:range = 10000-80000

   domain master = no
   local master = no
   preferred master = no
   os level = 0
   domain logons = no

   load printers = no
   show add printer wizard = no
   printcap name = /dev/null
   disable spoolss = yes

[share]
    path = /home/virtual/Share
    writeable = yes
    browseable = yes
    guest ok = no

Проверяем настройки samba

testparm -s

Правим ошибку количества соединений
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

Добавляем в конец файл строку со значением 16384

nano /etc/security/limits.conf
............................
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4

*               -       nofile          16384

# End of file

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

Правим настройки kerberos

nano /etc/krb5.conf
[libdefaults]
	default_realm = DOMEN.MY
	dns_lookup_realm = false
	dns_lookup_kdc = true
	ticket_lifetime = 24000

	krb4_config = /etc/krb.conf
	krb4_realms = /etc/krb.realms
	kdc_timesync = 1
	ccache_type = 4
	forwardable = true
	proxiable = true

	v4_instance_resolve = false
	v4_name_convert = {
		host = {
			rcmd = host
			ftp = ftp
		}
		plain = {
			something = something-else
		}
	}
	fcc-mit-ticketflags = true

[realms]
	DOMEN.MY = {
                kdc = SERV.DOMEN.MY
                admin_server = SERV.DOMEN.MY
                default_domain = DOMEN.MY
        }


[domain_realm]
	.domen.my = DOMEN.MY
	domen.my = DOMEN.MY


[login]
	krb4_convert = false
	krb4_get_tickets = false

Правим файл hosts
Именно обязательно в этом порядке. Иначе получим ошибку на этапе присоединения
No DNS domain configured for u1604. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

nano /etc/hosts
127.0.0.1	localhost
127.0.1.1	u1604.domen.my u1604

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Присоединяем к домену используя учетную запись с правами администратора домена

net ads join -U supauser

Проверяем присоединение

net ads testjoin
Join is OK

Ставим клиент и библиотеки для проверки сетевых папок

sudo apt install samba cifs-utils smbclient

Проверяем работу winbind

wbinfo -t
wbinfo -u
wbinfo -g

Проверяем работу kerberos

kinit supauser@DOMEN.MY

Смотрим что мы получили

klist
Default principal: supauser@DOMEN.MY

Valid starting       Expires              Service principal
15.09.2016 12:59:59  15.09.2016 19:39:55  krbtgt/DOMEN.MY@DOMEN.MY

Проверяем работу папок. На этом моменте долго не мог понять почему не авторизуется. Если заходить из Windows то просит пароль. Оказалось как раз из за нехватки библиотек установленных выше.
session setup failed: NT_STATUS_INVALID_PARAMETER

smbclient -U supauser@DOMEN.MY -L localhost

Проверяем работу самбы

smbstatus
Samba version 4.3.9-Ubuntu
PID     Username      Group         Machine            Protocol Version       
------------------------------------------------------------------------------
1616      supauser      администраторы домена  10.10.10.5 (ipv4:10.10.10.5:52467) SMB3_00     

Service      pid     machine       Connected at
-------------------------------------------------------
share        1616   10.10.10.5  Thu Sep 15 12:42:27 2016

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
1616         11424      DENY_NONE  0x100081    RDONLY     NONE             /home/virtual/Share   .   Thu Sep 15 12:42:26 2016

15 комментариев

  • Айтуган

    По поводу записи в hosts официальная вики самбы говорит вот что:

    This error appears, because Samba can’t find a DNS domain the host belongs to. Run the following command

    # getent hosts M1
    10.99.0.5 M1.samdom.example.com M1

    The commands output must show the correct LAN interface IP (not 127.*.*.*!) and the hostname including the AD DNS zone. Additional alias names are optional. If you’re getting a different or no output, fix it in your DNS or by adding/changing the /etc/hosts entry:

    10.99.0.5 M1.samdom.example.com M1

    то есть адрес должен быть сетевым (10.99.0.5), а не локальным (127.0.0.1).
    Или может здесь спрятан хитрый план? Поясните, пожалуйста.

  • Алексей

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

    • Да. После ввода в домен появится возможность входа с помощью доменной учетной записи. Правда вероятно что в статье не вся информация по этому поводу. Так как еще сколько я знаю надо настроить PAM на работу с Winbind.
      Так же существует утилита ввода в домен через графическую оболочку. domainjoin-cli. Сколько помню она находиться в пакете pbis-open, который качается deb пакетом с сайта производителя.

      • Alexey

        В кратце хочу обьяснить, я хочу собрать лиунксовую машинку с самым важным софтом и готовыми настройками, чтобы упаковать в какой то образ.
        После просто брать его, залить на машинку, и чтоыб только изменить имя компа в сети и все. Хочу понять на сколько это реально и с какими проблемами можно столкнуться.

        • Чисто исходя из логики такое возможно. Настройки не затрагивают профиль пользователя. Под каждого пользователя дэфолтные настройки можно подготовить в /etc/skel/. Но делать образ скорей всего надо будет без ввода в домен. То есть подготовить. Настроить. Свернуть в образ. Затем развернуть. Поменять имя ПК. Затем уже делать net ads join. Если это не сделать то по идее поползут конфликты. А так по идее, почему бы и нет. Главное это дело хорошенько протестировать и только после этого рать за рабочий вариант.

  • RZH

    Доброго времени суток!

    Замечательная статья. Но возник глупый вопрос, как авторизоваться на компьютере под пользователем домена? При попытке входа под MYDOMEN\User пишет, что пароль не правильный (проверял правильный)?

    • Если все проверки “wbinfo -u” и прочее работает, то скорей всего не работают механизмы PAM
      Здесь они не рассмотрены так как не подразумевалось входить под пользователями. Присмотреть примеры можно на официальной станице Ubuntu http://help.ubuntu.ru/wiki/%D0%B2%D0%B2%D0%BE%D0%B4_%D0%B2_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD_windows

      Раздел “Авторизация в Ubuntu через пользователей домена”

      • RZH

        К сожалению в офф документации нет настроек для 16.04, Перелопатил тоны инфы так и не нашел корректных конфигов PAM.

        • Из вариаций можно попробовать указать логин вида domen@user или domen\user.
          А так, к сожалению пока такую задачу еще не доводилось решать.

          • RZH

            idmap config *:backend = tdb
            idmap config *:range = 10000-80000
            idmap config DOMEN:backend = rid
            idmap config DOMEN:range = 10000-80000

            Настройки не подсвечиваются зеленным цветом, это нормально? Ощущение, что idmap config не читается.

            А вот, если убрать ; из стандартного конфига, то
            idmap uid = 10000-20000 подсвечивает зеленным.

            • По поводу цветности тут не совсем понял. Цветность зависит от настроек редактора. Здесь главное чтобы testparm не выдавал ошибок. Если что то не читается или написано неверно, то будет предупреждение или ошибка.

              • RZH

                testpam вроде без ошибок, но странно, просто vim, по идеи, подсвечивает зеленным, если параметр принят, но мб сам редактор тупит…

  • workgroup = DOMEN лучше исправить на workgroup =

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

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