- Ввод в Active Directory Ubuntu 20 с Winbind
- Исходные данные
- Ввод в Active Directory Ubuntu 20 с winbind
- Подготовка
- Настраиваем ntp клиент
- Ввод в Active Directory Ubuntu 20 – Настройка kerberos
- Active Directory Ubuntu 20 – Настройка SAMBA
- Active Directory Ubuntu 20 – Донастройка
- Linux машина в домене Windows AD с помощью sssd и krb5
Ввод в Active Directory Ubuntu 20 с Winbind
Ввод в Active Directory Ubuntu 20 – ключевая веха в процессе легализации вашей IT инфраструктуры. Всё это время я писал о всевозможных настройках бэкенда, который пользователям недоступен. Оно конечно не критично когда у вас весь фронтенд работает на масдае. Но шо таки делать если мы так не бохаты? Если масдай во фронте для нас дораха? Таки есть достойное решение. Достойное в достаточной мере. Вы конечно же не обойдётесь без масдая если вам нужен какой-то полноценный CADовский софт (веб версия подписки автокада уже очень даже юзабельна).
Но если ваш набор софта – не включает в себя тяжелейшие и незаменимые программные комплексы стоимость которых насчитывает много нулей, на фоне которых стоимость винды просто теряется – абсолютно бесплатная линуксовая реализация для вас! В конце данной статьи у вас будет введённая в домен Ubuntu 20, позволяющая любому пользователю домена авторизоваться и работать на ней как обычный пользователь. Данная статья основывается на подключении к контроллеру домена поднятому по моим выпущенным ранее статьям, работать должно с любой реализацией AD (но я конечно же не тестировал).
Нууу и собственно так как написание статей с большим объёмом матчасти – в буквальном смысле высасывает душу и отнимает десятки часов свободного времени с нулевым выходом лайков, репостов, начитки за неделю и всего всего что могло бы приблизить меня к монетизации, данная статья будет выпущена в виде краткого howto. Если окажется популярной и наберёт хотя бы 2 сотни лайков, выпущу продолжение с матчастью.
Исходные данные
- Ubuntu 20 Desktop clear install
- Контроллер домена с IP 192.168.1.100 и именем ag-dc-1
- Домен adminguide.lan
- Имя хоста est-makina-20, IP 192.168.1.45
Ввод в Active Directory Ubuntu 20 с winbind
Я конечно же как обычно описываю сферического коня в вакууме. Потому мы вводим в домен Ubuntu 20 которая только только установлена.
Подготовка
Для начала необходимо обновить систему
Следующим шагом мы устанавливаем все необходимые пакеты:
Не важно что вы укажете когда установщик спросит область kerberos, файл krb5.conf будет подменён.
После того как установка закончится, блокируем перезапись NetwotkManager’ом файла resolv.conf
И в раздел main добавляем новую строку
И настраиваем файл следующим образом:
Перенастраиваем файл hosts
И заменяем строку начинающуюся со 127.0.1.1 на
Здесь мы сталкиваемся с проблемой связанной с тем что в файле hosts должен быть алиас ip адреса и имени хоста. Так что мы теряем мобильность хоста и необходимо на DHCP сервере прописать статическую аренду для этого хоста.
Настраиваем ntp клиент
Открываем на редактирование файл конфигурации
И указываем ntp клиенту сервер времени нашего контроллера домена:
После чего перезапускаем ntp демона
После чего нам необходимо настроить Kerberos изменив файл /etc/krb5.conf
Ввод в Active Directory Ubuntu 20 – Настройка kerberos
Переименовываем существующий файл krb5.conf
И на его месте создаём новый файл, сохранив в нём следующие настройки:
Active Directory Ubuntu 20 – Настройка SAMBA
Теперь настраиваем SAMBA, сперва переименовав файл smb.conf и создав на его месте новый.
Вставляем туда следующее содержимое:
Создаём файл /etc/samba/user.map
Редактируем файл limits.conf
Редактируем файл nsswitch.conf
Строки group и passwd приводим к следующему виду:
в конец добавляем следующую строку:
И записываем в него следующее содержимое:
Вводим пароль администратора домена когда запросит
Active Directory Ubuntu 20 – Донастройка
Далее останавливаем и блокируем samba-ad-dc чтобы нидайбох чего не случилось.
Включаем необходимых демонов:
Наслаждаемся. Если что-то не работает пишите в комментариях, разберёмся
Незабываем ставить лайки, репосты, подписываться и писать в комментариях о своих достижениях или неудачах.
Linux машина в домене Windows AD с помощью sssd и krb5
Была необходимость ввести в домен Windows машину с Ubuntu. Для этих целей обычно используют Samba и Winbind. Но возможен альтернативный вариант с sssd, краткое руководство по нему ниже.
Для примера будем использовать:
Домен = contoso.com
Контроллер домена = dc.contoso.com
Запускаем терминал Ubuntu:
2. Устанавливаем необходимые пакеты
apt install sssd heimdal-clients msktutil
3. Редактируем /etc/krb5.conf, в качестве отступов используется табуляция
[libdefaults] default_realm = CONTOSO.COM [realms] CONTOSO.COM = < kdc = DC admin_server = dc.contoso.com default_domain = contoso.com >[login] krb4_convert = true krb4_get_tickets = false [domain_realm] .contoso.com = CONTOSO.COM contoso.com = CONTOSO.COM
4. Редактируем файл /etc/hosts, указываем FQDN для данного хоста:
127.0.0.1 localhost 127.0.1.1 .contoso.com
5. Пробуем получить Kerberos ticket от имени администратора домена:
root@ubuntu:~# kinit YourDomainAdmin YourDomainAdmin@CONTOSO.COM's Password:
root@ubuntu:~# klist Credentials cache: FILE:/tmp/krb5cc_0 Principal: YourDomainAdmin@CONTOSO.COM Issued Expires Principal Dec 1 15:08:27 2018 Dec 2 01:08:22 2018 krbtgt/CONTOSO.COM@CONTOSO.COM
Если тикет получен успешно, то теперь можно сгенерировать Kerberos principals для данного хоста, регистр важен:
msktutil -c -b 'CN=YourComputersOU' -s HOST/HOSTNAME.contoso.com -k /etc/sssd/HOSTNAME.keytab --computer-name HOSTNAME --upn HOSTNAME$ --server dc.contoso.com —user-creds-only msktutil -c -b 'CN=YourComputersOU' -s HOST/HOSTNAME -k /etc/sssd/HOSTNAME.keytab --computer-name HOSTNAME --upn HOSTNAME$ --server dc.contoso.com --user-creds-only
Сейчас наш хост должен отобразиться в списке компьютеров в каталоге. Если все так — удаляем полученный Kerberos ticket:
6. Создаем файл /etc/sssd/sssd.conf со следующим содержимым:
[sssd] services = nss, pam config_file_version = 2 domains = contoso.com [nss] entry_negative_timeout = 0 debug_level = 3 [pam] debug_level = 3 [domain/contoso.com] debug_level = 3 ad_domain = contoso.com ad_server = dc.contoso.com enumerate = false id_provider = ad auth_provider = ad chpass_provider = ad access_provider = simple simple_allow_groups = users #каким группам разрешено логиниться, через запятую. Есть ограничение — названия групп должны быть с маленькой буквы. ldap_schema = ad ldap_id_mapping = true fallback_homedir = /home/%u default_shell = /bin/bash ldap_sasl_mech = gssapi ldap_sasl_authid = $ ldap_krb5_init_creds = true krb5_keytab = /etc/sssd/.keytab
Описание параметров конфигфайла sssd можно посмотреть тут
Устанавливаем права доступа для файла sssd.conf:
chmod 600 /etc/sssd/sssd.conf
Перезапускаем SSSD service
7. Редактируем настройки PAM
редактируем файл /etc/pam.d/common-session, после строки
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel umask=0022
переопределить параметры через системные настройки PAM, вызываем
и отмечаем пункты sss auth и makehomdir. Это автоматически добавит
строчку выше в common-session и она не будет перезатерта при обновлении системы.
Теперь мы можем логиниться на машине доменными пользователями, которым разрешен вход.
P.S.: Можно дать права на использование sudo доменным группам. Используя visudo, редактируем файл /etc/sudoers, или лучше, как рекомендует maxzhurkin и iluvar, создаем новый файл в /etc/sudoers.d/ и редактируем его
visudo -f /etc/sudoers.d/ваш_файл
добавляем требуемую группу — например, Domain Admins (если в названии группы есть пробелы — их необходимо экранировать):
P.S.S.: Спасибо gotch за информацию о realmd. Очень удобно — если не нужны специфические настройки, то ввод машины в домен занимает, по сути, три (как заметил osipov_dv четыре) команды:
1. Устанавливаем нужные пакеты:
sudo apt install realmd samba-common-bin samba-libs sssd-tools krb5-user adcli
127.0.0.1 localhost 127.0.1.1 .contoso.com
realm discover contoso.com
sudo realm --verbose join contoso.com -U YourDomainAdmin --install=/
Дополнительный плюс данного варианта — сквозная авторизация на файловых ресурсах домена.
Для того чтоб при входе не указывать дополнительно к логину домен, можно добавить суффикс по умолчанию. В файле /etc/sssd/sssd.conf, в блоке [sssd] добавляем строку:
default_domain_suffix = contoso.com