Linux with windows domain

Ввод компьютера в домен Windows

Содержание

Введение

Зачастую возникает необходимость ввести Linux-машину в существующий домен Windows. Например, чтобы сделать файловый сервер с помощью Samba. Сделать это очень просто, для этого вам понадобятся клиент Kerberos, Samba и Winbind.

Перед установкой желательно обновиться:

Установить всё это добро можно командой:

Также может понадобиться установить следующие библиотеки:

Либо, если вы используете Ubuntu Desktop, те же пакеты можно поставить через менеджер пакетов Synaptic.

Далее вам потребуется настроить все вышеперечисленные инструменты для работы с вашим доменом. Допустим, вы хотите войти в домен DOMAIN.COM, доменконтроллером которого является сервер dc.domain.com с IP адресом 192.168.0.1. Этот же сервер является и первичным DNS сервером домена. Кроме того допустим у вас есть второй доменконтроллер 1) , он же DNS — dc2.domain.com с IP 192.168.0.2. Ваш же компьютер будет называться smbsrv01.

Настройка DNS

Для начала необходимо изменить настройки DNS на вашей машине, прописав в качестве DNS сервера доменконтроллер 2) и в качестве домена поиска — нужный домен.

Если у вас статический IP-адрес, то в Ubuntu Desktop это можно сделать через Network Manager, в Ubuntu Server необходимо изменить содержимое файла /etc/resolv.conf на примерно такое:

В современных дистрибутивах файл resolv.conf создается автоматически и править вручную его не нужно. Для получение нужного результата нужно добавить необходимые изменения в файл: /etc/resolvconf/resolv.conf.d/head Данные которые будут добавлены в него, будут автоматически вставлены в файл /etc/resolv.conf

Чтобы добавить еще один nameserver нужно убрать комментарий перед prepend domain-name-servers и указать ip сервера:

Для применения изменений остается перезапустить службу:

Теперь убедитесь, что вы задали нужное имя компьютера в файле /etc/hostname :

Кроме того необходимо отредактировать файл /etc/hosts так, чтобы в нём была запись с полным доменным именем компьютера и обязательно коротким именем хоста, ссылающаяся на один из внутренних IP:

Сразу нужно проверить что нормально пингуется наш контроллер домена, по короткому и полному имени, чтобы в будушем не получать ошибки что контроллер домена не найден:

Не обязательно, но если вы что-то поменяете — перезагрузите компьютер для применения изменений.

Настройка синхронизации времени

Далее необходимо настроить синхронизацию времени с доменконтроллером. Если разница будет более 5 минут мы не сможем получить лист от Kerberos. Для единовременной синхронизации можно воспользоваться командой:

Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:

Автоматическая же синхронизация настраивается с помощью ntpd , это демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:

Теперь исправьте файл /etc/ntp.conf , добавив в него информацию о вашем сервере времени:

После чего перезапустите демон ntpd :

Теперь пора настраивать непосредственно взаимодействие с доменом.

Настройка авторизации через Kerberos

Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл /etc/krb5.conf . В общем случае он выглядит так:

Вам, конечно, нужно изменить domain.com на ваш домен и dc и dc2 на ваши доменконтроллеры. Кстати, возможно вам понадобится написать полные имена доменконтроллеров dc.domain.com и dc2.domain.com . Поскольку у меня прописан домен поиска в DNS , то мне это делать не нужно.

Это не все возможные опции настройки Kerberos, только основные. Однако их обычно достаточно.

Теперь настало время проверить, что мы можем авторизоваться в домене. Для этого выполните команду

Вместо username естественно стоит вписать имя существующего пользователя домена.

Если вы не получили никаких ошибок — значит вы настроили всё верно и домен отдаёт вам билет Kerberos. Кстати, некоторые распространённые ошибки перечислены чуть ниже.

Убедиться в том, что билет получен, можно выполнив команду

Удалить все билеты (они вам вообще говоря не нужны) можно командой

Читайте также:  Docker desktop windows 10 14393

Итак, будем считать, что авторизацию вы настроили, пора настроить непосредственно вход в домен, об этом после списка распространённых ошибок kinit .

