2023-10-31 13:10:30 +03:00
mod
2023-10-31 09:43:43 +03:00
mod
2023-10-31 11:16:50 +03:00
mod
2023-10-09 08:12:24 +03:00
mod
2023-10-09 08:12:24 +03:00
mod
2023-10-31 13:10:30 +03:00

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

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

Разворачивается следующая конфигурация:

  • Основной контроллер домена (Альт Сервер)
  • Резервный контроллер домена (Альт Сервер)
  • Файловый сервер (Альт Сервер) в составе домена (службы NFS и SMB)
  • Клиентский узел 1 (Альт Рабочая станция)
  • Клиентский узел 2 (Альт Рабочая станция К).

Тестируются: определение расположения служб домена, создание доменного пользователя, получение билета средствами Kerberos, доступность NFS и SMB- служб сервера при kerberos-аутентификации, успешное проведение репликации между контроллерами. Графический вход доменных пользователей на клиентские узлы. Эмулируется сбой одного из контроллеров, проверяется работоспособность окружения с оставшимся контроллером. Возможно успешность применения групповых политик (включение/выключение определенной службы, убедиться что служба выключилась)


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

В основе стенда используется узел с установленной системой Альт Сервер виртуализации 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, но это не помешало успешно авторизоваться доменной учётной записью на рабочей станции.

вверх

Выводы

вверх

Description
No description provided
Readme 3.5 MiB
Languages
Text 100%