Go to file
Долгий Артём cccaa7bc6d mod 2023-11-29 09:49:17 +03:00
ansible mod 2023-11-29 09:49:17 +03:00
img mod 2023-10-31 11:16:50 +03:00
02.txt mod 2023-11-01 09:29:09 +03:00
readme.md mod 2023-11-13 09:23:55 +03:00

readme.md

Выпускная квалификационная работа по курсу "Системное и сетевое администрирование ОС Альт"

Тема: Автоматизация развертывания служб каталога Active Directory


Описание стенда

В основе стенда используется узел с установленной системой Альт Сервер виртуализации 10.1, в качестве гипервизора - решение PVE.

Схема стенда

Рисунок 1 - Схема стенда

Для доступа к системе виртуализации и выполнения задач автоматизированной настройки и запуска скриптов используется узел с ОС Альт Рабочая станция 10.1 altcl (10.1.1.20).

Предварительная настройка

Для подготовки окружения будет использован Ansible, запускаться задания будут с узла altcl (10.1.1.20).

Для работы Ansible с гипервизором PVE, написан соответствующий модуль proxmox_kvm. В свою очередь, для работы модуля proxmox_kvm на узле виртуализации, необходимо установить пакеты requests и proxmoxer. В репозитории Альт это пакеты python3-module-proxmoxer, python3-module-requests.

Т. к. модуль proxmox_kvm разработан сообществом, на узле altcl (10.1.1.20) необходимо установить поддержку community модулей ansible командой

ansible-galaxy collection install community.general

Подготовка шаблона Альт Сервер

Шаблон будет подготовлен вручную — конвертирован из виртуальной машины, которая будет предварительно настроена.

Виртуальная машина имеет следующие характеристики:

  • ОЗУ: 2 Гб
  • ЦПУ: 2
  • Диск: 32 Гб
  • Диск CloudInit

остальные значения устанавливаются по-умолчанию. В качестве ОС используется Альт Сервер 10.1. При установке ОС используется профиль Минимальная установка с отмеченным пунктом NetworkManager, т. к. он необходим для работы CloudInit.

Рисунок 2 - Выбор компонентов ОС

Рисунок 2 - Выбор компонентов ОС

После установки операционной системы необходимо выполнить обновление и установку дополнительных компонентов:

  • обновление пакетов и ядра операционной системы
apt-get update && apt-get dist-upgrade -y && update-kernel -y
  • установка дополнительных необязательных пакетов
apt-get install -y qemu-guest-agent mc tmux htop tree
  • пакеты для работы CloudInit
apt-get install -y cloud-init cloud-init-config-etcnet
apt-get install -y cloud-utils-growpart cloud-utils
  • после установки пакетов CloudInit необходимо добавить соответствующие службы в автозагрузку
systemctl enable cloud-init-local
systemctl enable cloud-init
systemctl enable cloud-config
systemctl enable cloud-final

Виртуальная машина готова, её необходимо выключить и конвертировать в шаблон.

Подготовка шаблона Альт Рабочая станция и Альт Рабочая станция К

Как и шаблон для сервера, шаблоны виртуальных машин Рабочая станция и Рабочая станция К также подготовлены вручную — конвертированы из соответствующих, предварительно настроенных виртуальных машин.

Виртуальные машины имеют следующие характеристики:

  • ОЗУ: 2 Гб
  • ЦПУ: 2
  • Диск: 32 Гб
  • Диск CloudInit

остальные значения устанавливаются по-умолчанию. В качестве ОС используются Альт Рабочая станция 10.1 и Альт Рабочая станция К 10.1 соответственно. При установке операционной системы задаются значения, предлагаемые установщиком.

После установки операционной системы необходимо выполнить обновление и установку дополнительных компонентов:

  • включение SSH сервера, т.к. в Рабочей станции он отключен
systemctl enable --now sshd

Следующие шаги идентичны тем, которые выполнялись при настройке сервера:

  • обновление пакетов и ядра операционной системы
apt-get update && apt-get dist-upgrade -y && update-kernel -y
  • установка дополнительных необязательных пакетов
apt-get install -y qemu-guest-agent mc tmux htop tree
  • пакеты для работы CloudInit
apt-get install -y cloud-init cloud-init-config-etcnet
apt-get install -y cloud-utils-growpart cloud-utils
  • после установки пакетов CloudInit необходимо добавить соответствующие службы в автозагрузку