Распространённые ошибки kinit

Это значит, что у вашего компьютера не синхронизировано время с доменконтроллером (см. выше).

Вы ввели неверный пароль.

Самая странная ошибка. Убедитесь, что имя realm в krb5.conf , а так же домен в команде kinit введены большими буквами:

Указанного пользователя не существует в домене.

Настройка Samba и вход в домен

Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf . На данном этапе вас должны интересовать только некоторые опции из секции [global] . Ниже — пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:

После того, как вы отредактируете smb.conf выполните команду

Она проверит вашу конфигурацию на ошибки и выдаст суммарную сводку о нём:

Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду:

И в случае успеха вы увидите что-то похожее на:

Используемые параметры команды net

-U username%password : Обязательный параметр, вместо username необходимо подставить имя пользователя с правами администратора домена, и указать пароль.

-D DOMAIN : DOMAIN — собственно сам домен, домен можно и не указывать, но лучше всё же это всегда делать — хуже не будет.

-S win_domain_controller : win_domain_controller , можно не указывать, но бывают случаи когда автоматически сервер не находит контроллер домена.

createcomputer=«OU/OU/…» : В AD часто используется OU (Organizational Unit), есть в корне домена OU = Office, в нем OU = Cabinet, чтобы сразу добавить в нужный можно указать так: sudo net ads join -U username createcomputer=«Office/Cabinet».

Если больше никаких сообщений нет — значит всё хорошо. Попробуйте попинговать свой компьютер по имени с другого члена домена, чтобы убедиться, что в домене всё прописалось так, как надо.

Так же можно набрать команду:

Если все хорошо, можно увидеть:

Но иногда после сообщения о присоединении к домену выдаётся ошибка наподобие 3) :

Если всё прошло без ошибок, то поздравляем, вы успешно вошли в домен! Можете заглянуть в AD и убедиться в этом. Кроме того хорошо бы проверить, что вы можете видеть ресурсы в домене. Для этого установите smbclient :

Теперь можно просматривать ресурсы компьютеров домена. Но для этого нужно иметь билет kerberos, т.е. если мы их удалили, то получаем опять через kinit (см. выше). Посмотрим какие ресурсы предоставлены в сеть компьютером workstation :

Вы должны увидеть список общих ресурсов на этом компьютере.

Настройка Winbind

Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то вам понадобится кроме самой Samba ещё и Winbind — специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.

Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux систему, присвоив им ID из заданного диапазона. Таким образом вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.

Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf . Добавьте в секцию [global] следующие строки:

idmap uid = 10000 — 40000

idmap gid = 10000 — 40000

в новых версиях Samba уже устарели и при проверке конфига самбы с помощью testparm будет выдваться предупреждение:

WARNING: The «idmap uid» option is deprecated

WARNING: The «idmap gid» option is deprecated

Чтобы убрать предупреждения нужно заменить эти строки на новые:

idmap config * : range = 10000-20000

idmap config * : backend = tdb

Теперь перезапустите демон Winbind и Samba в следующем порядке:

Смотрим есть ли ошибки или предупреждения, если появится:

«rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»

Без перезагрузки можно устранить так:

Для сохранения после перезагрузки отредактировать файл /etc/security/limits.conf

Читайте также:  Printershare premium для windows

После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой:

А так же, что Winbind увидел пользователей и группы из AD командами 4) :

Эти две команды должны выдать список пользователей и групп из домена соответственно. Либо с префиксом DOMAIN\ , либо без него — в зависимости от того, какое значение вы указали параметру «winbind use default domain» в smb.conf .

Итак, Winbind работает, однако в систему он ещё не интегрирован.

Добавление Winbind в качестве источника пользователей и групп

Для того, чтобы ваша Ubuntu прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.

Для этого измените две строчки в файле /etc/nsswitch.conf :

добавив к ним в конец winbind :

также рекомендую привести строку files в файле /etc/nsswitch.conf к виду:

Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив

Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd , то есть ваших локальных пользователей, плюс пользователей домена с ID из заданного вами в smb.conf диапазона. Вторая должна сделать тоже самое для групп.

