Корпоративный 2023

Топология
Устройство Операционная система Пользователь/Пароль

RTR1

RedOS 7.3.3

root / toor

user / P@ssw0rd

RTR2

Astra Linux 2.12.46.6

user / P@ssw0rd

SRV1

Astra Linux 2.12.46.6

user / P@ssw0rd

SRV2

Astra Linux 2.12.46.6

user / P@ssw0rd

CLI1

RedOS 7.3.3

root / toor

user / P@ssw0rd

CLI2

Astra Linux 2.12.46.6

user / P@ssw0rd

Внимание!

Модуль Б и Модуль В — переделан с учётом назначения IP — адресов, и понятия «первый» и «последний» адрес в сети

Замена скриншотов произведена не будет

На момент выполнения Модуля Г — IP адреса следующие:

RTR1 — 192.168.100.253/24

RTR2 — 192.168.100.252/24

SRV1 — 192.168.100.2/24

SRV2 — 192.168.100.3/23

т.к. для использования в vrrp в качестве виртуального адреса 192.168.100.255 может вызвать ряд ошибок, но по факту данный адрес тоже является адресом в данной сети и является «последним».

 

Модуль Б. (Настройка технических и программных средств информационно-коммуникационных систем)
1. Базовая настройка
a) Настройте имена устройств согласно топологии
Используйте полное доменное имя
hostnamectl set-hostname <FQDN_NAME>;exec bash

где:

<FQDN_NAME> — Fully Qualified Domain Name — «полностью определённое имя домена», иногда сокращается до «полное имя домена»

exec bash — перезапуск оболочки bash для отображения нового хостнейма

Пример:

hostnamectl set-hostname rtr1.company.prof;exec bash

(аналогичным образом на всех остальных хостах)

 

b) Настройте адресацию устройств согласно топологии

 

Адрес сети – согласно топологии:

Для RTR1 – последний адрес сети минус 1

Для RTR2 – последний адрес сети минус 2

Для SRV1 – первый адрес сети плюс 1

Для SRV2 – первый адрес сети плюс 2

Для CLI1 – десятый адрес сети

Для CLI2 – двадцатый адрес сети

Адрес шлюза по умолчанию:

Для SRV1 – адрес маршрутизатора RTR1

Для SRV2 – адрес маршрутизатора RTR2

Для CLI1 – адрес маршрутизатора RTR1

Для CLI2 – адрес маршрутизатора RTR2

DNS-суффикс – company.prof

Используйте в качестве домена поиска

Адрес DNS-сервера:

Для RTR1 – адрес 77.88.8.8

Для RTR2 – адрес 77.88.8.1

Для SRV1 – адрес маршрутизатора RTR1

Для SRV2 – адрес маршрутизатора RTR2

Для CLI1 – адрес маршрутизатора RTR1

Для CLI2 – адрес маршрутизатора RTR2

На хостах с ОС Astra настраиваем в стиле debian и правим конфигурационный файл «/etc/network/interfaces»

На хостах с ОС RedOS настраиваем в стеле RHEL и правим конфигурационные файлы в директории «/etc/sysconfig/network-scripts/»

Также необходимо сразу включить «forwarding» (пересылку пакетов) на маршрутизаторах

Локальных репозиториев нет, пакеты необходимо будет брать из Интернета, т.е. на «внешний» сетевой интерфейс подключённый к сети Интернет получаем настройки по DHCP

 

RTR1

Настраиваем «внутренний» интерфейс для сети LAN:

vi /etc/sysconfig/network-scripts/ifcfg-ens34

 

systemctl restart NetworkManager

Проверяем:

 

где:

ens34 — внутренний интерфейс

 

Включаем forwarding:

echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf;sysctl -p

 

где:

net.ipv4.ip_forward=1 — параметр ядра, разрешающий пересылку пакетов между интерфейсами;

/etc/sysctl.conf — файл, в котором хранятся опции ядра;

sysctl -p — команда, которая читает файл /etc/sysctl.conf и применяет перечисленные в нем параметры.

RTR2

Настраиваем «внутренний» интерфейс для сети LAN:

vi /etc/network/interfaces

 

systemctl restart networking

Проверяем:

 

Включаем forwarding:

echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf;sysctl -p

 

Аналогичным образом настраиваем сетевые интерфейсы на остальных хостах:

SRV1:

ip — 192.168.100.1/24

gateway — 192.168.100.254

dns — 192.168.100.254

domain — company.prof

SRV2:

ip — 192.168.100.2/24

gateway — 192.168.100.253

dns — 192.168.100.253

domain — company.prof

CLI1:
ip — 192.168.100.10/24

gateway — 192.168.100.254

dns — 192.168.100.254

domain — company.prof

CLI2:
ip — 192.168.100.20/24

gateway — 192.168.100.253

dns — 192.168.100.253

domain — company.prof

Пример для SRV1 (Astra):

vi /etc/network/interfaces

 

vi /etc/resolv.conf

 

Пример для CLI1 (RedOS):

vi /etc/sysconfig/network-interfaces/ifcfg-ens33

 

c) На всех устройствах, кроме CLI1 и CLI2, создайте пользователя sshuser с паролем P@ssw0rd

Пользователь sshuser должен иметь возможность запуска утилиты sudo без дополнительной аутентификации.

 

Создадим пользователя без домашнего каталога:

useradd -M sshuser

Зададим пароль для пользователя (при необходимости):

passwd sshuser

Разрешим данному пользователя использовать sudo без доп.аутентификации:

echo "sshuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Проверим:

 

Аналогичным образом на всех необходимых хостах

 

2. Настройка дисковой подсистемы

a) На RTR1 настройте RAID массив

Уровень дискового массива RAID 1.

Используйте два неразмеченных жестких диска

Настройте автоматическое монтирование дискового массива.

Точка монтирования /opt/data.

RTR1

 

Для создания RAID массива используем диски sdb и sdc.

На новых неразмеченных дисках необходимо создать разделы при помощи утилиты cfdisk:

cfdisk /dev/sdb

Откроется псевдографическая утилита, на данном этапе необходимо указать метку раздела — значение по умолчанию, GPT.

 

Далее необходимо выбрать Новый для создания нового раздела.

 

Далее указывается размер создаваемого раздела, по умолчанию указывается все свободное пространство целевого диска. Нажатием Enter происходит соглашение с размером раздела.

 

После чего необходимо перейти в опцию меню Тип, чтобы указать, какой формат разметки выбрать. По умолчанию выбирается Linux Filesystem, но для создания RAID-массива потребуется отформатировать диск в Linux RAID.

 

В указанном списке выбирается Linux RAID.

 

Запишем изменения.

 

Вручную пишется слово yes, чтобы принять изменения и отформатировать диск.

 

После внесенных правок необходимо покинуть утилиту cfdisk, выбрав параметр Выход.

 

Необходимо повторить данную процедуру также и со вторым добавленным диском.

Проверим:

lsblk

 

Далее необходимо собрать RAID1-массив:

mdadm --create /dev/md0 –-level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

где:

mdadm — обращение к утилите mdadm;

—create — создать новый массив;

/dev/md0 — указывается, как будет называться логический том RAID-массива, /dev/mdX, где Х — порядковый номер RAID-массива, а mdX — зарезервированное имя устройства для RAID в Linux;

—level=1 — указывается уровень RAID-массива. 1 — указывает на RAID1 («Зеркало»);

—raid-devices=2 — указывается количество устройств, добавленных в RAID-массив;

/dev/sdb1 /dev/sdc1 — перечисляются диски, которые добавим в RAID-массив.

Проверим:

lsblk

 

После того, как массив собран, его необходимо сохранить:

mdadm --detail --scan --verbose | tee -a /etc/mdadm.conf

 

После того, как массив собран, необходимо форматировать его в необходимую файловую систему, например ext4 и настроить автоматическое монтирование при загрузке в директорию /opt/data.

Форматируем в ext4:

mkfs.ext4 /dev/md0

 

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

mkdir /opt/data

После этого необходимо добавить запись в файл /etc/fstab:

vi /etc/fstab

 

где:

/dev/md0 — указывается устройство, планируемое к монтированию в операционную систему (можно также использовать и «UUID» получив из вывода команды «blkid /dev/md0»);

/opt/data — указывается точка монтирования — созданная ранее директория;

ext4 — указывается файловая система целевого устройства;

defaults — указывает, что параметры монтирования файловой системы будут выполнены по умолчанию;

первый ноль — указывает параметр, который должен использоваться, если в системе установлены утилиты резервного копирования. Если установлен 0, значит, резервное копирование выключено;

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

Применяем монтирование и проверяем результат:

mount -av

 

 

b) На RTR2 сконфигурируйте LVM

Используйте два неразмеченных жестких диска

Настройте автоматическое монтирование тома

Точка монтирования /opt/data

RTR2

 

Для конфигурации LVM используем диски sdb и sdc.

Для работы с LVM необходима установка одноименной утилиты

apt update && apt install -y lvm2

Помечаем диски, что они будут использоваться для LVM

pvcreate /dev/sdb /dev/sdc

 

Посмотреть, что диск может использоваться LMV можно командой:

pvdisplay

 

где:

PV Name — имя диска.