systemctl enable cloud-init-local
systemctl enable cloud-init
systemctl enable cloud-config
systemctl enable cloud-final

Виртуальные машины готовы, их необходимо выключить и конвертировать в шаблон.

вверх

Разворачивание группировки виртуальных машин

Для автоматизированного развёртывания виртуальных машин на гипервизор PVE используется ansible роль deploy_vms_role.yml.

Стоит обратить внимание, что при создании виртуальных машин из шаблонов, с помощью механизма CloudInit задаются уникальные IP адреса, имена хостов, а также пароль пользователя root. Кроме этого, также с помощью CloudInit в виртуальные машины копируется ssh ключ. Т.к. на этапе развёртывания CloudInit может взаимодействовать только с файловой системой гипервизора, ssh ключ, который копируется в виртуальные машины, необходимо заранее подготовить и сохранить в файловой системе гипервизора /root/.ssh/ с именем, указанным в переменной key_name

Процесс создания группировки виртуальных машин запускается из директории ansible с помощью команды:

ansible-playbook 01_deploy_vms_role.yml

В результате выполнения команды в гипервизоре PVE будут созданы 5 виртуальных машин в соответствии со схемой стенда:

  1. dc1 - Основной контроллер домена
  2. dc2 - Резервный контроллер
  3. nas - Файловый сервер
  4. ws - Клиент, Рабочая станция
  5. kws - Клиент, Рабочая станция К

Подготовка первого контроллера домена

Для развёртывания первого контроллера домена используется ansible роль - Разворачивание первого контроллера домена.

Запуск выполняется из директории ansible с помощью команды:

ansible-playbook 02_deploy_dc1_role.yml

В этой роли выполняются 2 задачи: развёртывание контроллера и проверка развёртывания.

Задача развёртывания контроллера разделена на подзадачи (таски):

  • Проверка соответствия ОС - таск выполнится при условии запуска на узле с ОС Альт, в противном случае будет выведено соответствующее сообщение и выполнение прервётся;
  • Проверка наличия развёрнутого домена на узле - если на узле уже развёрнут контроллер домена, выполнение прервётся;
  • Обновление системы - выполняется обновление системы до актуального состояния;
  • Назначение корректного имени узла - устанавливается имя узла в соответствии с указанным в переменной в файле mutable_vars.yml;
  • Установка пакетов - выполняется установка пакетов, необходимых для работы контроллера домена. Список пакетов указан в файле vars.yml;
  • Конфигурация NTP - режим работы NTP переключается в значение server;
  • Включение службы синхронизации времени chrony - включается и добавляется в автозагрузку служба chrony;
  • Отключение служб, которые будут конфликтовать с контроллером - для корректной работы samba необходимо отключить службы которые будут конфликтовать. Перечень этих служб указан в переменных в файле vars.yml;
  • Удалить старую конфигурацию Samba - удаляется старая конфигурация Samba, если таковая была;
  • Создать каталог для хранения групповых политик - создаётся каталог для хранения групповых политик;
  • Настройка резолвера на 127.0.0.1 - значение резолвера устанавливается локальный адрес;
  • Обновление конфигурации резолвера - выполняется обновление настроек резолвера;
  • Разворачивание первого контроллера домена - выполняется непосредственное разворачивание контроллера домена;
  • Включение службы samba - после развёртывания контроллера, запускается служба;
  • Копирование конфигурации Kerberos - копируется созданная при развёртывании конфигурация Kerberos.

После развёртывания запускается задача проверки корректности работы контроллера домена. Эта задача, в свою очередь, разеделена на подзадачи:

  • Проверка наличия развёрнутого домена на узле - если служба samba не работает на контроллере, выполнение задачи будет прервано;
  • Информация о домене - на экран выводится краткая информация о домене;
  • Получение настройки резолвера - выполняется проверка корректности настройки резолвера - указание на самого себя;
  • Записи служб DNS. Kerberos - выполняется проверка работы DNS, записи служб Kerberos;
  • Записи служб DNS. LDAP - выполняется проверка работы DNS, записи служб LDAP;
  • Записи служб DNS. A запись - выполняется проверка работы DNS, наличие основной записи (А) о контроллере;
  • Проверка возможности авторизации Kerberos - попытка авторизации на контроллере домена;
  • Текущие билеты Kerberos - вывод текущего билета Kerberos после авторизации.

вверх

Подготовка второго контроллера домена

