====== Зачем вводить системы Linux в домен Microsoft ======
===== Анонс вебинара =====
* [[https://www.specialist.ru/news/5510/besplatnij-seminar-zachem-vvoditj-sistemi-linux-v-domen-microsoft|Бесплатный семинар «Зачем вводить системы Linux в домен Microsoft?»]]
===== Запись вебинара =====
* [[https://youtu.be/S7QOkcznEVY|Зачем вводить системы Linux в домен Microsoft?]]
===== Реклама вебинара =====
* В интернете множество статей, описывающих добавление в домен Microsoft систем Linux. Очень часто там отсутствует ответ на главный вопрос - зачем это делать? Давайте разберемся и всегда ли это необходимо, и как вообще решать задачи Single Sign-On (SSO) и workplace innovation (WPI) при использовании домена Microsoft и рабочих станций и сервисов Linux
* Спойлер: нужна не всегда ([[https://youtu.be/yZfoBTlqFCQ|Видео: Авторизация доступа пользователей домена Active Directory в Internet с использованием proxy сервера]]) но в этот раз идея навеяна [[https://youtu.be/rLrYjBinrLE|Видео: MIT KDC for Windows Clients]]!
===== Техническое задание =====
* На предприятии используется Microsoft Active Directory. Сотрудники должны иметь возможность с любой рабочей станции linux работать в личном окружении (рабочий стол, документы, настройки) а так же, с общими с корпоративными файлами совместно с пользователями систем Windows.
===== Шаг 1. Исходное состояние стенда =====
==== Система windows server ====
* [[Развертывание Active Directory]]
* Учетная запись user1 в group1
* В домене только windows система client2
* В DNS нет linux систем
==== Система linux gate ====
* Шлюз в Интернет
* DHCP
==== Рабочие станции ====
=== windows ===
* client2 введена в домен Active Directory
=== linux ===
* client1 и clietn3
* [[Настройка сети в Linux#Динамическая настройка параметров]] сети
* [[Инсталяция системы в конфигурации Desktop]]
gate# dhcp-lease-list
===== Шаг 2. Файловый сервис на linux =====
* [[Настройка KDC серверов и клиентов#Настройка Kerberos клиента]]
* [[Сервис WINBIND]]
* [[Файловый сервер SAMBA]] тестируем с Windows клиента подключаясь как user1
* Создаем файлы и каталоги в личном и общем сетевом ресурсе
* Отлогиниваемся
===== Шаг 3. Рабочие станции на linux =====
==== 3.1 Использование kerberos для работы с Microsoft AD ====
* [[Настройка KDC серверов и клиентов#Настройка Kerberos клиента]]
==== 3.2 Работа с файловыми ресурсами Microsoft из linux ====
* [[Подключение к файловым серверам CIFS из UNIX]] с использованием [[Подключение к файловым серверам CIFS из UNIX#GSSAPI аутентификация]]
==== 3.3 Аутентификация пользователей в linux через Microsoft Active Directory ====
* [[Управление учетными записями в Linux#Добавление учетной записи]]
* [[Использование библиотеки PAM#Использование pam_krb5 для сервиса login/xdm]]
* Подключаемся как user1 в консоли vbox, проверяем наличие TGT, отключаемся
==== 3.4 Автоматическое создание учетных записей после аутентификации через Microsoft Active Directory ====
* [[Управление учетными записями в Linux#Удаление учетной записи]] user1
* [[Использование библиотеки PAM#Использование pam_script]] для автоматического создания учетных записей
* Подключаемся как userN в консоли vbox, проверяем наличие TGT
==== 3.5 Монтирование домашнего каталога ручном режиме ====
user1$ klist
user1$ cd /
# klist
# cp -v /tmp/krb5cc_`id -u user1`_* /tmp/krb5cc_0
# klist
# mount.cifs //gate.corp13.un/user1 -o rw,user,sec=krb5,vers=3.1.1,uid=`id -u user1`,gid=`id -g user1` /home/user1/
# ls -l /home/user1
* Отключаемся в консоли vbox
# rm /tmp/krb5cc_0
# umount /home/user1/
==== 3.6 Автоматическое монтирование домашнего каталога ====
* [[Использование библиотеки PAM#Использование pam_script]] для автоматического монтирования домашнего каталога по протоколу CIFS с GSSAPI/Kerberos аутентификацией
* Подключаемся как user1 в консоли vbox, проверяем наличие файлов, созданных из windows в домашнем каталоге и отлогиниваемся
# umount /home/user1/
==== 3.7 Подключение общего файлового ресурса компании пользователями linux ====
* Обсуждаем описание точек монтирования в файле /etc/fstab для протокола cifs и [[Подключение к файловым серверам CIFS из UNIX#GSSAPI аутентификация]]
* [[Управление учетными записями в Linux#Удаление учетной записи]] user1
# cat /usr/share/libpam-script/pam_script_auth
#!/bin/bash
if ! id $PAM_USER &>/dev/null; then
useradd -m -s /bin/bash $PAM_USER
echo //gate.corp13.un/corp_share /home/$PAM_USER/Public cifs rw,user,sec=krb5,noauto,vers=3.1.1 0 0 >> /etc/fstab
fi
* Создаем в Active Directory учетную запись user2, включаем в group1 и подключаемся ей через linux GUI
===== Шаг 4. Клонируем конфигурацию рабочей станции =====
* Задание - использовать [[Сервис Ansible]]
gate# dhcp-lease-list
gate# client1=192.168.13.101
gate# clientN=192.168.13.102
gate# ssh $clientN
clientN# DEBIAN_FRONTEND=noninteractive apt -y install krb5-user cifs-utils nfs-common libpam-krb5 libpam-script
gate# scp -3 $client1:/etc/krb5.conf $clientN:/etc/
gate# scp -3 $client1:/etc/pam.d/common-auth $clientN:/etc/pam.d/
gate# scp -3 $client1:/usr/share/libpam-script/pam_script_auth $clientN:/usr/share/libpam-script/
gate# scp -3 $client1:/usr/share/libpam-script/pam_script_ses_open $clientN:/usr/share/libpam-script/
===== Исправления и альтернативные варианты =====
==== 0. Wrong path for pam_script.so ====
* [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=983183|Debian Bug report logs - #983183 libpam-script: Wrong path for pam_script.so]]
==== 1. Создание несуществующих в AD учетных записей ====
* [[Использование библиотеки PAM]]
В вебинаре создание учетной записи происходит до проверки ее подлинности, поэтому лучше расположить модули так:
# cat /etc/pam.d/common-auth
...
auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000
auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
auth requisite pam_deny.so
auth sufficient pam_script.so
auth required pam_permit.so
...
==== 2. Через 10 часов сессия монтирования домашнего каталога устаревает ====
Вариант решения - не удалять в скрипте /tmp/krb5cc_0 и обновлять TGT через cron
client1:~# crontab -l
0 */8 * * * kinit -R >/dev/null 2>&1
Усиливается проблема (уже была) параллельного подключения нескольких пользователей к рабочей станции
==== 3. Желательно удалять возможные записи для пользователя в /etc/fstab перед его созданием в скрипте ====
Особенно, если для отладки пользователи постоянно создаются/удаляются
...
sed -i.bak -e "/\/home\/$PAM_USER/d" /etc/fstab
...
==== 4. Можно поручить монтирование домашних каталогов systemd ====
# cat /usr/share/libpam-script/pam_script_auth
#!/bin/bash
if ! id $PAM_USER &>/dev/null; then
useradd -m -s /bin/bash $PAM_USER
sed -i.bak -e "/\/home\/$PAM_USER/d" /etc/fstab
echo //gate.corp13.un/$PAM_USER /home/$PAM_USER cifs rw,user,sec=krb5,noauto,vers=3.1.1,uid=`id -u $PAM_USER`,gid=`id -g $PAM_USER` 0 0 >> /etc/fstab
echo //gate.corp13.un/corp_share /home/$PAM_USER/Public cifs rw,user,sec=krb5,noauto,vers=3.1.1 0 0 >> /etc/fstab
systemctl daemon-reload
fi
# cat /usr/share/libpam-script/pam_script_ses_open
#!/bin/sh
cp /tmp/krb5cc_`id -u $PAM_USER`* /tmp/krb5cc_0