VG Name — группа томов, в которую входит данный диск (в нашем случае пусто, так как мы еще не добавили его в группу).

PV Size — размер диска.

Allocatable — распределение по группам. Если NO, то диск еще не задействован и его необходимо для использования включить в группу.

PE Size — размер физического фрагмента (экстента). Пока диск не добавлен в группу, значение будет 0.

Total PE — количество физических экстентов.

Free PE — количество свободных физических экстентов.

Allocated PE — распределенные экстенты.

PV UUID — идентификатор физического раздела.

Инициализированные на первом этапе диски должны быть объединены в группы.

vgcreate vg01 /dev/sdb /dev/sdc

 

где: vg01 — произвольное (необходимое по заданию) имя группы

Просмотреть информацию о созданных группах можно командой:

vgdisplay

 

где:

VG Name — имя группы.

Format — версия подсистемы, используемая для создания группы.

Metadata Areas — область размещения метаданных. Увеличивается на единицу с созданием каждой группы.

VG Access — уровень доступа к группе томов.

VG Size — суммарный объем всех дисков, которые входят в группу.

PE Size — размер физического фрагмента (экстента).

Total PE — количество физических экстентов.

Alloc PE / Size — распределенное пространство: количество экстентов / объем.

Free PE / Size — свободное пространство: количество экстентов / объем.

VG UUID — идентификатор группы.

Последний этап — создание логического раздела из группы томов

lvcreate -l 100%FREE -n lv01 vg01

 

где:

-l 100%FREE – создание логического тома, используя все свободное пространство группы томов.

ещё варианты записи:

-L 1G: том на 1 гб

-L50: том на 50мб

-l 40%VG использовать 40% от дискового пространства группы

Посмотрим информацию о созданном томе

lvdisplay

 

где:

LV Path — путь к устройству логического тома.

LV Name — имя логического тома.

VG Name — имя группы томов.

LV UUID — идентификатор.

LV Write Access — уровень доступа.

LV Creation host, time — имя компьютера и дата, когда был создан том.

LV Size — объем дискового пространства, доступный для использования.

Current LE — количество логических экстентов.

Чтобы начать использовать созданный том, необходимо его отформатировать, создав файловую систему и примонтировать раздел в каталог

Создадим файловую систему ext4:

mkfs.ext4 /dev/vg01/lv01

 

Далее необходимо создать точку монтирования

mkdir /opt/data

После этого необходимо добавить запись в файл /etc/fstab:

vi /etc/fstab

 

Применяем монтирование и проверяем результат:

mount -av

 

3. Установка и настройка сервера баз данных
a) В качестве сервера баз данных используйте маршрутизатор RTR1 и RTR2
b) Разверните сервер баз данных на базе MariaDB

Настройте возможность удаленного подключения к серверу баз данных пользователю root с любых адресов

 

Устанавливаем MariaDB

RTR1
dnf install -y mariadb-server
RTR2
apt install -y mariadb-server

Разрешаем автозапуск демона и запускаем его

systemctl enable --now mariadb

Установим пароль для пользователя root:

mysqladmin -uroot password

система запросит новый пароль. Его нужно ввести дважды.

 

Настраиваем удалённое подключение к БД

Правим конфигурационный файл:

RTR1
vi /etc/my.cnf.d/mariadb-server.cnf
RTR2
vi /etc/mysql/mariadb.conf.d/50-server.cnf

Необходимо добавить в секцию [ mysqld ] строку: bind-address 0.0.0.0 — тогда сервер будет слушать все интерфейсы компьютера и доступ к БД будет с любых адресов

 

Перезапускаем MariaDB

systemctl restart mariadb

Проверим:

ss -tlpn | grep 3306

 

Обновим привилегии пользователя root для возможности удалённого подключения:

mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

 

После проверяем удалённое подключение с RTR2 на RTR1 для пользователя root

 

Аналогичным образом в обратную сторону

c) Для администрирования сервера баз данных разверните приложение phpMyAdmin

В качестве веб-сервера используйте Apache

Используйте phpMyAdmin версии 4.9.11

Веб панель phpMyAdmin должна быть доступна по адресу

http://<IP адрес RTR1>/phpmyadmin для RTR1

http://<IP адрес RTR2>/phpmyadmin для RTR2

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

При работе phpMyAdmin не должен выдавать ошибки и предупреждающие сообщения

 

Установка веб-сервера Apache

RTR1
dnf install -y httpd httpd-tools
RTR2
apt install -y apache2 apache2-utils

Запускаем веб-сервер и добавляем в автозагрузку:

RTR1
systemctl enable --now httpd
RTR2
systemctl enable --now apache2

Устанавливаем PHP и часто используемые модули

RTR1
dnf install -y php php-{mysqlnd,dom,simplexml,xml,curl,exif,ftp,gd,iconv,json,mbstring,posix}
systemctl enable --now php-fpm
RTR2
apt install -y php libapache2-mod-php php-{cli,fpm,json,pdo,mysql,zip,gd,mbstring,curl,xml,pear,bcmath}

Установка phpMyAdmin

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.11/phpMyAdmin-4.9.11-all-languages.zip

Распакуем архив phpMyAdmin

unzip phpMyAdmin-4.9.11-all-languages.zip

Переместим в каталог /usr/share

mv phpMyAdmin-4.9.11-all-languages /usr/share/phpmyadmin

Настройка phpMyAdmin

Создадим поддиректорию

mkdir -p /var/lib/phpmyadmin/tmp

Назначаем владельца

RTR1
chown -R apache:apache /var/lib/phpmyadmin
RTR2
chown -R www-data:www-data /var/lib/phpmyadmin

Копируем шаблон config.inc.php и редактируем

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
vi /usr/share/phpmyadmin/config.inc.php

находим и правим следующую строку: $cfg[‘blowfish_secret’] = » «;

 

а также раскомментируем следующий блок

 

Создаем базу данных и таблицы хранилища конфигурации

mariadb < /usr/share/phpmyadmin/sql/create_tables.sql

Заходим в MariaDB и предоставляем все необходимые привилегии базе данных phpMyAdmin

mysql -uroot -p
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'P@ssw0rd';
EXIT;

Настроим Apache для phpMyAdmin

RTR1
vi /etc/httpd/conf.d/phpmyadmin.conf

И добавляем следующую конфигурацию:

Alias /phpMyAdmin /usr/share/phpmyadmin/
Alias /phpmyadmin /usr/share/phpmyadmin/

<Directory /usr/share/phpmyadmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     Require all granted
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>
RTR2
vi /etc/apache2/conf-available/phpmyadmin.conf

И добавляем следующую конфигурацию:

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>
    <IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        <IfModule mod_authn_file.c>
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/phpmyadmin/htpasswd.setup
        </IfModule>
        Require valid-user
    </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>

Перезапустим веб-сервер Apache

RTR1
systemctl restart httpd
RTR2
a2enconf phpmyadmin.conf
systemctl reload apache2

Проверяем доступ к веб-интерфейсу с клиентов:

 

P.S. если не пускает под root на RTR2 (Астра):

 

mysql -uroot -p
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
systemctl restart mariadb
4. Настройка системы централизованного журналирования
a) В качестве сервера системы централизованного журналирования используйте RTR2
b) В качестве системы централизованного журналирования используйте Rsyslog совместно с веб панелью LogAnalyzer

Настройте Rsyslog

Настройте взаимосвязь сервера баз данных с Rsyslog

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

Настройте возможность приема сообщений по протоколам TCP и UDP по порту 514

Установите LogAnalyzer

В качестве веб-сервера используйте Apache

Используйте базу данных, с которой работает Rsyslog

Веб панель LogAnalyzer должна быть доступна по адресу http://<IP адрес RTR2>/loganalyzer

Для авторизации в веб панели LogAnalyzer необходимо использовать пользователя admin с паролем P@ssw0rd

c) Настройте централизованный сбор журналов с хостов RTR1, SRV1, SRV2
RTR2

Установим необходимый пакет

apt install -y rsyslog rsyslog-mysql

 

Далее необходимо импортировать схему базы данных rsyslog в MariaDB

Файл по пути «/usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql» для импорта должен иметь следующий вид (в соответствие с требуемыми параметрами):

 

mysql -uroot -p < /usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql

 

Можно проверить через phpMyAdmin развёрнутый ранее:

 

Затем необходимо создать пользователя rsyslog и предоставьте ему права к базе данных Syslog

mysql -uroot -p
GRANT ALL PRIVILEGES ON Syslog.* TO 'rsyslog'@'localhost' IDENTIFIED BY 'rsyslog';
FLUSH PRIVILEGES;
exit

Далее настраиваем rsyslog:

Для разрешения серверу принимать соединение по TCP и UDP в конфигурационном файле /etc/rsyslog.conf раскомментируйте строки в секции Modules

vi /etc/rsyslog.conf
vi /etc/rsyslog.d/mysql.conf

 

Проверяем конфигурационные файлы

rsyslog -N1

Для применения внесенных изменений перезагрузите службу rsyslog

systemctl restart rsyslog

Теперь можно перейти к установке веб-приложения LogAnalyzer

wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.13.tar.gz
tar xzf loganalyzer-4.1.13.tar.gz