Для подготовки второго контроллера домена используются:

  • ансибл плэйбук - Добавление DNS записи о втором контроллере на первый
  • ансибл роль - Разворачивание второго контроллера домена
  • ансибл плэйбук - Репликация между контроллерами

Добавление DNS записи о втором контроллере на первый

В этой задаче выполняются следующие действия:

  • Проверка соответствия ОС - задача будет выполнятся только на ОС семейства Альт;
  • Добавление DNS записи - на первом контроллере домена в DNS добавляется А запись о втором контроллере домена.

Запуск выполняется из директории ansible с помощью команды:

ansible-playbook 03_add_dns_record.yml

Разворачивание второго контроллера домена

В роли выполняются следующие задачи:

  • Развёртывание второго контроллера домена
  • Проверка корректности развёртывания второго контроллера домена.

В этих задачах выполняются аналогичные подзадачи тем, которые выполнялись при развёртывании первого контроллера домена, за исключением указания резолвера. На втором контроллере домена в качестве резолвера указывается адрес первого контроллера.

Запуск выполняется из директории ansible с помощью команды:

ansible-playbook 04_deploy_dc2_role.yml

Репликация между контроллерами

В задаче выполняются действия:

  • Проверка соответствия ОС - задача будет выполнятся только на ОС семейства Альт;
  • Проверка наличия развёрнутого домена - если домен не развёрнут, выполнение задачи будет прервано;
  • Репликация в направлении контроллер 2 -> контроллер 1 - выполняется репликация в соответствующем направлении;
  • Репликация в направлении контроллер 1 -> контроллер 2 - выполняется репликация в соответствующем направлении;

Запуск выполняется из директории ansible с помощью команды:

ansible-playbook 05_dc_replication.yml

вверх

Создание пользователей контроллера домена

Эта задача позволяет создавать или удалять пользователей в домене.

Пользователи, которых необходимо добавить либо удалить из домена указаны в файле переменных samba_users.yml.

По-умолчанию задача запускается с переменной samba_user_mode: create, что обеспечивает создание пользователей. Если же необходимо наоборот, удалить пользователей - задачу необходимо запускать со значением переменной samba_user_mode: delete

Запуск выполняется из директории ansible с помощью команды:

для создания пользователей

ansible-playbook 06_add_samba_users.yml

для удаления пользователей

ansible-playbook -e 'samba_user_mode=delete' 06_add_samba_users.yml

Добавление компьютеров в домен

Следующим этапом необходимо добавить компьютеры в домен. Для этой задачи создан плэйбук 07_add_samba_clients.yml

Плэёбук выполняет следующие действия:

  • Проверка того, что узел не является членом домена - если узел уже является членом домена, дальнейшее выполнение прерывается;
  • Обновление системы - происходит обновление системы до актуального состояния;
  • Назначение корректного имени хоста - устанавливается имя узла в соответствии с указанным в переменной в файле mutable_vars.yml;
  • Настройка резолвера на контроллеры домена - чтобы вводимый узел мог найти доменные службы и подключиться к ним;
  • Обновление конфигурации резолвера - для применения изменений настроек резолвера;
  • Установка клиентского пакета Samba;
  • Ввод в домен;
  • Проверка ввода в домен;
  • Перезагрузка узла после добавления в домен

Запуск выполняется из директории ansible с помощью команды:

ansible-playbook 07_add_samba_clients.yml

вверх

Разворачивание файлового сервера

В этой роли выполняются задачи: Подготовка узла для развёртывания файлового сервера, Настройка файлового сервера Samba

Подготовка узла для развёртывания файлового сервера:

  • Проверка соответствия ОС - таск выполнится при условии запуска на узле с ОС Альт, в противном случае будет выведено соответствующее сообщение и выполнение прервётся;
  • Проверка наличия развёрнутого домена на узле - если на узле уже развёрнут контроллер домена, выполнение прервётся;
  • Обновление системы - выполняется обновление системы до актуального состояния;
  • Назначение корректного имени хоста - устанавливается имя узла в соответствии с указанным в переменной в файле mutable_vars.yml;
  • Настройка резолвера на контроллеры домена - чтобы вводимый узел мог найти доменные службы и подключиться к ним;
  • Обновление конфигурации резолвера - для применения изменений настроек резолвера;
  • Установка клиентского пакета Samba
  • Ввод в домен
  • Проверка ввода в домен
  • Перезагрузка узла после добавления в домен

