====== Linux. Уровень 4. Замена корпоративных решений Microsoft ====== ===== Программа курса ===== * [[http://www.specialist.ru/course/yun3-b|Замена корпоративных решений Microsoft]] ===== Задача курса ===== * Дисклеймер, хотелось бы чтобы то, что мы с Вами сделаем, было просто интересным хаком, развлечением, разминкой для инженера, но возможно, что перед Вами эта задача уже возникла всерьез, поэтому, будем поэтапно, "на ходу" заменять в сети предприятия системы Microsoft начиная с Desktop и заканчивая Active Directiory на Open Source решения без потерь привычной функциональности * Курс посвящен изучению технологий Single sign-on SSO - единого входа, сквозной аутентификации пользователей и Workplace Innovation (WPI) - универсального рабочего места ===== Модуль 0. Подготовка стенда в классе ===== * Узнать свой номер стенда * Проверить наличие дистрибутивов и образов ===== Часть 1. Использование инфраструктуры Microsoft Active Directory ===== ===== Модуль 1. Развертывание сети предприятия с использованием MS AD ===== ==== Теория ==== !!! Рассказывать в паузах !!! * [[https://www.specialist.ru/course/yun2-b|Linux. Уровень 2. Администрирование сервисов и сетей]] * [[Сервис KERBEROS]] * [[Сервис DNS]] SRV записи ==== Лабораторные работы: Развертывание сети предприятия ==== === 1.1 Схема стенда, импорт, настройка и запуск VM gate и server === * Запускаем процесс импорта winserver2016, подключаем к NAT адаптеру и проводим [[Развертывание Active Directory]], по окончании, подключем к VirtualBox Host-Only Ethernet Adapter и настраиваем .10-й IP адрес Запустите с правами Administrator C:\cmder\Cmder.exe λ bash λ cd λ test -d conf && rm -r conf λ git clone http://val.bmstu.ru/unix/conf.git λ cd conf/virtualbox/ !!! 4 - это номер курса, вместо X укажите Ваш номер стенда, если не знаете его, спросите преподавателя !!! λ ./setup.sh X 4 === 1.2 Настройка сети VM gate === * Запустить gate * Преподавателю запустить импорт будущей системы lin client1 * Запустить импорт системы win client2 # sh net_gate.sh # init 6 * Создать в Putty профиль 192.168.X.1 gate и подключиться === 1.3 настройка сервиса DHCP === gate:~# apt update gate:~# sh conf/dhcp.sh === 1.4 Запуск и настройка системы lin client1 === !!! Делает преподаватель и выкладывает для всех (уточнив, что в ОО это надо сделать самостоятельно) !!! Из-за неготовности DNS подключить VM к сети класса, выяснить ip и, через ssh: * Настройка сети в Linux [[Настройка сети в Linux#Динамическая настройка параметров]] * [[Локализация окружения]] * [[Локализация системы#Локализация временной зоны]] * [[Инсталяция системы в конфигурации Desktop]] * Преподаватель экспортируем получившуюся VM (удалив адаптер) в образ "lin client1" в общий доступ !!! Копировать в переыв, иначе, DoS) * Запускаем импортируем и, по окончании, подключаем к LAN lin client1 gate# dhcp-lease-list === 1.5 Регистрируем доменных пользователей === * [[PowerShell#Добавление в домен пользователей]] (слушатели через командную строку, преподаватель через csv файл) === 1.6 Запуск, настройка и включение в домен системы windows client2 === * [[Развертывание Active Directory#Включение в домен Windows клиентов]] * Регистрируемся на client2 как user2 ==== Вопросы ==== ===== Модуль 2. Развертывание сервисов на Linux в инфраструктуре MS AD ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/GSS-API|GSS-API-Википедия]] ==== Лабораторные работы: Развертывание сервисов ==== === 2.1 Сервис HTTP Proxy с GSSAPI аутентификацией === * [[Финальная настройка DNS сервера#Настройки DNS клиентов]] * [[Настройка KDC серверов и клиентов#Настройка Kerberos клиента]] на gate (понадобится только для копирования ключей в системный keytab) * [[Установка, настройка и запуск пакета SQUID]] на gate * [[Развертывание Active Directory#Настройка DNS сервера]] - добавляем gate * Настраиваем [[Аутентификация доступа к SQUID#Kerberos GSSAPI аутентификация]] для squid на gate * [[Аутентификация доступа к SQUID#Копируем ключи в системный keytab]] * [[Аутентификация доступа к SQUID#Настройка сервиса SQUID на использование GSSAPI]] * Настройки proxy через [[Развертывание Active Directory#Использование групповых политик]] gate# tail -f /var/log/squid/access.log === 2.2 Ввод Linux систем в домен с использование Winbind === * Удаляем пользователей gate* из AD * Удаляем файлы с ключами на AD C:\>del *keytab * Удаляем ключи сервисов с gate gate# rm -v /root/*keytab /etc/krb5.keytab * Удалить запись gate из dns * [[Сервис WINBIND#Установка службы winbindd]] * [[Сервис WINBIND#Регистрация unix системы в домене в режиме ADS]] (система gate) * Проверяем наличие gate в DNS * [[Сервис WINBIND#Управление ключами KERBEROS в режиме ADS]] для сервисов HTTP * [[Аутентификация доступа к SQUID#Настройка сервиса SQUID на использование GSSAPI]] * Настройки proxy через [[Развертывание Active Directory#Использование групповых политик]] * Создаем группу group1 включаем в нее user1 * WINBIND [[Сервис WINBIND#Авторизация в режиме ADS/DOMAIN]] * [[Сервис WINBIND#Использование WINBIND в библиотеке NSSWITCH]] * Преподаватель демонстрирует [[Авторизация доступа к ресурсам через SQUID#Авторизация на основе членства в группе]] для squid на gate === 2.3 Файловый сервис CIFS для пользователей домена MS AD на Linux === * [[Файловый сервер SAMBA#Установка]] файлового сервера SAMBA * [[Файловый сервер SAMBA#Настройка samba сервера в режиме DOMAIN/ADS c WINBIND]] * [[Файловый сервер SAMBA#Автоматическое создание домашних каталогов]] === 2.4 Сервис электронной почты (SMTP/IMAP/LDAP/HTTP) === * Для пересылки почты в рамках одного сервера можно не настраивать MX записи * [[Сервис MTA#Установка и настройка MTA на обработку почты домена hostname]] на системе gate * [[Сервис MTA#Настройка MTA на обработку почты домена corpX.un]] * Установка [[UA mail]] на системе gate * [[Сервер dovecot#Установка]] imap сервера dovecot на gate * [[Сервер dovecot#Настройка с использованием стандартных mailboxes и аутентификации открытым текстом]] на сервере dovecot на gate * Web интерфейс к почте [[Web интерфейс к почте#roundcube]] gate# apt install ansible gate# ansible-playbook conf/ansible/roles/mail.yml * [[Сервис WINBIND#Управление ключами KERBEROS в режиме ADS]] для сервисов imap и smtp * [[Сервер dovecot#Kerberos GSSAPI аутентификация]] сервисов SMTP/IMAP на gate * [[Развертывание Active Directory#Использование групповых политик]] для установки ПО * [[Thunderbird#Авто конфигурация клиента]] Thunderbird * [[Авторизация с использованием LDAP сервера#Установка LDAP клиента]] и подключение к [[Авторизация с использованием LDAP сервера#Microsoft Active Directory]] по протоколу LDAP из командной строки * [[Thunderbird#Получение списка контактов через LDAP]] в Thunderbird (может понадобиться добавление email через оснастку AD) * GUI интерфейс к LDAP - [[https://val.bmstu.ru/unix/ldap/ApacheDirectoryStudio-2.0.0.v20150606-M9-win32.win32.x86_64.zip|Apache Directory Studio]] (требует [[https://val.bmstu.ru/unix/java/jre-8u211-windows-x64.exe|JRE]], раскрывать в VM из УЗ student, лучше через [[https://val.bmstu.ru/unix/7z920.msi|7zip]] в корень C:\ для лаб после AD), для подключения к LDAP использовать учетную запись Administrator [[Авторизация с использованием LDAP сервера#Microsoft Active Directory]] * [[Использование библиотеки PAM#Использование pam_krb5 для сервиса login/xdm]] для аутентификации через Web интерфейс к почте roundcube (делаем все, проверяем, подключаясь user1 к gate с host системы) * [[Использование библиотеки PAM#Автоматическое создание домашних каталогов]] * Настройка [[Web интерфейс к почте#Roundcube LDAP Addressbook]] (продемонстрировать jpegPhoto и проверить поиск) === 2.5 Сервис GitLab с авторизацией через LDAP === * Примеры LDAP запросов с gate ([[Авторизация с использованием LDAP сервера]]) * [[Инструмент GitLab]] * Использование [[Сервис HTTP#NGINX]] для перенаправления mail и autoconfig * [[Инструмент GitLab#Использование LDAP]] в GitLab === 2.6 Сервис мгновенных сообщений и статуса абонента (XMPP) === Обсудить и предложить вебинар: [[https://youtu.be/bH2lz8ubJFo|Интеграция Asterisk с системами IM и Presence в инфраструктуре Microsoft AD, часть 1]] * Выключение [[Инструмент GitLab#GitLab Prometheus]] (конфликт порта 9090) * [[Сервис OpenFire]] === 2.7 Сервис Keycloak === * Обсудить и предложить вебинар: [[Практические примеры Keycloak]] ([[https://youtu.be/ykWLHQ2i_8E|Практические примеры использования Keycloak в качестве корпоративного OpenID сервера]]) ==== Вопросы ==== ===== Модуль 3. Добавление рабочих станций Linux в инфраструктуру MS AD ===== ==== Теория ==== * [[https://youtu.be/S7QOkcznEVY|Зачем вводить системы Linux в домен Microsoft?]] * [[http://winehq.org.ru/SambaSSSDvsWinbind|SSSD vs Winbind]] ==== Лабораторные работы: Добавление рабочих станций Linux ==== === 3.0 Подготовка к следующему модулю === * [[Материалы по Windows#Развертывание средств администрирования Active Directory]] === 3.1 Использование библиотеки PAM === * Преподаватель импортирует client3 и демонстрирует по статье [[https://habr.com/ru/post/718632/|Самый простой способ ввести Linux в домен]] с использованием [[Использование библиотеки PAM#Использование pam_script]] (!!!cделать резервную копию каталога /etc/pam.d для возврата в исходное состояние для финальных работ) === 3.2 Использование SSSD/Realmd === * Использование [[Сервис sssd]] на системе client1 === 3.3 Управление рабочими станциями Linux ==== * [[Переменные окружения#Установка переменных окружения]] для подключения через proxy * Преподаватель демонстрирует [[https://habr.com/ru/articles/732736/|GPO для Linux из подручных материалов]] с использованием [[Сервис Ansible]] и [[Сервис Ansible#ansible-pull]] * [[Регистрация событий в Linux#Systemd journald]] === 3.4 Подключение рабочих станций Linux к файловому сервису CIFS === * [[Подключение к файловым серверам CIFS из UNIX#Установка ПО]], linux проводник thunar, Иконка на Рабочий стол ==== Вопросы ==== ===== Модуль 4. Миграция инфраструктуры MS AD на Samba4 ===== ==== Теория ==== * [[https://bigro.ru/system/145-second-kontroller-domen-server-2016|Второй контроллер домена - Windows Server 2016]] * [[https://dzen.ru/a/Y0LrkjKfFBoi30Pi|Миграция Active Directory с Windows Server 2022 на Ubuntu 22.04 + Samba 4.15.13]] * [[Контроллер домена SAMBA 4]] * [[https://youtu.be/Y4RzavhVwxY|Замена корпоративных решений Microsoft в процессе импортозамещения. Мастер-класс]] ==== Лабораторные работы: Развертывание сервисов ==== === 4.1 Развертывание системы linux server2 === * Клонируем server->server2 в VBox, генерируем новый mac и запускаем * Запускаем импорт win client4 (!!! генерируем новый mac) * Настраиваем подключение к сети # ifconfig eth0 inet 192.168.X.12/24 PuTTY # sh net_server.sh # hostnamectl set-hostname server2.corpX.un # cat /etc/hosts 127.0.0.1 localhost 192.168.X.12 server2.corpX.un server2 # cat /etc/network/interfaces ... address 192.168.X.12 ... # cat /etc/resolv.conf search corpX.un nameserver 192.168.X.10 # init 6 === 4.2 Настройка Samba 4 контроллером существующего домена === * [[Контроллер домена SAMBA 4#Установка Samba4 из пакетов]] * [[Контроллер домена SAMBA 4#Настройка контроллером существующего домена]] * [[Контроллер домена SAMBA 4#Настройка репликации]] * [[Авторизация с использованием LDAP сервера#Тестирование доступности каталога с клиентов]] на server2 === 4.3 Замена MS AD на Samba4 === == 4.3.1 Переносим FSMO на новый сервер == * [[Контроллер домена SAMBA 4#Переносим FSMO на новый сервер]] == 4.3.2 Настраиваем сервисы на новый сервер (вариант 1) == * DNS client и Squid (для тестов user4@client4 - пускать всех, кто прошел аутентификацию) gate# cat /etc/resolv.conf search corpX.un nameserver 192.168.X.12 gate# service squid restart * DHCP gate# cat /etc/dhcp/dhcpd.conf ... option domain-name-servers 192.168.X.12; ... gate# service isc-dhcp-server restart * Правим настройки [[Web интерфейс к почте#Roundcube LDAP Addressbook]] * Правим настройки [[Инструмент GitLab#Использование LDAP]] в GitLab * Правим настройки клиента DNS рабочей станции слушателя через [[netsh]] == 4.3.3 Настраиваем сервисы на новый сервер (вариант 2) == * Останавливаем server server2# cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.X.10 netmask 255.255.255.0 gateway 192.168.X.1 auto eth0:0 iface eth0:0 inet static address 192.168.X.12 netmask 255.255.255.255 server2# init 6 == 4.3.4 Удаляем сервер MS AD == * [[Контроллер домена SAMBA 4#Удаляем старый сервер]] Для варианта 2 server2# kinit Administrator server2# samba-tool dns add server2 corpX.un server A 192.168.X.10 === 4.4 Проверяем работу инфраструктуры === * Вводим в домен win client4, подключаемся user4 и проверяем работу GPO по proxy и наличию иконки Thunderbird * Настраиваем Thunderbird и [[Thunderbird|Получение списка контактов через LDAP]] (может понадобиться указать server2), проверяем на client1 * Добавляем через оснастки (на client2) атрибуты (телефон и email) пользователю user4 и включаем его в группу group1, проверяем CISF + [[Контроллер домена SAMBA 4#Управление доменом]] * Проверяем работу веб интерфейса к почте и адресную книгу в ней * Проверяем работу GitLab ==== Вопросы ==== ===== Часть 2. Замена проприетарных решений ===== ===== Модуль 5. Развертывание KDC ===== ==== Теория ==== * [[https://habr.com/ru/articles/732290/|Cамое простое решение для Kerberos сервера на замену Microsoft AD?]] ==== Лабораторные работы: ==== === 5.1 Отключаем системы от домена MS AD === * Сервис sssd [[Сервис sssd#Отключение от домена MS AD]] lin client1 * Отключение от домена MS AD win client2 и client4 * Сервис WINBIND [[Сервис WINBIND#Вывод unix системы из домена в режиме ADS]] (gate) + /etc/nsswitch.conf === 5.2 Добавляем в сеть linux сервер === # sh net_server.sh # init 6 === 5.3 Историческая ретроспектива === * [[Сервис NIS]] === 5.4 Разворачиваем DNS сервер и настраиваем системы на новый DNS === server:~# sh conf/dns.sh * Настройка клиента DNS # cat /etc/resolv.conf search corpX.un nameserver 192.168.X.10 * DNS client gate# cat /etc/resolv.conf search corpX.un nameserver 192.168.X.10 * DHCP gate# cat /etc/dhcp/dhcpd.conf ... option domain-name-servers 192.168.X.10; ... gate# service isc-dhcp-server restart * Правим настройки клиента DNS рабочей станции слушателя через [[netsh]] === 5.5 Развертывание KDC === * [[Финальная настройка DNS сервера#Настройка зоны corpX.un]] server# nslookup -q=SRV _kerberos._udp.corpX.un * [[Настройка KDC серверов и клиентов#Настройка KDC]] (на системе server) * [[Регистрация ключей принципалов в KDC#Регистрация принципалов пользователей в базе данных kerberos]] === 5.6 Регистрация рабочих станций в KDC === * lin client3 - уже все работает * [[Регистрация ключей принципалов в KDC#Регистрация рабочих станций windows в KDC]] и [[Материалы по Windows#Подключение к сфере KERBEROS]] win client2 === 5.7 Kerberos GSSAPI аутентификация === * [[Аутентификация доступа к SQUID#Kerberos GSSAPI аутентификация]] для squid на gate ==== Вопросы ==== ===== Модуль 6. Развертывание LDAP каталога ===== ==== Теория ==== ==== Лабораторные работы: ==== === 6.1 Установка и настройка OpenLDAP === * [[Установка и настройка OpenLDAP]] === 6.2 Хранение учетных записей UNIX в LDAP === * [[Хранение учетных записей UNIX в LDAP]] * [[Авторизация с использованием LDAP сервера#Тестирование доступности каталога с клиентов]] === 6.3 Авторизация с использованием LDAP сервера === * Удаляем [[Сервис sssd]] и включаем [[Использование библиотеки PAM#Использование pam_krb5 для сервиса login/xdm]] и [[Авторизация с использованием LDAP сервера#Установка библиотеки nss ldap]] на client1, подключаемся как user1 * [[Авторизация с использованием LDAP сервера#Установка библиотеки nss ldap]] на gate * Правим права) gate# chown user1 /var/mail/user1 chown -R user1:user1 /home/user1 chown user2 /var/mail/user2 chown -R user2:user2 /home/user2 chown user3 /var/mail/user3 chown -R user3:user3 /home/user3 * Настраиваем [[Сервис SSH#Аутентификация с использованием протокола GSSAPI]] для сервиса ssh на gate === 6.4 "Перемещаемый" профиль === * [[Сервис NFS]] * Сервер dovecot [[Сервер dovecot#Kerberos GSSAPI аутентификация]] === 6.5 Хранение дополнительной информации в LDAP === * [[Хранение учетных записей UNIX в LDAP#Пример назначения номеров телефонов и адресов email]] * Настройка доступа к адресной книге в [[Web интерфейс к почте#roundcube]] (может понадобиться исправить ФИО в неверной кодировке через Apache Directory Studio) === 6.6 Аутентификация с использованием LDAP сервера === * [[Хранение учетных записей UNIX в LDAP#Модификация информации в ldap каталоге]] (назначаем пароль, если не импортировали из /etc/passwd) * [[Инструмент GitLab#Использование LDAP]] в GitLab ==== Вопросы ==== - Что определяет порядок использования файлов /etc/hosts и /etc/resolv.conf для разрешения DNS имен? - Какие поля в учетной записи UNIX используются для аутентификации? - Какие поля в учетной записи UNIX используются для авторизации? - Для чего используется поле GECOS учетной записи пользователя UNIX? - Что такое NIS домен? - Что такое NIS карты? - Какая утилита используется для инициализации NIS карт? - Какая утилита используется для тестирования NIS? - Какие задачи решает библиотека NSS - Какой идентификатор источника данных в NSS позволяет подключить NIS через указание в файлах учетных записей системы строки, начинающейся с символа «+» - Какой командой можно посмотреть учетные записи из всех источников данных? - Какая подсистема (facility) библиотеки PAM позволяет временно запретить регистрацию пользователей? - Какая подсистема (facility) библиотеки PAM может быть использована для создания домашних каталогов пользователей? - По умолчанию, при первом подключении клиента к SSH серверу, он получает предупреждение о недостоверном ... - Клиент ssh использует ssh-agent для получения расшифрованного ... - Kerberos обеспечивает механизм ... - Что такое Kerberos realm (сфера)? - Какие объекты представляются учетными записями (Principal) в Kerberos? - Используется ли в протоколе Kerberos SSL или TLS? - Используются ли в протоколе Kerberos сертификаты? - Что хранится в TGT? - Какая команда может быть использована для получения TGT? - Разница в настройке времени между системами, взаимодействующими по протоколу Kerberos, не должна составлять более ... - В каком файле, по умолчанию, на стороне сервера хранятся учетные записи сервисов? - Для чего используется GSSAPI? - Какого типа сервиса должен быть добавлен в KDC для использование Kerberos с сервисом Squid? - Какой режим безопасности должен быть настроен в SAMBA для работы с собственной базой данных пользователей? - Какая утилита используется для управления учетными записями пользователей в файловом сервере SAMBA? - Какого типа сервис должен быть добавлен в KDC для регистрации рабочей станций Windows при использовании Kerberos сферы? - Где хранится пользовательский профиль при использовании Kerberos сферы для аутентификации пользователей рабочих станций Windows? - Какой режим безопасности должен быть настроен в пакете SAMBA для работы с базой данных пользователей в KDC? - В виде какой структуры представляются записи в LDAP? - Для чего используется формат LDIF? - Как в протоколе LDAP называется операция аутентификации? - Что такое DN и RDN в LDAP? - Сколько атрибутов класса (object class) может быть у записи? - Какой утилитой можно добавить учетную запись сервиса UNIX в Microsoft AD? - Какой утилитой можно вывести список сервисов, привязанных к учетной записи Microsoft AD? - Что нужно сделать для хранения в Microsoft AD атрибутов учетных записей UNIX? - Что нужно сделать для развертывания сервиса NFS на Microsoft Windows Server? - Для каких задач предназначен WINBIND? - Какая утилита позволяет проверить работу WINBIND? - Какой ключ утилиты samba-tool используется для расширения схемы для хранения UNIX атрибутов при инициализации контроллера домена Samba4? - Какая утилита используется для управления учетными записями пользователей в контроллере домена Samba4? - Что нужно установить на рабочую станцию Windows для управления контроллером домена Samba4? - Поддерживает ли контроллер домена Samba4 групповые политики? - Какой вариант системы централизованного управления учетными записями самый лучший? ===== Дополнительные материалы ===== $x = Read-Host -Prompt "Ваш X"; New-ADUser -Name "gatehttp" -SamAccountName "gatehttp" -AccountPassword(ConvertTo-SecureString -AsPlainText 'Pa$$w0rd' -Force) -Enabled $true -ChangePasswordAtLogon $false -CannotChangePassword $true -UserPrincipalName gatehttp@corp$X.un -DisplayName gatehttp -PasswordNeverExpires $true ==== Вебинар ==== * [[https://youtu.be/Y4RzavhVwxY|Замена корпоративных решений Microsoft в процессе импортозамещения. Мастер-класс]] Перед вебинаром: - Удалить образы - Восстановить образы - Возвращаем настройки клиента DNS рабочей станции слушателя через [[netsh]] - slmgr /rearm - Отключить wpad - В Squid пускать всех, кто прошел аутентификацию - В smb.conf доступ к общей папке для valid users = "@CORPX\domain users" - поправить настройку [[Сервис HTTP#NGINX]] в gitlab - поправить start.sh [[Сервис Ansible#ansible-pull]] В самом начале вебинара кратко обсудить и продемонстрировать, что у нас есть на этом этапе: - MS AD в локальной сети предприятия с базой учетных записей пользователей - Рабочие станции Windows - Групповые политики для Windows клиентов - запустить импорт windows client4 - Сервера Linux с сервисами HTTP Proxy, CIFS, SMTP, IMAP (все на gate, klist) - Адресная книга LDAP (с фото:) и web интерфейс к почте - Рабочие станции Linux (подключены к домену двумя способами, показать на client3) - запустить импорт linux client5 - GitLab с авторизацией через LDAP (используется как источник ansible-pull для управления рабочими станциями Linux) - Новый linux server2