Далее переместите приложение в каталог веб-сервера по умолчанию

mv loganalyzer-4.1.13/src /var/www/html/loganalyzer

Создайте файл конфигурации config.php в каталоге loganalyzer и предоставьте локальному пользователю соответствующие права для внесения изменений в файл

cd /var/www/html/loganalyzer/src
touch config.php
chmod 777 config.php

Настройка веб-приложения LogAnalyzer

C CLI1 откройте браузер и в адресной строке пропишите http://192.168.100.253/loganalyzer/src/index.php

На стартовой странице нажмите Next.

 

На втором шаге производится проверка на наличие файла конфигурации config.php. В него будут записаны последующие настройки. Рядом с обнаруженным файлом обязательно должна отображаться надпись «Writeable». При ее отсутствии в файл не могут быть записаны настройки.

 

На третьей странице задается базовая конфигурация приложения

 

Если настройка проведена корректно, будет открыта страница с предупреждением о внесении изменений в конфигурационный файл config.php. Подключение к базе данных успешно установлено. Нажмите Next.

 

На данной странице будет выведено сообщение об успешном создании таблицы в базе данных, а также отобразится количество успешных операций и ошибок.

 

Здесь будет предложено создать первого пользователя для веб-приложения. Данный пользователь будет иметь административные права и доступ к центру администрирования (admin:P@ssw0rd по заданию).

 

На этой странице необходимо снова указать источник, который ведет системный журнал.

 

!!! На скриншоте допущена ошибка — обратите внимание что «Database TableName» должно быть «SystemEvents», данную информацию можно было посмотреть в phpMyAdmin (внимательно с регистром, скриншот заменён не будет, но ошибка исправлена)

Если настройка выполнена верно, будет открыта страница с сообщением об успешной установке LogAnalyzer. Нажмите Finish для перехода на страницу аутентификации.

 

После успешной аутентификации будут открыты логи в удобном для просмотра формате.

 

 

Для доступа по «http://192.168.100.253/loganalyzer»