Теперь вы можете взять любого пользователя домена и сделать его, например, владельцем какого-нибудь файла.

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

Несмотря на то, что все пользователи домена фактически стали полноценными пользователями системы (в чём можно убедиться, выполнив последние две команды из предыдущего раздела), зайти ни под кем из них в систему всё ещё нельзя. Для включения возможности авторизации пользователей домена на компьютере с Ubuntu необходимо настроить PAM на работу с Winbind.

Он-лайн авторизация

Для Ubuntu 10.04 и выше добавьте всего одну строку в файле /etc/pam.d/common-session , т.к. PAM и так неплохо справляется с авторизацией:

Для Ubuntu 13.10 чтобы появилось поле ручного ввода логина необходимо в любой файл из папки /etc/lightdm/lightdm.conf/ снизу добавить строку:

Для Ubuntu 9.10 и ниже придется редактировать несколько файлов (но никто не запрещает использовать этот способ и в 10.04 — он тоже работает):

И, наконец, необходимо перенести запуск Winbind при загрузке системы после всех остальных служб (по умолчанию он запускается с индексом 20). Для этого в терминале выполните следующую команду:

Что эквивалентно запуску для каждого уровня (в примере — 4) команды:

Готово, все настройки завершены. Перезагружайтесь и пытайтесь войти с учетной записью пользователя домена.

Интеграция Ubuntu linux с доменом Windows (Часть первая)

1. Устанавливаем необходимые пакеты (smbd и winbind):

# aptitude install samba winbind

2. Так как современные версии SAMBA получают сведения о домене из DNS-записей необходимо удостовериться, что в качестве DNS-сервера указан DNS-сервер домена Active Directory.

3. Настраиваем конфигурационный файл (приведу действующий пример с комментариями)

[global]
# Рабочая группа (Короткое имя домена)
workgroup = SINTEZ
# Полное наименование домена
realm = sintez.sintez.com

# Описание рабочей станции в проводнике Windows
server string = %h workstation (Samba, Ubuntu)
# Разрешаем nmbd делать запросы к DNS
dns proxy = yes
# Параметры логирования
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
# Режим работы рабочей станции (член домена)
server role = member server
# Хранилище локальных пользователей и групп
passdb backend = tdbsam
# Использовать ли Linux pam (не используем)
obey pam restrictions = no
unix password sync = no
# Запросы с неправильным паролем будут отклонены, если такое имя пользователя существует.
map to guest = bad user
# Не позволяет не аутентифицированным пользователям получить доступ к общим ресурсам пользователей.
usershare allow guests = yes
# Смещение преобразования SID -> UID
idmap config *:backend = tdb
idmap config *:range = 10000-40000
# Использовать домен по умолчанию (для интеграции с учетными данными домена без указания имени домена)
winbind use default domain = yes
# Shell по умолчанию для доменных пользователей
template shell = /bin/bash

# Общие ресурсы принтеров
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

Читайте также:  При включении windows 10 зависает рабочий стол

4. Вводим компьютер в домен командой

# net ads join -U «chernousov@sintez.sintez.com»

5. Перезапускаем службы

# /etc/init.d/smbd restart
# /etc/init.d/nmbd restart
# /etc/init.d/winbind restart

6. Удостоверяемся, что разрешение имен и групп работает.

а. Пользователи домена:

б. Группы пользователей домена:

# wbinfo -g
SINTEZ\domain users
SINTEZ\domain computers
SINTEZ\domain guests
SINTEZ\group policy creator owners
SINTEZ\domain admins

В случае если вы указали параметр winbind use default domain = yes, то имена выводимые указанными выше командами будут без указания домена SINTEZ\, например:

в. Проверяем преобразование SID в UID

# wbinfo —name-to-sid=chernousov
S-1-5-21-1177238915-436374069-1343024091-5 713 SID_USER (1)

# wbinfo —sid-to-uid=S-1-5-21-1177238915-4363740 69-1343024091-5713
10002

