Необходимо разработать и настроить инфраструктуру информационно коммуникационной системы согласно предложенной топологии (см. Рисунок 1). Задание включает базовую настройку устройств:
В ходе проектирования и настройки сетевой инфраструктуры следует вести отчет о своих действиях, включая таблицы и схемы, предусмотренные в задании. Итоговый отчет должен содержать одну таблицу и пять отчетов о ходе работы. Итоговый отчет по окончании работы следует сохранить на диске рабочего места
- Создайте 5 пользователей для офиса HQ: имена пользователей формата user№.hq. Создайте группу hq, введите в эту группу созданных пользователей
- Введите в домен машину HQ-CLI
- Пользователи группы hq имеют право аутентифицироваться на клиентском ПК
- Пользователи группы hq должны иметь возможность повышать привилегии для выполнения ограниченного набора команд: cat, grep, id. Запускать другие команды с повышенными привилегиями пользователи группы не имеют права
- Выполните импорт пользователей из файла users.csv. Файл будет располагаться на виртуальной машине BR-SRV в папке /opt
Организуем отслеживание подключения к домену: CLI: На клиенте с граф. интерфейсом установим Модуль удаленного управления базой данных конфигурации (ADMC) • Установим пакет admc:
Для использования ADMC необходимо предварительно получить ключ Kerberos для администратора домена. Получить ключ Kerberos можно, например, выполнив следующую команду, из под обычного пользователя:
Пользователи группы hq должны иметь возможность повышать привилегии для выполнения ограниченного набора команд: cat, grep, id. Запускать другие команды с повышенными привилегиями пользователи группы не имеют права
<p align="center"><b>*CLI*</b></p>
Настройте файл /etc/sudoers на рабочей станции Linux, как описано в предыдущем ответе, используя синтаксис для доменных групп:
<p align="center"><b>(СДЕЛАТЬ SNAPSHOT на HQ-SRV)</b></p>
- При помощи трёх дополнительных дисков, размером 1Гб каждый, на HQ-SRV сконфигурируйте дисковый массив уровня 5
- Имя устройства – md0, конфигурация массива размещается в файле /etc/mdadm.conf
- Обеспечьте автоматическое монтирование в папку /raid5
- Создайте раздел, отформатируйте раздел, в качестве файловой системы используйте ext4
- Настройте сервер сетевой файловой системы(nfs), в качестве папки общего доступа выберите /raid5/nfs, доступ для чтения и записи для всей сети в сторону HQ-CLI
-На HQ-CLI настройте автомонтирование в папку /mnt/nfs
- Основные параметры сервера отметьте в отчёте
Подготовка дисков
<p align="center"><b>*HQ-SRV*</b></p>
Убедитесь, что дополнительные диски распознаны системой. Список подключенных дисков можно проверить командой:
> - server 127.0.0.1 iburst prefer - указываем сервером синхронизации самого себя, опция «iburst» принудительно отправляет сразу несколько пакетов для точности синхронизации,
> - hwtimestamp * - опция, чтобы сетевой интерфейс считал собственный источник времени верным и синхронизировал клиентов с ним;
> - local stratum 5 - устанавливаем для себя значение по stratum = 5;
> - allow - кому разрешается подключаться к серверу и запрашивать время: чтобы не перечеслять все используемые в задании IPv4 и IPv6 сети, используется 0/0 и ::/0;
- Создайте в домашней директории пользователя файл wiki.yml для приложения MediaWiki.
- Средствами docker compose должен создаваться стек контейнеров с приложением MediaWiki и базой данных.
- Используйте два сервиса
- Основной контейнер MediaWiki должен называться wiki и использовать образ mediawiki
- Файл LocalSettings.php с корректными настройками должен находиться в домашней папке пользователя и автоматически монтироваться в образ.
- Контейнер с базой данных должен называться mariadb и использовать образ mariadb (субд).
- Разверните
- Он должен создавать базу с названием mediawiki, доступную по стандартному порту, пользователя wiki с паролем WikiP@ssw0rd должен иметь права доступа к этой базе данных
- MediaWiki должна быть доступна извне через порт 8080.
2. Включаем и добавляем в автозагрузку службу docker:
***systemctl enable --now docker.service***
3.В домашней директории пользователя root создаём файл wiki.yml со следующим содержимым:
***nano ~/wiki.yml***
<p align="center">
<img src="images/module2/51.png" width="600" />
</p>
> где:
> - services — основной раздел, где мы будем создавать и описывать наши сервисы (контейнеры docker). В данном примере сервиса два: MediaWiki - для приложения mediawiki и database - для базы данных; container_name — имя, которое получит созданный контейнер;
> - image — имя образа, который будет использоваться для создания контейнера;
> - restart поведения контейнера при падении;
> - ports (внешняя публикация). С помощью данной опции мы можем указывать, на каких портах должен слушать контейнер и на какие порты должны пробрасываться запросы
> - environment — задаем переменные окружения;
> - volumes - проброс папок;
> - links - ссылайтесь на контейнеры в другом сервисе. Укажите либо имя сервиса, либо псевдоним ссылки (SERVICE:ALIAS)
***apt install –y mariadb-****
> P.S. После первоначальной настройки через Web-интерфейс с CLI загрузите LocalSettings.php в тот же каталог, что и эта wiki.yml и раскомментируйте следующую строку "# - ./LocalSettings.php:/var/www/html/LocalSettings.php" и используйте docker-compose для перезапуска службы mediawiki
4. Чтобы отдельный volume для хранения базы данных имел правильное имя - создаём его средствами docker:
***docker volume create dbvolume***
5. Выполняем сборку и запуск стека контейнеров с приложением MediaWiki и базой данных описанных в файле wiki.yml:
1. Переходим в браузер http://wiki.au-team.irpo:8080/ для продолжения установки через веб-интерфейс - нажимаем set up the wiki:
<p align="center">
<img src="images/module2/54.png" width="600" />
</p>
2. Выбираем необходимый Язык - нажимаем Далее:
<p align="center">
<img src="images/module2/55.png" width="600" />
</p>
3. После успешной проверки внешней среды - нажимаем Далее:
<p align="center">
<img src="images/module2/56.png" width="600" />
</p>
4. Заполняем параметры подключение к Базе Данных в соответствие с заданными переменными окружения в wiki.yml, которые соответствуют требованиям задания:
6. После чего будет автоматически скачен файл LocalSettings.php - который необходимо передать на BR-SRV в домашнюю директорию пользователя root туда же где лежит wiki.yml:
Если вдруг в веб при вводе данных параметров базы данных будет вылазить ошибка –*данной базы данных не существует, данному пользователю не даны права на создание базы данных*, то удаляем их и создаем заново:
> - ServerAlias - дополнительное имя, по которому будет доступен сайт
> - DocumentRoot - путь до проекта для этого домена
> - AllowOverride All - когда сервер находит .htaccess файл (как определено AccessFileName) ему необходимо знать какие директивы, объявленные в том файле могут отменять ранее утановленную информацию доступа. Эта директива может быть установлена в None, т.е. чтобы сервер не читал файл .htaccess. Если она установленна в All - сервер будет допускать все директивы .htaccess файла.
> - Options -Indexes +FollowSymLinks - означает, что если каталог является символьной ссылкой, перейдите по ссылке
Создаём символьную ссылку из sites-available на sites-enabled:
Правим количество входных переменных, которые могут быть приняты в одном запросе, для работы Moodle - необходимо 5000, а значение в php.ini по умолчанию 1000:
<p align="center">
<img src="images/module2/82.png" width="600" />
</p>
Проверяем:
***nano /etc/php/8.2/apache2/php.ini***
<p align="center">
<img src="images/module2/83.png" width="600" />
</p>
Перезагружаем apache:
***systemctl restart apache2***
<p align="center"><b>*HQ-CLI*</b></p>
После можно переходить в браузер для установки Moodle по http://<IP | domain-name>/install.php
1. Перед тем как зайти на сайт в hq-cli в файле /etc/hosts прописываем следующее:
***192.168.100.2 moodle.au-team.irpo moodle***
2. Открываем firefox переходим на *http://moodle.au-team.irpo/moodle*
- выбираем Язык - нажимаем "Далее":
<p align="center">
<img src="images/module2/84.png" width="600" />
</p>
3. Подтверждаем пути - правим Каталог данных (в соответствии с созданной ранее директорией - /var/moodledata) - нажимаем "Далее":
<p align="center">
<img src="images/module2/85.png" width="600" />
</p>
4. Выбираем драйвер баз данных MariaDB - нажимаем "Далее":
<p align="center">
<img src="images/module2/86.png" width="600" />
</p>
5. Заполняем параметры ранее созданной Базы данных - "пользователя БД, пароль и порт":
***СЕРВЕР БАЗ ДАННЫХ (ХОСТ) localhost***
***НАЗВАНИЕ БАЗЫ ДАННЫХ moodle***
***ПОЛЬЗОВАТЕЛЬ БАЗЫ ДАННЫХ moodle***
***ПАРОЛЬ P@ssw0rd***
6. нажимаем - "Продолжить":
<p align="center">
<img src="images/module2/87.png" width="600" />
</p>
7. Нажимаем - "Продолжить": не обращаем внимание на то, что у нас не настроен https
<p align="center">
<img src="images/module2/88.png" width="600" />
</p>
> **РЕКОМЕНДАЦИЯ:**
> пока идет долгая установка делаем nginx на hq-rtr, он идет сразу после moodle
8. заполняем необходимые сведения и нажимаем - "Обновить профиль":
<p align="center">
<img src="images/module2/89.png" width="600" />
</p>
<p align="center">
<img src="images/module2/90.png" width="600" />
</p>
9. Заполняем необходимые сведения и нажимаем - "Сохранить изменения":
<p align="center">
<img src="images/module2/91.png" width="600" />
</p>
<p align="center">
<img src="images/module2/92.png" width="600" />
</p>
### <p align="center"><b>8. Настройте веб-сервер nginx как обратный прокси-сервер на HQ-RTR</b></p>
- При обращении к HQ-RTR по доменному имени moodle.au-team.irpo клиента должно перенаправлять на HQ-SRV на стандартный порт, на сервис moodle
- При обращении к HQ-RTR по доменному имени wiki. au-team.irpo клиента должно перенаправлять на BR-SRV на порт, на сервис mediwiki
<p align="center"><b>*HQ-RTR*</b></p>
1. Установите Nginx
***apt install nginx -y***
Запустите и активируйте Nginx:
***systemctl start nginx***
***systemctl enable nginx***
2. Настройка Nginx как обратного прокси
Создадим конфигурационный файл для сайта в Nginx, в котором настроим виртуальные хосты:
> Если IPsec настроен правильно, вы должны видеть защищённый трафик между вашими серверами.
### <p align="center"><b>4. Настройте межсетевой экран на маршрутизаторах HQ-RTR и BR-RTR на сеть в сторону ISP</b></p>
Для выполнения этого задания нам нужно обеспечить работу только нужных протоколов, а именно: HTTP, HTTPS, DNS, NTP, ICMP. А также запретить остальные подключения из сети Интернет во внутреннюю сеть.
> Для передачи логов будем использовать протокол TCP, поэтому раскомментируем (уберем #) модуль imtcp, чтобы rsyslog мог получать логи с удаленных узлов.
<p align="center">
<img src="images/module3/25.png" width="600" />
</p>
> Также необходимо в конец конфига добавить шаблон для сбора логов, чтобы rsyslog сохранял логи по пути, который указан в задании.
Включаем службу rsyslog, чтобы она запускалась вместе с системой и перезапускаем ее для применения изменений:
***systemctl enable rsyslog***
***systemctl restart rsyslog***
<p align="center">
<img src="images/module3/26.png" width="600" />
</p>
> Сервер для приема логов настроен
2. Переходим к настройке клиентов. Начнем с роутеров.
Установим пакет rsyslog на HQ-RTR:
<p align="center">
<img src="images/module3/27.png" width="600" />
</p>
<p align="center">
<img src="images/module3/28.png" width="600" />
</p>
Далее, отредактируем файл конфигурации, расположенный по пути
/etc/rsyslog.conf:
<p align="center">
<img src="images/module3/29.png" width="600" />
</p>
> В блоке MODULES необходимо раскомментировать модули, которые обеспечивают поддержку логирования. (Все кроме модуля imuxsock, потому что вместо него будет использован модуль imjournal). Модуль imjournal придется дописать вручную.
Теперь опускаемся в самый низ конфига, там расположены правила.
Добавляем в самый конец строку, которая отвечает за отправку логов уровня предупреждения (warning) и выше:
****.warning @@192.168.100.2:514***
<p align="center">
<img src="images/module3/30.png" width="600" />
</p>
Теперь перезапускаем службу rsyslog, чтобы применить изменения.
***systemctl restart rsyslog***
*НА BR-RTR НУЖНО ПОВТОРИТЬ АНАЛАГИЧНО.*
3. Продолжаем настройку клиентов на BR-SRV
Установим на BR-SRV пакет rsyslog:
***apt install rsyslog***
<p align="center">
<img src="images/module3/31.png" width="600" />
</p>
Далее, отредактируем файл конфигурации, расположенный по пути /etc/rsyslog.conf:
<p align="center">
<img src="images/module3/32.png" width="600" />
</p>
> Здесь также необходимо раскомментировать модули imjournal, imklog, immark
<p align="center">
<img src="images/module3/33.png" width="600" />
</p>
> И добавить строку в конец конфига для того, чтобы логи отправлялись на сервер.
Включаем службу rsyslog, чтобы она запускалась вместе с системой и перезапускаем ее для применения изменений:
***systemctl enable rsyslog***
***systemctl restart rsyslog***
<p align="center">
<img src="images/module3/34.png" width="600" />
</p>
4.За время пока выполнялась настройка клиентов уже должны появиться логи, проверим каталог /opt на HQ-SRV:
<p align="center">
<img src="images/module3/35.png" width="600" />
</p>
> Как можно заметить, были автоматически созданы каталоги с именами клиентов. В каждом из них есть файл rsyslog.txt
Проверим, что логируются только сообщения уровня warning и выше.
Добавим несколько записей различного уровня в лог на любом из клиентов, например на BR-SRV, командами:
***logger -p user.info “Test info”***
***logger -p user.warning “Test warning”***
> сообщения уровня warning:
***logger -p user.error “Test error”***
> сообщения уровня error:
<p align="center">
<img src="images/module3/36.png" width="600" />
</p>
Теперь проверим на HQ-SRV содержимое файла /opt/br-srv/rsyslog.txt:
<p align="center">
<img src="images/module3/37.png" width="600" />
</p>
> Как можно заметить, здесь появились только сообщения уровня warning и error.
5. Перейдем к настройке ротации логов. На HQ-SRV создадим файл /etc/logrotate.d/rsyslog
Запишем в него следующее содержимое:
<p align="center">
<img src="images/module3/38.png" width="600" />
</p>
> Настройка ротации на этом закончена, каждую неделю будут проверяться логи и если какие-то из них больше 10МБ, они будут сжаты в архив.
### <p align="center"><b>8. Реализуйте механизм инвентаризации машин HQ-SRV и HQ-CLI через Ansible на BR-SRV</b></p>
> - Ansible помечает результат как changed, так как фактическое состояние системы меняется. При первом запуске плейбука это ожидаемое поведение.
> - Если запустить плейбук ещё раз, то Ansible покажет для тех же задач статус ok, потому что требуемое состояние уже достигнуто и ничего менять не нужно.
3. Абсолютно также, как и в предыдущем задании, проверяем его работу, командой:
***ansible-playbook /etc/ansible/backup.yml***
<p align="center">
<img src="images/module3/47.png" width="600" />
</p>
> - Как и в прошлом задании, Ansible помечает результат как changed, так как фактическое состояние системы меняется. При первом запуске плейбука так и должно быть.
> - И если запустить его ещё раз, то Ansible покажет для тех же задач статус ok, потому что требуемое состояние уже достигнуто и ничего менять не нужно.
4. Проверим наличие созданных отчетов:
***ls -la /etc/ansible/NETWORK_INFO***
***ls -la /etc/ansible/NETWORK_INFO/HQ-RTR***
***ls -la /etc/ansible/NETWORK_INFO/BR-RTR***
<p align="center">
<img src="images/module3/48.png" width="600" />
</p>
А также их содержимое, если хотите убедиться, что действительно скопировалось, для примера покажем файл interfaces с маршрутизатора HQ-RTR, остальные можете сами:
cat /etc/ansible/NETWORK_INFO/HQ-RTR/interfaces
<p align="center">
<img src="images/module3/49.png" width="600" />
</p>
> По итогу все резервные копии конфигураций созданы и содержат необходимую информацию. Задание выполнено.