mv -r /var/www/html/loganalyzer/src/* /var/www/html/loganalyzer

Настройка RTR1, SRV1 и SRV2, который будет отправлять лог-сообщения

Для создания правила на клиенте воспользуйтесь директорией rsyslog.d, которая является дополнительной для конфигурационных файлов

Если мы хотим передавать только сообщения об ошибках, добавляем строку в файл конфигурации rsyslog:

vi /etc/rsyslog.d/erors.conf

 

Перезапускаем сервис логов

systemctl restart rsyslog

Аналогично на SRV1 и SRV2

Для проверки в loganalyzer, для RTR1 добавим возможность отправлять все логи:

vi /etc/rsyslog.d/all.conf
*.* @@192.168.100.253:514
systemctl restart rsyslog

Проверяем в loganalyzer:

 

5. Настройка системы централизованного мониторинга
a) В качестве сервера системы централизованного мониторинга используйте RTR1
b) В качестве системы централизованного мониторинга используйте Zabbix
Вам доступна документация на сайте https://www.zabbix.com/ru/

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

В качестве веб-сервера используйте Apache

c) Система централизованного мониторинга должна быть доступна по адресу http://<IP адрес RTR1>/zabbix

Администратором системы мониторинга должен быть пользователь admin с паролем P@ssw0rd

d) Настройте узел системы централизованного мониторинга
В качестве узлов сети используйте устройства RTR2, SRV1, SRV2

На устройствах, где нет доступа в Интернет, установите Zabbix-agent используя установочный диск

Имя узла сети должно соответствовать полному имени устройства

RTR1

Установим необходимые пакеты

dnf install -y zabbix-server-mysql zabbix-apache-conf zabbix-sql-scripts

Создадим пользователя и базу данных для zabbix

mysql -uroot -p
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';
FLUSH PRIVILEGES;
exit

Импортируем схему базы данных и начальные данные

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -pzabbix zabbix

Проверить успешность импорта схем можно с CLI1 через phpMyAdmin

 

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

vi /etc/zabbix/zabbix_server.conf

 

Также необходимо отредактировать файл php.ini

vi /etc/php.ini

 

 

 

Запустим zabbix

systemc enable --now zabbix-server
systemctl reload httpd

Настройка из веб-интерфейса

Для того чтобы войти в веб-интерфейс, укажите в адресной строке браузера http://192.168.100.254/zabbix

Выберете язык и нажмите Next step.

 

Далее вы попадете на страницу преднастроек. Если вы ранее указали временную зону, то во всех пунктах должно быть «ОК».

 

Укажите данные для подключения к ранее созданной базе данных

 

В следующем окне нужно ввести IP-адрес хоста сервера zabbix и номер порта для его работы. Можно оставить значения по умолчанию

 

Проверьте правильность введенных данных и нажмите «Next step»

 

При успешном окончании установки вы увидите следующую страницу

 

Введите логин и пароль сервера zabbix. По умолчанию имя пользователя — Admin (регистр важен), пароль — zabbix.

 

 

Теперь необходимо сменить пароль для пользователя «Admin» на «P@ssw0rd»

 

 

Настройка zabbix-agent на RTR2, SRV1, SRV2

apt install -y zabbix-agent

Настройте файл конфигурации

vi /etc/zabbix/zabbix_agentd.conf

По умолчанию достаточно просто прописать IP-адрес сервера мониторинга

img

Запустите сервис и добавьте его в автозапуск

systemctl enable --now zabbix-agent

В веб-интерфейсе zabbix-сервера добавьте новый узел

 

 

 

Аналогично на SRV1 и SRV2

 

6. Настройка SSH на управляемых серверах

a) В качестве управляемых серверов используйте все устройства, кроме клиентов
На устройствах, где нет доступа в Интернет, для установки пакетов используйте установочный диск

Доступ разрешен только пользователю sshuser.

Доступ пользователю root запрещен в явном виде

Доступ по паролю запрещен

b) На CLI1 сгенерируйте пару ключей для устройств с операционной системой RedOS и пару ключей для устройств с операционной системой Astra.

Скопируйте правильный публичный ключ на устройства с операционной системой RedOS.

Скопируйте правильный публичный ключ на устройства с операционной системой Astra.

c) Настройте подключение по SSH по соответствующему ключу.

На всех устройствах за исключением клиентов:

mkdir /home/sshuser
chow sshuser:sshuser /home/sshuser
cd /home/sshuser
mkdir -p .ssh/
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
chown sshuser:sshuser .ssh/authorized_keys
CLI1

Генерация ключевой пары SSH

ssh-keygen -t rsa -b 2048 -f astra_ssh_key
ssh-keygen -t rsa -b 2048 -f redos_ssh_key
mkdir .ssh
mv astra_ssh_key* redos_ssh_key* .ssh/

Создаём config для ssh подключений

vi .ssh/config

 

chmod 600 .ssh/config

Копирования публичного ключа на устройства с Astra

ssh-copy-id -i .ssh/astra_ssh_key.pub sshuser@192.168.100.253
ssh-copy-id -i .ssh/astra_ssh_key.pub sshuser@192.168.100.1
ssh-copy-id -i .ssh/astra_ssh_key.pub sshuser@192.168.100.2

Копирование публичного ключа на устройства с RedOS

ssh-copy-id -i .ssh/redos_ssh_key.pub sshuser@192.168.100.254

На всех устройствах за исключением клиентов правим конфигурационный файл «/etc/ssh/sshd_config»

vi /etc/ssh/sshd_config

 

Перезапускаем сервис

systemctl restart sshd

Проверяем с CLI1

 

7. Настройка узла управления Ansible
a) Настройте узел управления на базе CLI1
Установочные файлы находятся в addons_final.iso

Вам доступна документация на сайте https://docs.ansible.com/

b) Сформируйте инвентарь:

Создайте файл инвентаря с именем hosts

Настройте запуск данного инвентаря по умолчанию

Сформируйте группы серверов
RTR1 – включается маршрутизатор RTR1
RTR2 – включается маршрутизатор RTR2
Router – включаются группы серверов RTR1 и RTR2
SRV1 – включается сервер SRV1
SRV2 – включается сервер SRV2
Server – включаются группы серверов SRV1 и SRV2
c) Реализуйте доступ к серверам с учетом настроек SSH
Все параметры должны быть размещены в папке group_vars в качестве переменных

Выполните тестовые подключения, добавьте хосты в список известных.

d) Выполните тестовую команду “ping” средствами ansible

Убедитесь, что все сервера отвечают “pong” без предупреждающих сообщений

Убедитесь, что команды ansible выполняются от пользователя user без использования sudo

c) Создайте необходимую для выполнения задания 2 дня структуру каталогов
CLI1

Установим Ansible

su -
dnf install -y ansible

В домашнем каталоге пользователя user создадим директорию для ansible из под пользователя user

mkdir -p ~/ansible
cd ~/ansible

Из под root правим конфигурационный файл «/etc/ansible/ansible.cfg» для указания инвентарного файла в домашней каталоге пользователя user в каталоге ansible

vi /etc/ansible/ansible.cfg

 

Из под пользователя user создаём инвентарный файл hosts

vi ~/ansible/hosts

 

Создадим каталог для хранения групповых переменных

mkdir -p ~/ansible/group_vars

В ней создадим файлы для хранения переменных для групп

vi ~/ansible/group_vars/all.yml
vi ~/ansible/group_vars/Server.yml
vi ~/ansible/group_vars/RTR1.yml
vi ~/ansible/group_vars/RTR2.yml

 

Выполним проверку

cd ~/ansible
ansible -m ping all

 

Создаём структуру директорий для следующего задания

mkdir project_{1..5}

 

Модуль В. (Автоматизация)

 

8. Настройка динамической трансляции адресов

a) Настройте динамическую трансляцию адресов средствами Ansible для группы серверов RTR1
В качестве плейбука используйте файл playbook_1.yml в каталоге project_1

Плейбук должен содержать действия по настройке динамической трансляцию адресов

Используйте firewalld

Использование плагина shell и command НЕ допускается

Использование запрещенных плагинов обнулит весь пункт при проверке

CLI1

Всё из под пользователя «user»

Создадим playbook_1.yml

cd ~/ansible
vi project_1/playbook_1.yml
---
- name: Setting up dynamic address translation by Firewalld
  hosts: RTR1
  become: true

# определяем переменные
  vars:
    external_int: 'ens33'
    internal_int: 'ens34'
    external_zone: 'dmz'
    internal_zone: 'trusted'

  tasks:
# включаем пересылку пакетов (forwarding)
    - name: Set ip forwarding on in /proc and in the sysctl file and reload necessary
      sysctl:
        name: net.ipv4.ip_forward
        value: '1'
        sysctl_set: true
        state: present
        reload: true

# устанавливаем пакет firewalld
    - name: Install Firewalld
      dnf:
        name: firewalld
        state: present

# включаем и добавляем в автозагрузку firewalld
    - name: Started and enabled Firewalld
      service:
        name: firewalld
        state: started
        enabled: true

# распределяем интерфейсы по зонам: внешний интерфейс добавляется в зону dmz, внутренний интерфейс добавляется в зону trusted
    - name: Distribution of interfaces to the corresponding zones
      firewalld:
        zone: '{{ item.zone }}'
        interface: '{{ item.interface }}'
        permanent: true
        state: enabled
        immediate: yes
      loop:
        - { zone: '{{ external_zone }}', interface: '{{ external_int }}' }
        - { zone: '{{ internal_zone }}', interface: '{{ internal_int }}' }

# включаем маскировку трафика на зону dmz в которой находится внешний интерфейс
    - name: 'Turn on masquerade on {{ external_zone }}'
      firewalld:
        zone: '{{ external_zone }}'
        masquerade: 'yes'
        permanent: true
        state: enabled
        immediate: true
ansible-playbook project_1/playbook_1.yml

 

 

b) Настройте динамическую трансляцию адресов средствами Ansible для группы серверов RTR2
В качестве плейбука используйте файл playbook_2.yml в каталоге project_1

Плейбук должен содержать действия по настройке динамической трансляцию адресов

Используйте iptables

Использование плагина shell и command НЕ допускается

Использование запрещенных плагинов обнулит весь пункт при проверке

CLI1

Всё из под пользователя «user»

Создадим playbook_2.yml

cd ~/ansible
vi project_1/playbook_2.yml
---
- name: Setting up dynamic address translation by Iptables
  hosts: RTR2
  become: true

# определяем переменные
  vars:
    external_int: 'eth0'
    lan_network: '192.168.100.0/24'
    iptables_save_path: /etc/iptables.rules

  tasks:
# включаем пересылку пакетов (forwarding)
    - name: Set ip forwarding on in /proc and in the sysctl file and reload necessary
      sysctl:
        name: net.ipv4.ip_forward
        value: '1'
        sysctl_set: true
        state: present
        reload: true

# Устанавливаем Iptalbes
    - name: Install Iptables
      apt:
        name: iptables
        state: present
        update_cache: yes

# Включаем маскировку трафика из локальной сети через внешний интерфейс
    -name: Turn on masquerade
      iptables:
        table: nat
        chain: POSTROUTING
        jump: MASQUERADE
        out_interface: '{{ external_int }}'
        protocol: all
        source: '{{ lan_network }}'
        destination: '0.0.0.0/0'

# Сохраняем правила Iptables в файл
    - name: Save current state of the iptables in system file
      community.general.iptables_state:
        state: saved
        path: '{{ iptables_save_path }}'

# Добавляем выгрузку правил из ранее сохранённого файла во время загрузки системы
    - name: Enable auto-loading of rules iptables
      lineinfile:
        path: /etc/network/interfaces
        line: 'pre-up iptables-restore < {{ iptables_save_path }}'
        state: present

Настраиваем доступ в Интернет для установки необходимой коллекции

su -
echo nameserver 77.88.8.8 >> /etc/resolv.conf
exit

Из под пользователя user ставим недостающую коллекцию

ansible-galaxy collection install community.general

Запускаем playbook_2

ansible-playbook project_1/playbook_2.yml

 

Проверяем с SRV2

 

9. Настройка перенаправляющего DNS
a) Настройте перенаправляющий DNS средствами Ansible для группы серверов Router
  • В качестве плейбука используйте файл playbook_1.yml в каталоге project_2

  • Плейбук должен содержать действия по настройке перенаправляющего DNS

    • Используйте bind9

    • Все запросы должны пересылаться внешнему DNS-серверу

      • Для RTR1 на 77.88.8.8

      • Для RTR2 на 77.88.8.1

    • В зависимости от операционной системы, конфигурационные файлы и файлы зон должны располагаться в стандартных каталогах и иметь стандартные имена

    • Использование плагина shell и command НЕ допускается

      • Использование запрещенных плагинов обнулит весь пункт при проверке

    • Плейбук должен содержать действия по перенастройке адреса DNS-сервера на маршрутизаторах на 127.0.0.1

    • Использование плагина shell и command НЕ допускается

      • Использование запрещенных плагинов обнулит весь пункт при проверке

CLI1

Всё из под пользователя «user»

cd ~/ansible

vi project_2/playbook_1.yml

---
- name: Configuring redirection DNS
  hosts: Router
  become: true 

# определяем переменные
  vars:
    rtr1_external_dns: '77.88.8.8'
    rtr2_external_dns: '77.88.8.1'
    localhost: '127.0.0.1'
    listen_on_port53: any
    allow_query: any
    dnssec_validation: 'no'

  tasks:
# блок для настройки DNS сервера на RTR1 - РедОС
    - name: Configure DNS on REDOS
      block:
        - name: Install bind9 on RedOS
          dnf: 
            name: bind
            state: present

        - name: 'Forward requests to {{ rtr1_external_dns }} on RedOS'
          template:
            src: named.conf.j2
            dest: /etc/named.conf
          notify:
            - Restarted and enabled bind9 on RedOS
      when:
        - ansible_os_family == 'REDOS'

# блок для настройки DNS сервера на RTR2 - Астра
    - name: Configure DNS on Astra
      block:
        - name: Install bind9 on Astra
          apt:
            name: bind9
            state: present
            update_cache: true

        - name: 'Forward requests to {{ rtr2_external_dns }} on Astra'
          template:
            src: named.conf.options.j2
            dest: /etc/bind/named.conf.options
          notify:
            - Restarted and enabled bind9 on Astra
      when:
        - ansible_os_family == 'Astra Linux (Orel)'

# переконфигурирование файла resolv.conf на RTR1 и RTR2
    - name: Configure resolv.conf file
      template:
        src: resolv.conf.j2
        dest: /etc/resolv.conf

  handlers:
    - name: Restarted and enabled bind9 on RedOS
      service: 
        name: named
        state: restarted
        enabled: true

    - name: Restarted and enabled bind9 on Astra
      service: 
        name: bind9
        state: restarted
        enabled: true

Создадим директорию для шаблонов

mkdir project_2/templates

Создадим шаблон для конфигурационного файла DNS спервера для RedOS

vi project_2/templates/named.conf.j2

options {
        listen-on port 53 { {{ listen_on_port53 }}; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { {{ allow_query }}; };
        recursion yes;
        dnssec-validation {{ dnssec_validation }};
	forward first;
	forwarders {
		{{ rtr1_external_dns }};
	};
        managed-keys-directory "/var/named/dynamic";
        geoip-directory "/usr/share/GeoIP";
        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
        include "/etc/crypto-policies/back-ends/bind.config";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Создадим шаблон для конфигурационного файла DNS спервера для Astra

vi project_2/templates/named.conf.options.j2

options {
	directory "/var/cache/bind";

	forwarders {
		{{ rtr2_external_dns }};
	};
	allow-query { {{ allow_query }}; };

	dnssec-validation {{ dnssec_validation }};

	auth-nxdomain no;    # conform to RFC1035
	listen-on-v6 { any; };

	listen-on { {{ listen_on_port53 }}; };
};

Создадим шаблон для конфигурационного файла resolv.conf:

vi project_2/templates/resolv.conf.j2

search company.prof
nameserver {{ localhost }}

ansible-playbook project_2/playbook_1.yml

img

Проверяем с SRV1 и SRV2

img

10. Настройка протокола динамической конфигурации хостов
a) Настройте протокол динамической конфигурации хостов средствами Ansible для группы серверов RTR1
  • В качестве плейбука используйте файл playbook_1.yml в каталоге project_3

  • Плейбук должен содержать действия по настройке протокола динамической конфигурации хостов

    • Адрес сети – согласно топологии

    • Адрес шлюза по умолчанию – адрес маршрутизатора RTR1

    • DNS-суффикс – company.prof

    • Адрес DNS-сервера – адрес маршрутизатора RTR1

    • Адрес NTP-сервера – адрес маршрутизатора RTR1

    • Выдаваемые адреса:

      • Первый адрес – первый адрес сети плюс 5

      • Последний адрес – общее количество адресов в сети разделенное на 2

      • В зависимости от операционной системы, конфигурационные файлы должны располагаться в стандартных каталогах и иметь стандартные имена

      • Использование плагина shell и command НЕ допускается

        • Использование запрещенных плагинов обнулит весь пункт при проверке

CLI1

Всё из под пользователя «user»

vi project_3/playbook_1.yml

---
- name: Configuring DHCP on RTR1
  hosts: RTR1
  become: true

# Задаём необходимые переменные
  vars:
    domain_name: company.prof
    plug_subnet: '192.168.15.0'
    plug_subnet_netmask: '255.255.255.0'
    main_subnet: '192.168.100.0'
    main_subnet_netmask: '255.255.255.0'
    first_address_range: '192.168.100.6'
    last_address_range: '192.168.100.127'
    dns_server_address: '192.168.100.254'
    ntp_server_address: '192.168.100.254'
    default_gateway_address: '192.168.100.254'
    interface_work_dhcp: 'ens34'

  tasks:
# Устанавливаем пакет dhcp
    - name: Install dhcp
      dnf:
        name: dhcp
        state: present

# Настраиваем DHCP сервер из шаблона
    - name: Setting up DHCP server
      template:
        src: dhcpd.conf.j2
        dest: /etc/dhcp/dhcpd.conf
      notify:
        - Restarted dhcpd

# Указываем на каком интерфейсе должен работать DHCP сервер
    - name: A specific interface to work with
      lineinfile:
        line: 'DHCPARGS={{ interface_work_dhcp }}'
        path: /etc/sysconfig/dhcpd
        state: present
      notify:
        - Restarted dhcpd

# Запускаем и добавляем в автозагрузку DHCP
  handlers:
    - name: Restarted dhcpd
      service:
        name: dhcpd
        state: restarted
        enabled: true

Создадим директорию для шаблона

mkdir project_3/templates

Создадим шаблон для конфигурационного файла DHCP сервера

vi project_3/templates/dhcpd.conf.j2

option domain-name "{{ domain_name }}";

default-lease-time 6000;
max-lease-time 72000;

authoritative;

subnet {{ plug_subnet }} netmask {{ plug_subnet_netmask }} {}

subnet {{ main_subnet }} netmask {{ main_subnet_netmask }}{
  range {{ first_address_range }} {{ last_address_range }};
  option domain-name-servers {{ dns_server_address  }};
  option ntp-servers {{ ntp_server_address }};
  option routers {{ default_gateway_address }};
}

Запускаем playbook

ansible-playbook project_3/playbook_1.yml

img

b) Настройте протокол динамической конфигурации хостов средствами Ansible для группы серверов RTR2
  • В качестве плейбука используйте файл playbook_2.yml в каталоге project_3

  • Плейбук должен содержать действия по настройке протокола динамической конфигурации хостов

    • Адрес сети – согласно топологии

    • Адрес шлюза по умолчанию – адрес маршрутизатора RTR2

    • DNS-суффикс – company.prof

    • Адрес DNS-сервера – адрес маршрутизатора RTR2

    • Адрес NTP-сервера – адрес маршрутизатора RTR2

    • Выдаваемые адреса:

      • Первый адрес – общее количество адресов в сети разделенное на 2 плюс 1

      • Последний адрес – последний адрес сети минус 5

      • В зависимости от операционной системы, конфигурационные файлы должны располагаться в стандартных каталогах и иметь стандартные имена

      • Использование плагина shell и command НЕ допускается

        • Использование запрещенных плагинов обнулит весь пункт при проверке

CLI1

Всё из под пользователя «user»

vi project_3/playbook_2.yml

---
- name: Configuring DHCP on RTR2
  hosts: RTR2
  become: true

# Задаём необходимые переменные
  vars:
    domain_name: company.prof
    plug_subnet: '192.168.15.0'
    plug_subnet_netmask: '255.255.255.0'
    main_subnet: '192.168.100.0'
    main_subnet_netmask: '255.255.255.0'
    first_address_range: '192.168.100.128'
    last_address_range: '192.168.100.249'
    dns_server_address: '192.168.100.253'
    ntp_server_address: '192.168.100.253'
    default_gateway_address: '192.168.100.253'
    interface_work_dhcp: 'eth1'

  tasks:
# Устанавливаем пакет isc-dhcp-server
    - name: Install isc-dhcp-server
      apt:
        name: isc-dhcp-server
        state: present
        update_cache: true

# Настраиваем DHCP сервер из шаблона
    - name: Setting up DHCP server
      template:
        src: dhcpd.conf.j2
        dest: /etc/dhcp/dhcpd.conf
      notify:
        - Restarted isc-dhcp-server

# Указываем на каком интерфейсе должен работать DHCP сервер
    - name: A specific interface to work with
      lineinfile:
        regexp: '^INTERFACESv4=""'
        line: 'INTERFACESv4="{{ interface_work_dhcp }}"'
        path: /etc/default/isc-dhcp-server
        state: present
      notify:
        - Restarted isc-dhcp-server

# Запускаем и добавляем в автозагрузку isc-dhcp-server
  handlers:
    - name: Restarted isc-dhcp-server
      service:
        name: isc-dhcp-server
        state: restarted
        enabled: true

Шаблон используется один для двух playbook

Запускаем playbook

ansible-playbook project_3/playbook_2.yml

img

c) Переконфигурируйте сетевые настройки клиентов CLI1 и CLI2 для получения сетевых параметров по DHCP
  • Применение Ansible НЕ требуется

Выполнено как и в начале задания для внешних интерфейсов RTR1 и RTR2

CLI1

img

CLI2

img

11. Настройка сервера времени
a) Настройте сервер времени средствами Ansible для группы серверов Router
  • В качестве плейбука используйте файл playbook_1.yml в каталоге project_4

  • Плейбук должен содержать действия по установке и настройке сервера времени

    • Используйте сервер времени на базе Chrony

    • Используйте часовой пояс Europe/Moscow

    • Использование плагина shell и command НЕ допускается

      • Использование запрещенных плагинов обнулит весь пункт при проверке

CLI1

Всё из под пользователя «user»

vi project_4/playbook_1.yml

---
- name: Configuring NTP on Router group
  hosts: Router
  become: true

# Задаём необходимые переменные
  vars:
    time_zone: 'Europe/Moscow'
    external_ntp_server_rtr1: '1.ru.pool.ntp.org'
    external_ntp_server_rtr2: '2.ru.pool.ntp.org'
    allowed_network: '192.168.100.0/24'

  tasks:
# Настраиваем часовой пояс
    - name: 'Setting the time zone {{ time_zone }}'
      timezone:
        name: '{{ time_zone }}'

# Устанавливаем пакет chrony
    - name: Install chrony
      package:
        name: chrony
        state: present

# Настраиваем NTP сервер из шаблона на RTR1
    - name: Customization chrony.conf file on RTR1
      template:
        src: rtr1_chrony.conf.j2
        dest: /etc/chrony.conf
      notify:
        - Restarted chronyd
      when:
        - ansible_os_family == 'REDOS'

# Настраиваем NTP сервер из шаблона на RTR2
    - name: Customization chrony.conf file on RTR2
      template:
        src: rtr2_chrony.conf.j2
        dest: /etc/chrony/chrony.conf
      notify:
        - Restarted chronyd
      when:
        - ansible_os_family == 'Astra Linux (Orel)'

# Запускаем и добавляем в автозагрузку chronyd
  handlers:
    - name: Restarted chronyd
      service:
        name: chronyd
        state: restarted
        enabled: true

Создадим директорию для шаблонов

mkdir project_4/templates

Создадим шаблон конфигурационного файла NTP сервера для RTR1

vi project_4/templates/rtr1_chrony.conf.j2

server {{ external_ntp_server_rtr1 }}

driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow {{ allowed_network }}

keyfile /etc/chrony.keys
ntsdumpdir /var/lib/chrony
leapsectz right/UTC
logdir /var/log/chrony

Создадим шаблон конфигурационного файла NTP сервера для RTR2

vi project_4/templates/rtr2_chrony.conf.j2

pool {{ external_ntp_server_rtr2 }} iburst
allow {{ allowed_network }}

keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3

Запустим playbook

ansible-playbook project_4/playbook_1.yml

img

12. Настройка NTP клиента
a) Настройте NTP клиента средствами Ansible для группы серверов Server
  • В качестве плейбука используйте файл playbook_2.yml в каталоге project_4

  • Проект должен содержать действия по установке и настройке NTP клиента

    • Используйте NTP клиент на базе Chrony

    • Используйте часовой пояс Europe/Moscow

    • Использование плагина shell и command НЕ допускается

      • Использование запрещенных плагинов обнулит весь пункт при проверке

CLI1

Всё из под пользователя «user»

vi project_4/playbook_2.yml

---
- name: Configuring NTP clients
  hosts: Server
  become: true

# Задаём необходимые переменные
  vars:
    time_zone: 'Europe/Moscow'
    ntp_srv1_sync: '192.168.100.254'
    ntp_srv2_sync: '192.186.100.253'

  tasks:
# Настраиваем часовой пояс
    - name: 'Setting the time zone {{ time_zone }}'
      timezone:
        name: '{{ time_zone }}'

    - name: Install chrony
      package:
        name: chrony
        state: present

# Настраиваем NTP клиент на SRV1
    - name: Customization chrony.conf on SRV1
      lineinfile:
        regexp: '^pool'
        line: 'pool {{ ntp_srv1_sync }} iburst prefer'
        path: /etc/chrony/chrony.conf
      notify:
        - Restarted chronyd
      when:
        - ansible_hostname == 'srv1'

# Настраиваем NTP клиент на SRV2
    - name: Customization chrony.conf on SRV2
      lineinfile:
        regexp: '^pool'
        line: 'pool {{ ntp_srv2_sync }} iburst prefer'
        path: /etc/chrony/chrony.conf
      notify:
        - Restarted chronyd
      when:
        - ansible_hostname == 'srv2'

# Запускаем и добавляем в автозагрузку chronyd
  handlers:
    - name: Restarted chronyd
      service:
        name: chronyd
        state: restarted
        enabled: true

Запускаем playbook

ansible-playbook project_4/playbook_2.yml

img

Проверим с RTR1 и RTR2 клиентов NTP

img

13. Настройка NFS сервера
a) Настройте NFS сервер средствами Ansible для группы маршрутизаторов Router
  • В качестве плейбука используйте файл playbook_1.yml в каталоге project_5

  • Плейбук должен содержать действия по настройке NFS сервера

    • Настройте общий доступ к директории /opt/data

CLI1

Всё из под пользователя «user»

vi project_5/playbook_1.yml

---
- name: Configuring NFS server
  hosts: Router
  become: true 

# Определяем необзодимые переменные
  vars:
    share_folder: /opt/data
    access_rights: '0777'
    access_network_share: '192.168.100.0/24'

  tasks:
# Назначаем права на директорию которая будет использоваться для общего доступа
    - name: 'Setting full read and write access on {{ share_folder }}'
      file:
        path: '{{ share_folder }}'
        state: directory
        mode: '{{ access_rights }}'

# Настраиваем NFS сервер для RTR1
    - name: Configuring NFS server on RTR1
      block: 
        - name: Install NFS packakes on RTR1
          dnf:
            name: 
              - nfs-utils
              - nfs4-acl-tools
            state: present

        - name: Configuring exports file on RTR1
          lineinfile:
            line: '{{ share_folder }} {{ access_network_share }}(rw,insecure,nohide,all_squash,anonuid=1000,anongid=1000,no_subtree_check)'
            state: present
            path: /etc/exports
          notify:
            - Restarted nfs-server
      when:
        - ansible_os_family == 'REDOS'

# Настраиваем NFS сервер для RTR2
    - name: Configuring NFS server on RTR2
      block:
        - name: Install NFS server on RTR2
          apt:
            name: nfs-kernel-server
            state: present
            update_cache: true

        - name: Configuring exports file on RTR2
          lineinfile:
            line: '{{ share_folder }} {{ access_network_share }}(rw,nohide,all_squash,anonuid=1000,anongid=1000,no_subtree_check)'
            state: present
            path: /etc/exports
          notify:
            - Restarted nfs-kernel-server
      when:
        - ansible_os_family == 'Astra Linux (Orel)'

# Опционально, публичный вариант данного задания не запрещает использования в данном playbook модуль command
    - name: Re-export the share
      command: 
        cmd: exportfs -rav

# Перезапускаем и добавляем в автозагрузку NFS сервера
  handlers:
    - name: Restarted nfs-server
      service:
        name: nfs-server
        state: restarted
        enabled: true

    - name: Restarted nfs-kernel-server 
      service:
        name: nfs-kernel-server
        state: restarted
        enabled: true

Запускаем playbook

ansible-playbook project_5/playbook_1.yml

img

14. Настройка NFS клиента
a) Настройте NFS клиента средствами Ansible для группы серверов Server
  • В качестве плейбука используйте файл playbook_2.yml в каталоге project_5

  • Плейбук должен содержать действия по настройке NFS клиента

    • На SRV1 настройте автоматическое подключение NFS каталога

      • Используйте локальную точку монтирования /mnt/data

      • Используйте общую папку на RTR1

    • На SRV2 настройте автоматическое подключение NFS каталога

      • Используйте локальную точку монтирования /mnt/data

      • Используйте общую папку на RTR2

CLI1

Всё из под пользователя «user»

vi project_5/playbook_2.yml

---
- name: Configuring NFS client on group Server
  hosts: Server
  become: true

# Задаём необзодимые переменные
  vars:
    mount_point: /mnt/data
    access_rights_mount_point: '0777'
    nfs_share_folder_path: /opt/data
    srv1_nfs_server: '192.168.100.254'
    srv2_nfs_server: '192.168.100.253'

  tasks:
# Устанавливаем пакет nfs-common
    - name: Install client nfs
      apt:
        name: nfs-common
        state: present
        update_cache: true

# Создаём точку монтирования
    - name: 'Create mount point {{ mount_point }}'
      file:
        path: '{{ mount_point }}'
        state: directory
        mode: '{{ access_rights_mount_point }}'

# Добавляем запись в fstab, чтобы SRV1 монтировал общий ресурс с RTR1
    - name: Automatic mounting SRV1
      lineinfile:
        path: /etc/fstab
        line: '{{ srv1_nfs_server }}:{{ nfs_share_folder_path }} {{ mount_point }} nfs rw,sync,hard,intr 0 0'
        state: present
      when:
        - ansible_hostname == 'srv1'

# Добавляем запись в fstab, чтобы SRV2 монтировал общий ресурс с RTR2
    - name: Automatic mounting SRV2
      lineinfile:
        path: /etc/fstab
        line: '{{ srv2_nfs_server }}:{{ nfs_share_folder_path }} {{ mount_point }} nfs rw,sync,hard,intr 0 0'
        state: present
      when:
        - ansible_hostname == 'srv2'

# Перезагружаем для применения автомонтирования
    - name: Reboot
      reboot:

Запускаем playbook

ansible-playbook project_5/playbook_2.yml

img

Проверяем с SRV1 и SRV2

img

Модуль Г. (Обеспечение отказоустойчивости)
Задания:
15. Настройка отказоустойчивости динамической трансляции адресов
a) Группа серверов VRRP включает в себя маршрутизаторы RTR1 и RTR2
b) Создайте группу серверов Keepalived со следующими параметрами:
  • Имя группы – NAT

  • Иерархия группы — RTR1 -> RTR2

  • Виртуальный адрес группы — последний адрес сети

c) Обеспечьте автозапуск конфигурации
d) Переконфигурируйте сетевые настройки SRV1 и SRV2 c учетом настроек отказоустойчивости динамической трансляции адресов

Установим пакет keepalived

RTR1

dnf install -y keepalived
RTR2

apt install -y keepalived

Описываем конфигурационный файл keepalived.conf

RTR1

vi /etc/keepalived/keepalived.conf

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance NAT {
    state MASTER
    interface ens34
    virtual_router_id 10
    priority 100
    advert_int 1
    virtual_ipaddress {
	192.168.100.254/24
    }
}

где:

  • global_defs: Этот блок используется для задания глобальных настроек Keepalived.

  • router_id LVS_DEVEL: Этот параметр устанавливает идентификатор маршрутизатора (Router ID) для Keepalived. Идентификатор маршрутизатора используется для уникальной идентификации маршрутизатора в группе. В данном случае, идентификатор маршрутизатора установлен как «LVS_DEVEL».

  • vrrp_instance NAT: Это блок, который определяет настройки для конкретной группы VRRP. В данной конфигурации создается группа VRRP с именем «NAT».

  • state MASTER: Указывает, что этот маршрутизатор (или Keepalived инстанс) является активным мастером (первичным).

  • interface ens34: Здесь указывается интерфейс, к которому привязана эта группа VRRP.

  • virtual_router_id 10: Устанавливает уникальный идентификатор группы VRRP. Этот идентификатор должен быть одинаковым на всех маршрутизаторах, участвующих в группе.

  • priority 100: Устанавливает приоритет этого маршрутизатора в группе VRRP. Маршрутизатор с более высоким приоритетом станет мастером (активным) при старте Keepalived или после восстановления.

  • advert_int 1: Устанавливает интервал отправки объявлений VRRP в секундах. В данном случае, объявления будут отправляться каждую секунду.

  • virtual_ipaddress: Здесь указывается виртуальный IP-адрес, который будет назначен группе VRRP. Этот IP-адрес будет переноситься между мастером и резервными маршрутизаторами в случае сбоя.

RTR2

vi /etc/keepalived/keepalived.conf

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance NAT {
    state BACKUP
    interface eth1
    virtual_router_id 10
    priority 50
    advert_int 1
    virtual_ipaddress {
	192.168.100.254/24
    }
}

Запускаем на RTR1 и RTR2 keepalived

systemctl enable --now keepalived

Проверяем:

img

Видно, что на RTR1 появился виртуальный адрес, в случае если выполнить остановку службы keepalived, то видно что роль MASTER переходит к RTR2

После того как роль MASTER переходит к RTR2, виртуальный IP адрес на RTR1 изчезает

При возобнавлении работы службы keepalived на RTR1 видим что RTR2 переходит из роли MASTER в BACKUP, а на RTR1 возвращается виртуальный IP адрес

img

На SRV1 и SRV2 выполняем переконфигурирование шлюза по умолчанию и назначаем в качестве адреса шлюза — виртуальный адрес 192.168.100.254

img

16. Настройка отказоустойчивости перенаправляющего DNS
a) Группа серверов VRRP включает в себя маршрутизаторы RTR1 и RTR2
b) Создайте группу серверов Keepalived со следующими параметрами:
  • Имя группы – DNS

  • Иерархия группы — RTR1 -> RTR2

  • Виртуальный адрес группы — последний адрес сети

c) Обеспечьте автозапуск конфигурации
d) Внесите изменения в настройки перенаправляющих DNS с учетом работы keepalived

Добавляем в конфигурационный файл keepalived.conf группу для перенаправляющего DNS

RTR1

vi /etc/keepalived/keepalived.conf

...
vrrp_instance DNS {
    state MASTER
    interface ens34
    virtual_router_id 20
    priority 100
    advert_int 1
    virtual_ipaddress {
	192.168.100.254/24
    }
}
RTR2

vi /etc/keepalived/keepalived.conf

...
vrrp_instance DNS {
    state BACKUP
    interface eth1
    virtual_router_id 20
    priority 50
    advert_int 1
    virtual_ipaddress {
	192.168.100.254/24
    }
}

На устройствах RTR1 и RTR2 перезапускаем службу keepalived

systemctl restart keepalived

На RTR1 и RTR2 в конфигурационных файлах перенаправляющего DNS сервера необходимо указать, что теперь мы слушаем запросы только с localhost и только с виртуального адреса — 192.168.100.254

Для RTR1 — /etc/named.conf

Для RTR2 — /etc/bind/named.conf.options

img

Выполнить перезагрузку службы bind

Для RTR1 — systemctl restart named

Для RTR2 — systemctl restart bind9

Также на SRV1 и SRV2 переконфигурируем адрес DNS сервера на адрес 192.168.100.254 после чего проверяем:

img

17. Настройка отказоустойчивости сервера времени
a) Группа серверов VRRP включает в себя маршрутизаторы RTR1 и RTR2
b) Создайте группу серверов Keepalived со следующими параметрами:
  • Имя группы – NTP

  • Иерархия группы – RTR1 -> RTR2

  • Виртуальный адрес группы — последний адрес сети

c) Обеспечьте автозапуск конфигурации

Добавляем в конфигурационный файл keepalived.conf группу для NTP

RTR1

vi /etc/keepalived/keepalived.conf

...
vrrp_instance NTP {
    state MASTER
    interface ens34
    virtual_router_id 30
    priority 100
    advert_int 1
    virtual_ipaddress {
	192.168.100.254/24
    }
}
RTR2

vi /etc/keepalived/keepalived.conf

...
vrrp_instance NTP {
    state BACKUP
    interface eth1
    virtual_router_id 30
    priority 50
    advert_int 1
    virtual_ipaddress {
	192.168.100.254/24
    }
}

На устройствах RTR1 и RTR2 перезапускаем службу keepalived

systemctl restart keepalived
18. Настройка балансировки и отказоустойчивости DHCP сервера
a) Используйте внутренние сервисы для управления коллективной работой службы DHCPD (failover)
b) Используйте следующие роли для DHCP серверов:
  • RTR1 – primary

  • RTR2 – secondary

c) Используйте следующую конфигурацию взаимодействия DHCP серверов
  • Индекс разделения работы между DHCP серверами – 128

d) Переконфигурируйте DHCP сервера для работы failover с учетом отказоустойчивости NAT, DNS, NTP и FreeIPA
  • Имя пира – DHCP

  • Выдаваемые адреса:

    • Первый адрес – первый адрес сети плюс 5

    • Последний адрес – последний адрес сети минус 5

  • Адрес NTP-сервера – адреса доменных NTP серверов

e) Переконфигурируйте сетевые настройки на CLI1 и CLI2 для получения сетевых параметров по DHCP
  • Проверьте работоспособность DHCP failover на клиентах

f) Клиенты CLI1 и CLI2 должны получать параметры NTP сервера по DHCP
  • Используйте NTP клиент на базе Chrony

  • Используйте часовой пояс Europe/Moscow

RTR1

Модифицируем ранее созданный конфигурационный файл DHCP — сервера «/etc/dhcp/dhcpd.conf»:

В файле «/etc/dhcp/dhcpd.conf» — будем хранить только настройки отказоустойчивости;

Поскольку всё кроме настройки отказоустойчивости на RTR1 и RTR2 будет одинаковым — вынесем конфиги в отдельную дирректорию, затем эту дирректорию можно будет спокойно копировать на второй сервер

mkdir /etc/dhcp/dhcpd.conf.d

cat /etc/dhcp/dhcpd.conf | tee -a /etc/dhcp/dhcpd.cond.d/subnets.conf

Для того чтобы основной файл /etc/dhcp/dhcpd.conf — ссылался на то что лежит в дирректории /etc/dhcp/dhcpd.conf.d/, сотрём в нём всё и пропишим опции include

echo include \"/etc/dhcp/dhcpd.conf.d/subnets.conf\"\; > /etc/dhcp/dhcpd.conf

Теперь прописываем опции касающиеся отказоустойчивости в «/etc/dhcp/dhcpd.conf» выше опций include

vi /etc/dhcp/dhcpd.conf

failover peer "DHCP" {
        primary;                          # Основной сервер
        address 192.168.100.253;          # Адрес текущего сервера, который будет использоваться для обмена информацией между DHCP - серверами
        port 647;                         # Порт на котором будет слушать этот сервер
        peer address 192.168.100.252;     # Адрес другого сервера (secondary)
        peer port 847;                    # Порт другого сервера (secondary)
        max-response-delay 60;            # Сколько секунд прождать, чтобы посчитать второй сервер недоступным
        max-unacked-updates 10;           # Сколько максимум пакетов bind-update может отправить второй сервер
        mclt 3600;                        # Максимальное время на которое одному серверу разрешено время lease, не сказав об этом второму серверу (только на primary указывается)
        split 128;                        # Распределение адресов 50/50% (только на primary указывается)
        load balance max seconds 3;       # Если пришёл DHCPDISCOVER или DHCOREQUEST и в течение 3-х секунд второй сервер не ответил, хотя очередь была его, то балансировка игнорируется и клиенту отвечает этот сервер
}

include "/etc/dhcp/dhcpd.conf.d/subnets.conf";

Необходимо указать failover peer для subnet-ов, в файле «/etc/dhcp/dhcpd.conf.d/subnets.conf» и параметры согласно заданию

vi /etc/dhcp/dhcpd.conf.d/subnets.conf

option domain-name "company.prof";
option domain-name-servers 192.168.100.2, 192.168.100.3;

default-lease-time 6000;
max-lease-time 72000;

authoritative;

subnet 192.168.15.0 netmask 255.255.255.0 {}

subnet 192.168.100.0 netmask 255.255.255.0{
  option ntp-servers 192.168.100.2, 192.168.100.3;
  option routers 192.168.100.254;
  pool {
        failover peer "DHCP";
        range 192.168.100.6 192.168.100.249;
  }
}

Перезагружаем DHCP сервер

systemctl restart dhcpd

Проверяем:

img

RTR2

Аналогичным образом настраиваем RTR2 только в качестве SECONDARY

mkdir /etc/dhcp/dhcpd.conf.d

cat /etc/dhcp/dhcpd.conf | tee -a /etc/dhcp/dhcpd.cond.d/subnets.conf

echo include \"/etc/dhcp/dhcpd.conf.d/subnets.conf\"\; > /etc/dhcp/dhcpd.conf

Редактируем параметры в /etc/dhcp/dhcpd.conf на DHCP secondary — для настройки этого сервера как secondary

vi /etc/dhcp/dhcpd.conf

failover peer "DHCP" {
	secondary;
	address 192.168.100.252;
	port 847;
	peer address 192.168.100.253;
	peer port 647;
	max-response-delay 60;
	max-unacked-updates 10;
	load balance max seconds 3;
}

include "/etc/dhcp/dhcpd.conf.d/subnets.conf";

Файл «/etc/dhcp/dhcpd.conf.d/subnets.conf» должен быть точно таким же как и на RTR1

vi /etc/dhcp/dhcpd.conf.d/subnets.conf

option domain-name "company.prof";
option domain-name-servers 192.168.100.2, 192.168.100.3;
 
default-lease-time 6000;
max-lease-time 72000;

authoritative;

subnet 192.168.15.0 netmask 255.255.255.0 {}

subnet 192.168.100.0 netmask 255.255.255.0{
  option ntp-servers 192.168.100.2, 192.168.100.3;
  option routers 192.168.100.254;
  pool {
	failover peer "DHCP";
	range 192.168.100.6 192.168.100.249;
  }
}

Перезапускаем DHCP сервер

systemctl restart isc-dhcp-server

Проверяем

img

Проверяем функциональность работы DHCP failover Включаем CLI1 и CLI2 и получаем настройки сетевых параметров по DHCP и проверяем журналы

RTR1 — на запрос получения IP адреса 192.168.100.247 передал его на peer, тоесть на RTR2

img

RTR2 — выдал IP адрес 192.168.100.247, а запрос на получения IP адреса 192.168.100.128 передал его на peer, тоесть на RTR1

img

На клиентах также необходимо установить chrony чтобы успешно синхронизировать время с доменными NTP серверами

CLI1

dnf install -y chrony

systemctl enable --now chronyd

img

CLI2

apt-get install -y chrony

systemctl enable --now chronyd

img

img

19. Настройка отказоустойчивой системы централизованного управления авторизацией пользователей
a) Разверните систему централизованного управления авторизацией пользователей
  • Разверните домен на базе FreeIPA

    • Основной сервер — SRV1

    • Дополнительный сервер (реплика) — SRV2

  • Имя домена — company.prof

  • DNS сервер — интегрированный с IPA

    • Запросы, которые выходят за рамки зоны, пересылаются на виртуальный адрес перенаправляющего DNS-сервера

    • Обратная зона — согласно топологии

    • Все устройства сети должны быть доступны по имени

  • CA сервер — интегрированный с IPA

    • Клиенты домена должны доверять центру сертификации

  • NTP сервер — интегрированный с IPA

    • NTP сервер должен синхронизировать время с отказоустойчивым сервером времени

  • Пароль администратора домена — P@ssw0rd

b) Настройте систему централизованного управления авторизацией пользователей
  • Создайте пользователей user1, user2 и mon с паролем P@ssw0rd,

  • Пользователей user1, user2 включите в группу prof

  • Пользователя mon включите в группу admins

  • Создайте правило admin_sudo, разрешающее группе пользователей admins использовать sudo на всех компьютерах в домене без ограничения.

  • Обеспечьте доменному пользователю admin, после успешной авторизации на клиентах, возможность заходить в интерфейс FreeIPA без использования пароля. Для аутентификации и авторизации используйте Kerberos.

c) Клиентов CLI1 и CLI2 введите в домен FreeIPA
d) Настройте подключение к системе централизованного мониторинга с использованием FreeIPA
  • Используйте LDAP в качестве аутентификацию по умолчанию

  • Используйте доменного пользователя mon

SRV1

Установим необходимый пакет

apt-get install astra-freeipa-server -y

Инициализация сервера FreeIPA с помощью инструмента командной строки astra-freeipa-server может быть осуществлена командой

astra-freeipa-server -d company.prof -n srv1 -p P@ssw0rd -o

img

Проверка запущенных служб и ролей FreeIPA

ipactl status

img

С клиента проверяем доступ к веб-интерфейса для управления доменом

img

img

Подготавливаем основной контроллер домена для добавления репликации

В веб-интерфейсе управления необходимо в зоне обратного просмотра создать запись для SRV2

img

img

img

Проверяем

img

SRV2

В качестве DNS сервера необходимо указать IP адрес SRV1

vi /etc/resolv.conf

img

Настроить разрешение имен

vi /etc/hosts

img

Установить инструменты для запуска и настрой

apt-get install -y astra-freeipa-{server,client}

Установить клиента FreeIPA, указав имя домена к которому нужно подключаться (команда ipa-replica-install может сама установить клиента FreeIPA, однако рекомендуется установить клиента используя инструмент astra-freeipa-client, который автоматически выполняет дополнительные настройки)

astra-freeipa-client -d company.prof

img

Проверим

img

Установить реплику (после запуска команды нужно ввести пароль администратора домена)

astra-freeipa-replica --dogtag

img

Проверка успеха запуска

Сервер-реплика должен появиться в группе серверов ipaservers (перед выполнением команды следует получить билет Kerberos)

kinit admin

ipa hostgroup-show ipaservers

img

Проверяем

img

img

Настраиваем, чтобы запросы которые выходят за рамки зоны, пересылаются на виртуальный адрес перенаправляющего DNS-сервера

img

Проверяем

img

Настраиваем DNS записи типа A и PTR для всех устройств

img

img

Аналогичным образом добавляем RTR2

Проверяем

img

img

img

Настраиваем динамическое обновление DNS клиентских машин

SRV1

Создать ключ для сервера DHCP. Ключ будет автоматически сохранен в файле /etc/bind/rndc.key

rndc-confgen -a -r /dev/random -b 256

В файл конфигурации сервера DNS /etc/bind/named.conf после раздела «options» добавить строчку

include "/etc/bind/rndc.key";

Также необходимо передать данный файл «/etc/bind/rndc.key» на SRV2 и добавить строку в файл конфигурации сервера DNS /etc/bind/named.conf

Также передать «/etc/bind/rndc.key» на RTR1 и RTR2 в /etc

Запустить WEB-интерфейс управления сервера FreeIPA и в свойствах необходимой прямой зоны в разделе «Политика обновления BIND» добавить запись:

grant rndc-key wildcard * ANY;

img

В свойствах соответствующей обратной зоны в том же разделе «Политика обновления BIND» добавить запись:

grant rndc-key wildcard * PTR;

img

Сохраняем и заставляем сервер имен перечитать свою конфигурацию:

rndc reload

перезапустить службы FreeIPA

ipactl restart
RTR1

Добавляем в /etc/dhcp/dhcpd.conf.d/subnets.conf необходимую конфигурацию для работы с DNS на SRV1 и SRV2 c целью динамического обновления записей для клиентов

vi /etc/dhcp/dhcpd.cond.d/subnets.conf

В конечном итоге файл должен выглядеть одинагово как на RTR1 так и на RTR2

ddns-updates on;
ddns-update-style interim;
include "/etc/rndc.key";
update-static-leases on;

ddns-update-style interim;
update-static-leases on;

option domain-name "company.prof";
option domain-name-servers 192.168.100.2, 192.168.100.3;
 
default-lease-time 6000;
max-lease-time 72000;

authoritative;

subnet 192.168.15.0 netmask 255.255.255.0 {}

subnet 192.168.100.0 netmask 255.255.255.0{
  option ntp-servers 192.168.100.2, 192.168.100.3;
  option routers 192.168.100.254;
  pool {
	failover peer "DHCP";
	range 192.168.100.6 192.168.100.249;
  }
}

zone company.prof. {
	primary 192.168.100.2, 192.168.100.3;
	key "rndc-key";
}

zone 100.168.192.in-addr.arpa. {
	primary 192.168.100.2, 192.168.100.3;
	key "rndc-key";
}

P.S. — файл сгенерированный на SRV1 /etc/bind/rndc.key должен быть передан на DHCP сервера (RTR1, RTR2) в каталог /etc

На RTR2 конфигурационный файл аналогичен RTR1

Перезапускаем DHCP сервера

RTR1

systemctl restart dhcpd
RTR2

systemctl restart isc-dhcp-server

Включаем CLI1 и CLI2 и проверяем на DHCP серверах журналы

img

img

Проверяем через веб-интерфейс freeipa

img

img

Проверяем доступ всех устройств по имени

img

Для того чтобы клиенты доверяли Центру Сертификации интегрированному с IPA неободимо передать корневой сертификат который расположен на SRV1 по пути /etc/ipa/ca.crt

Передаём данный сертификат на клиентов, а с клиентов выполняем следующие действия

Например

SRV1

scp /etc/ipa/ca.crt cli1@:~/

scp /etc/ipa/ca.crt cli2@:~/
CLI1

Действия выполняются от суперпользователя

mv /home/user/ca.crt /etc/pki/ca-trust/source/anchrors

update-ca-trust extract

Проверяем, посредством доступа к веб-интерфейсу freeipa, но уже с корректным сертификатом

img

CLI2

Действия выполняются от суперпользователя

mv /home/user/ca.crt /usr/local/share/ca-certificates

update-ca-certificates

Проверяем, посредством доступа к веб-интерфейсу freeipa, но уже с корректным сертификатом

img

Через веб-интерфейс создаём необходимых пользователей и групп

Создаём группа prof

img

img

Создаём пользователя user1

img

Создаём пользователя user2

img

Создаём пользователя mon

img

Добавляем пользователей user1 и user2 в группу prof

img

img

Добавляем пользователя mon в группу admins

img

img

Создаём правило «admin_sudo»

img

img

img

img

Или припомощи команд на SRV1 из под пользователя admin

ipa sudorule-add admin_sudo --cmdcat=all

ipa sudorule-add-user admin_sudo --groups=admins

ipa sudorule-add-host admin_sudo --hosts=ALL

img

Введём CLI1 и CLI2 в домен

CLI1

img

img

img

img

CLI2

Установим пакет fly-admin-freeipa-client

apt-get install -y fly-admin-freeipa-client

img

img

img

img