====== 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