Настройка файлового сервера Samba:

  • Установка пакета Samba;
  • Создание разделяемого ресурса Samba - создание директории и назначение её доменной группе;
  • Добавление в конфигурацию Samba данных о разделяемом ресурсе;
  • Включение служб файлового сервера Samba

Запуск выполняется из директории ansible с помощью команды:

ansible-playbook 08_deploy_nas_role.yml

вверх

Проверка работы домена

Выполним несколько проверок работоспособности доменной инфраструктуры и отказоустойчивости

Возможность авторизации доменным пользователем на рабочих станциях

Выполним авторизацию на узле ws.alt.lan - клиентский компьютер с установленной ОС Альт Рабочая станция. В качестве пользователя используем доменную учётную запись, которая была создана ранее - ivanov. Пароль от учётной записи указан в файле group_vars/samba_users.yml - P@ssw0rd

авторизация на ws

Рисунок 3 - Авторизация доменной учётной записью на ws.alt.lan

Авторизация прошла успешно, вывод команды id подтверждает факт авторизации в домене.

Аналогично выполним вход на узле kws.alt.lan - Альт Рабочая станция К. Пользователь - petrov - P@ssw0rd

авторизация на kws

Рисунок 4 - Авторизация доменной учётной записью на kws.alt.lan

Авторизация также прошла успешно.

Проверка работы DNS и расположения служб домена

На узле ws.alt.lan разрешим некоторые доменные имена:

cat /etc/resolv.conf

host dc1.alt.lan

host dc2.alt.lan

host nas.alt.lan

DNS

Рисунок 5 - Результат проверки DNS

Проверим расположение служб в домене

host -t SRV _kerberos._udp.alt.lan

host -t SRV _ldap._tcp.alt.lan

domain_services

Рисунок 6 - Результат проверки расположения служб домена в DNS

вверх

Проверка работы файлового сервера

Переменные для настройки файлового сервера указаны в файле group_vars/nas/nas_vars.yml. Разделяемый ресурс на сервере располагается по адресу - /share/sambashare

Проверка выполняется на узле ws.alt.lan

smbclient -L nas.alt.lan

smb_share

Рисунок 7 - Доступность разделяемого ресурса

Видим, что разделяемый ресурс sambashare отображается среди доступных пользователю.

С помощью файлового менеджера Caja перейдём по пути smb://nas.alt.lan/sambashare и создадим текстовый документ ivanov.txt.

smb_share2

Рисунок 8 - Возможность записи на разделяемый ресурс

Переключимся на файловый сервер и убедимся в том, что мы создали файл на нём, а не локально на рабочей станции.

nas

Рисунок 9 - Созданный документ на файловом сервере

Переключимся на локального пользователя sysadmin - P@ssw0rd и проверим доступность сетевых ресурсов

smbclient -L nas.alt.lan

smb_share3

Рисунок 10 - Отсутствие доступа к ресурсу локальной учётной записи

Разделяемая директория видна среди доступных, однако доступа к ней нет, т.к. используется локальная учётная запись.

вверх

Проверка отказоустойчивости домена

Для проверки отказоустойчивости выключим контроллер домена dc1.alt.lan и выполним переавторизацию доменной учётной записью ivanov - P@ssw0rd на узле ws.alt.lan.

fault_tolerance

Рисунок 11 - Проверка отказоустойчивости домена

Как видим icmp пакеты проходят только ко второму контроллеру dc2.alt.lan, но это не помешало успешно авторизоваться доменной учётной записью на рабочей станции.

вверх

Заключение

В работе рассмотрен процесс развёртывания службы каталогов построенной на решении Samba. Применение службы каталогов позволяет существенно упростить процесс администрирования информационной инфраструктуры предприятия в части управления пользователями и компьютерами. Возможность развёртывания нескольких контроллеров домена позволяет повысить надежность системы и обеспечить непрерывную полноценную работу при условии работоспособности хотя бы одного контроллера домена.

Использование файлового сервера с возможностью доменной авторизации позволяет гибко настроить права и ограничения по использованию резделяемых сетевых ресурсов, что в свою очередь, позволяет повысить эффективность работы.

За счёт поддержки компьютеров с операционными системами Microsoft Windows и Альт, использование решения Samba для реализации службы каталогов позволяет произвести плавный переход на российские решения без существенных изменений в инфраструктурных службах предприятия.

вверх

Перечень используемых источников информации

вверх