Обратите внимание, что если вы не активировали в домене Службы Active Directory for UNIX, идентификаторы UID для одного доменного пользователя будут разными и выданными случайным образом в процессе выделения из пула idmap uid и idmap gid.

В случае использования интеграции AD и UNIX (RFC 2307) вам необходимо задать атрибуты UID и GID для всех пользователей и групп Active Directory, в противном случае следующий этап вызовет ошибку.

7. Настраиваем интеграцию локальных идентификаторов пользователей и групп пользователей с данными Active Directory.

Для этого обязательно установите пакет libnss-winbind конандой:

# apt-get install libnss-winbind

И в файл /etc/nsswitch.conf внесите следующие изменения:

passwd: compat winbind
group: compat winbind

Проверьте получение и преобразование о доменных пользователях в локальных пользователей Ubuntu командой id:

# id administrator
uid=10003(administrator) gid=10005(domain users) группы=10005(domain users),10007(группа с запрещением репликации паролей rodc),10009(schema admins),10010(enterprise admins),10008(domain admins),10011(group policy creator owners),10002(BUILTIN\users),10001(BUILT IN\administrators)

8. Настраиваем возможность авторизации доменных пользователей на рабочей станции. Для этого необходимо внести следующие изменения в конфигурационные PAM-файлы. Обратите внимание, что в процессе редактирования PAM-файлов лучше держать одну консоль root открытой, так как в случае ошибки вы не сможете больше авторизоваться и вам придется загружаться с Live ISO, так как вход в recovery-режим так же будет недоступен.

Установите пакет libpam-winbind:

# aptitude install libpam-winbind

Создайте символическую ссылку (в противном случае в pam-файлах придется указывать полный путь до библиотеки авторизации):

# mkdir /lib/security
# ln -s /lib/x86_64-linux-gnu/security/pam_winbi nd.so /lib/security/pam_winbind.so

И последовательно выполняем следующие действия:

а. Настраиваем автоматическое создание домашних каталогов пользователей при входе в систему. Для запуска графического конфигуратора выполните команду:

В гафичиском конфигураторе активируйте пункт «Создавать домашний каталог при входе в систему»

б. Вносим изменения в конфигурационные файлы (в ряде версий изменения производятся автоматически при установке пакета libpam-winbind):

account [success=1 new_authtok_reqd=done default=ignore] pam_winbind.so
(после pam_unix.so)

password [success=1 default=ignore] pam_winbind.so use_authtok try_first_pass
(после pam_unix.so)

в. Проведите тестовую авторизацию выполнив команду

Где admin это доменный пользователь. Обратите внимание, что возможны конфликты между локальными и доменными пользователями и приоритетными будут пароли доменных пользователей!

Выполните id для текущего пользователя и проверьте интеграцию доменных учетных данных и локальных (при условии, что существует одноименный локальный пользователь)

9. Настройка ограничений безопасности. В текущем режиме на рабочих станциях и серверах может авторизоваться любой доменный пользователь. Настроим ряд ограничений, а именно создадим доменную группу Unix users, члены данных группы смогут авторизоваться на рабочих станциях и серверах и административную группу Unix admins, которые смогут выполнять sudo.

Для реализации данной модели безопасности отредактируйте следующие файлы:

В случае отсутствия данного файла скопируйте его из каталога с примерами конфигурационных файлов:

# cp /usr/share/doc/libpam-winbind/examples/p am_winbind/pam_winbind.conf /etc/security/pam_winbind.conf

Определаем sid группы Unix users командой:

# wbinfo —name-to-sid=»Unix users»
S-1-5-21-1177238915-436374069-1343024091-5 725 SID_DOM_GROUP (2)

Изменяем параметр конфигурации разрешая авторизоваться только членам данной группы:

require_membership_of = S-1-5-21-1177238915-436374069-1343024091-5 725

Добавьте указанную ниже строку чтобы разрешить выполнять sudo пользователям членам группы Unix admins:

%unix\ admins ALL=(ALL:ALL) ALL

Обратите внимание на \, указывая\-пробел мы описываем доменную группу содержащую пробел в названии.

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

Оцените статью