====== Зачем вводить системы 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