Hightech 2023

Модуль Б. (Настройка технических и программных средств информационно-коммуникационных систем)

Топология:

img

Название устройства ОС

RTR-HQ

Альт Сервер 10

RTR-BR

Альт Сервер 10

SRV-HQ

Альт Сервер 10

SRV-BR

Альт Сервер 10

CLI-HQ

Альт Рабочая станция 10

CLI-BR

Альт Рабочая станция 10

SW-HQ

Альт Сервер 10

SW-BR

Альт Сервер 10

PVE1-BR

Альт Сервер 10

PVE2-BR

Альт Сервер 10

CICD-HQ

Альт Сервер 10

K8S-MASTER-HQ

Debian 11

WORKER1-HQ

Debian 11

WORKER2-HQ

Debian 11

K8S-WORKER1-HQ

Debian 11

K8S-WORKER2-HQ

Debian 11

Задания:

Базовая настройка
  1. Настройте имена устройств согласно топологии

    • Используйте полное доменное имя

на всех ВМ выполняем следующую команду:

hostnamectl set-hostname <name>.company.prof;exec bash

где:

  • <name> — имя ВМ в соответствие с топологией, например:

    • rtr-hq.company.prof;

    • rtr-br.company.prof и т.д.

  • company.prof — доменное имя

Проверить:

hostname -f

RTR-HQ:

img

RTR-BR:

img

  1. Сконфигурируйте адреса устройств на свое усмотрение. Для офиса HQ выделена сеть 10.0.10.0/24, для офиса BR выделена сеть 10.0.20.0/24. Данные сети необходимо разделить на подсети для каждого vlan.

Далее в задании на этапе настройки коммутации, указано явное требование: «Количество хостов в каждой подсети не должно превышать 30-ти», отсюда разбиение на подсети для каждого vlan будет следующее:

HQ:

Имя подсети Подсеть Диапазон адресов (узловых)

vlan100

10.0.10.0/27

10.0.10.1 — 10.0.10.30

vlan200

10.0.10.32/27

10.0.10.33 — 10.0.10.62

vlan300

10.0.10.64/27

10.0.10.65 — 10.0.10.94

BR:

Имя подсети Подсеть Диапазон адресов (узловых)

vlan100

10.0.20.0/27

10.0.20.1 — 10.0.20.30

vlan200

10.0.20.32/27

10.0.20.33 — 10.0.20.62

vlan300

10.0.20.64/27

10.0.20.65 — 10.0.20.94

vlan400

10.0.20.96/27

10.0.20.97 — 10.0.20.126

а также таблица адресации устройств:

Имя ВМ Имя подсети IP-адрес

RTR-HQ

ISP

11.11.11.11/24

vlan100

10.0.10.1/27

vlan200

10.0.10.33/27

vlan300

10.0.10.65/27

RTR-BR

ISP

22.22.22.22/24

vlan100

10.0.20.1/27

vlan200

10.0.20.33/27

vlan300

10.0.20.65/27

vlan400

10.0.20.97/27

SW-HQ

vlan300

10.0.10.66/27

SW-BR

vlan300

10.0.20.66/27

SRV-HQ

vlan100

10.0.10.2/27

SRV-BR

vlan100

10.0.20.2/27

CLI-HQ

vlan200

DHCP

CLI-BR

vlan200

DHCP

CI-CD

vlan100

10.0.10.3/27

K8S-MASTER-HQ

vlan100

10.0.10.4/27

K8S-WORKER1-HQ

vlan100

10.0.10.5/27

K8S-WORKER2-HQ

vlan100

10.0.10.6/27

WORKER1-HQ

vlan100

10.0.10.7/27

WORKER2-HQ

vlan100

10.0.10.8/27

PVE1-BR

vlan400

10.0.20.98/27

PVE2-BR

vlan400

10.0.20.99/27

На данном этапе назначим IP-адреса на все ВМ за исключением: CLI-HQ, CLI-BR, SW-HQ, SW-BR.

RTR-HQ:

  • ens33 — интерфейс в сторону ISP;

  • ens34 — интерфейс в сторону SW-HQ;

Настраиваем подключение к ISP, для доступа к настоящей сети Интернет:

  • в качестве сетевой подсистемы используется — etcnet;

  • для того чтобы задать статические параметры в файле по пути — /etc/net/ifaces/<int_name>/options должны быть следующие параметры:

TYPE=eth
DISABLED=no
NM_CONTROLLED=no
BOOTPROTO=static
CONFIG_IPV4=YES
  • задаём IP-адрес из сети ISP (11.11.11.0/24)

echo 11.11.11.11/24 > /etc/net/ifaces/ens33/ipv4address
  • задаём IP-адрес шлюза по умолчанию (IP-адрес ISP):

echo default via 11.11.11.1 > /etc/net/ifaces/ens33/ipv4route
  • задаём IP-адрес DNS сервер (времменно, для установки пакетов и доступа в Интернет):

    • в качестве DNS-сервера может выступать также ISP, в этом случае указывается его IP-адрес как адрес DNS сервера;

echo nameserver 77.88.8.8 > /etc/net/ifaces/ens33/resolv.conf
  • включаем перессылку пакетов (forwarding):

sed -i "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g" /etc/net/sysctl.conf

Создаём подинтерфейсы (для дальнейшей маршрутизации между vlan, после настройки коммутации):

  • создаём директорию в /etc/net/ifaces для физического интерфейса ens34:

mkdir /etc/net/ifaces/ens34

cp /etc/net/ifaces/ens33/options /etc/net/ifaces/ens34
  • далее при помощи цикла for создаём необходимую структуру каталогов в /etc/net/ifaces и описываем файл options для создаваемых подинтерфейсов:

for i in 100 200 300; do
mkdir /etc/net/ifaces/ens34.$i;
cat <<EOF > /etc/net/ifaces/ens34.$i
TYPE=vlan
HOST=ens34
VID=$i
BOOTPROTO=static
EOF;
done
  • назначаем IP-адреса на подинтерфейсы:

echo 10.0.10.1/27 > /etc/net/ifaces/ens34.100/ipv4address

echo 10.0.10.33/27 > /etc/net/ifaces/ens34.200/ipv4address

echo 10.0.10.65/27 > /etc/net/ifaces/ens34.300/ipv4address
  • включаем модуль ядра 8021q:

modprobe 8021q
  • перезапускаем службу etcnet:

systemctl restart network

Проверяем:

  • структура каталогов и файлов в /etc/net/ifaces/ получилась следующая:

img

  • подключение к ISP и доступ к сети Интернет:

img

  • наличие тэга vlan на подинтерфейсах:

img

  • итог:

img

RTR-BR:

настройка аналогична RTR-HQ (за исключением добавления vlan400 для PVE):

  • ens33 — интерфейс в сторону ISP;

  • ens34 — интерфейс в сторону SW-HQ;

Результат настройки RTR-BR получается следующий:

img

SRV-HQ:

  • на данном этапе задаём пока только IP-адрес и шлюз по умолчанию:

echo 10.0.10.2/27 > /etc/net/ifaces/ens33/ipv4address

echo default via 10.0.10.1 > /etc/net/ifaces/ens33/ipv4route

systemctl restart network

Проверяем:

img

SRV-BR:

Настройка аналогична SRV-HQ за исключением 3-го октета:

img

CI-CD:

Настройка аналогична SRV-HQ:

img

K8S-MASTER-HQ:

Так как данная ВМ на базе Debian 11 правим конфигурационный файл /etc/network/interfaces

  • приводим его к следующему виду:

vi /etc/network/interfaces

img

  • перезапускаемслужбу networking:

systemctl restart networking

Проверяем:

img

K8S-WORKER1-HQ | K8S-WORKER2-HQ | WORKER1-HQ | WORKER2-HQ:

Настраиваются аналогично K8S-MASTER-HQ за исключением увеличения (+1) в последнем октете:

img

img

img

img

  1. На SRV-HQ и SRV-BR, создайте пользователя sshuser с паролем P@ssw0rd

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

  • Запретите парольную аутентификацию. Аутентификация пользователя sshuser должна происходить только при помощи ключей

  • Измените стандартный ssh порт на 2023

  • На CLI-HQ сконфигурируйте клиент для автоматического подключения к SRV-HQ и SRV-BR под пользователем sshuser. При подключении автоматически должен выбираться корректный порт. Создайте пользователя sshuser на CLI-HQ для обеспечения такого сетевого доступа.

SRV-HQ | SRV-BR:

  • создаём пользователя sshuser:

useradd sshuser -m -U -s /bin/bash

где:

  • -m — если домашнего каталога пользователя не существует, то он будет создан

  • -U — создаётся группа с тем же именем, что и у пользователя, и добавляет пользователя в эту группу

  • -s /bin/bash — задаётся имя регистрационной оболочки пользователя

  • создаём пароль для пользователя sshuser:

passwd sshuser
  • после чего дважды задаём необходимы пароль (P@ssw0rd) для пользователя:

img

Проверяем:

  • выполняем вход из под созданного пользователя:

img

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

В Альт sudo используется фреймворк control, который задаёт права на выполнение команды sudo. С его помощью можно дать или отнять права на использование команды sudo.

Штатное состояние политики:

img

wheelonly — только пользователи из группы wheel имеют право получить доступ к команде /usr/bin/sudo

  • добавляем пользователя sshuser в группу wheel:

usermod -aG wheel sshuser

где:

  • -a — добавляет пользователя в дополнительную группу(ы). Используется только вместе с параметром -G.

Проверить:

img

  • настраиваем sudo, правим конфигурационный файл /etc/sudoers:

vim /etc/sudoers

1 — разрешаем использовать sudo для всех пользователей входящих в группу wheel:

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

2 — разрешаем использовать sudo пользователю sshuser без дополнительной аутентификации:

  • добавляем следующую строку;

img

Проверить:

Выполнить вход под пользователем sshuser и попытаться выполнить sudo -i или иную другую команду требующую повышения привелегий до root:

  • SRV-HQ:

img

  • SRV-BR:

img

Вся последующая настройка SSH будет выполнена позднее после получения необходимых сетевых параметров для CLI-HQ по DHCP, а также сгенерированы и переданы необходимые ключи

Настройка дисковой подсистемы
  1. На SRV-HQ настройте зеркалируемый LVM том

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

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

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

SRV-HQ:

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

img

  • создаём раздел на диске sdb

gdisk /dev/sdb

1 — Создаём пустую GUID partition table — нажимаем «o» -> «y», чтобы удалить все разделы и создать GPT запись;

2 — Создаём первый и единственный раздел на весь диск. Нажимаем «n» -> 1 -> ‘enter’ -> ‘enter’ -> «8e00» — указываем, что данный раздел относится к LVM;

3 — «p» — Теперь можно просмотреть то, что получилось.

img

после чего нажимаем «w» -> «Y» — подтверждаем и записываем изменения на диск:

img

Проверить:

img

  • аналогичным образом создаём раздел на диске sdc:

Проверить:

img

  • Инициализируем диски для работы с LVM:

pvcreate /dev/sd{b,c}1

где:

/dev/sd{b,c}1 — это разделы блочных устройств: sdb и sdc;

  • Создаём и добавляем диски в группу vg01:

vgcreate vg01 /dev/sd{b,c}1

где:

vg01 — имя группы; /dev/sd{b,c}1 — это разделы блочных устройств: sdb и sdc, ранее проинициализированные для работы с LVM;

  • Создаём логический том в режиме зеркалирования (raid1):

lvcreate -l 100%FREE -n lvmirror -m1 vg01

где:

-l 100%FREE — используется все свободное пространство группы vg01;

-n lvmirror — задаётся имя логическому тому «lvmirror»;

-m1 — создает зеркальный логический том с «зеркальными» копиями;

vg01 — имя группы созданной ранее, в которой создаётся логический том с именем lvmirror.

img

Проверить:

img

  • создаём файловую систему на логическом томе lvmirror:

mkfs.ext4 /dev/vg01/lvmirror
  • Монтируем логический диск в «/opt/data»:

создаём директорию для монтирования:

mkdir /opt/data

добавляем запись в файл /etc/fstab для автоматического монтирования логического тома:

echo "UUID=$(blkid -s UUID -o value /dev/vg01/lvmirror) /opt/data ext4 defaults 1 2" | tee -a /etc/fstab

выполняем монтирование:

mount -av

img

Проверить:

img

  1. На SRV-BR сконфигурируйте stripped LVM том

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

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

  • Обеспечьте шифрование тома средствами dm-crypt. Диск должен монтироваться при загрузке ОС без запроса пароля.

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

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

img

  • Создаём разделы на двух подключённых дисках «sdb и sdc» аналогично как и на SRV-HQ — через gdisk

Результат:

img

  • Аналогично SRV-HQ добавляем диски в LVM и создаём группу из двух дисков:

img

  • Создаём striped LVM том с именем «lvstriped:

lvcreate -i2 -l 100%FREE -n lvstreped vg01

где:

-i2 — количество полосок (для полосок необходимо использовать диск);

-l 100%FREE — используется все свободное пространство группы vg01;

-n lvstreped — задаётся имя логическому тому «lvstreped»;

vg01 — имя группы созданной ранее, в которой создаётся логический том с именем lvstreped.

Проверить:

img

  • создаём файловую систему на логическом томе lvstreped:

mkfs.ext4 /dev/vg01/lvstreped
  • Обеспечиваем шифрование тома средствами dm-crypt:

Создаём ключевой файл:

dd if=/dev/urandom of=/etc/keys/enc.key bs=1 count=4096

Выполняем шифрование тома «lvstreped» с использованием ключевого файла вместо пароля, указывая путь до логического тома и путь до созданного ключа:

cryptsetup luksFormat /dev/vg01/lvstreped /etc/keys/enc.key

после ввода данной команды необходимо подтверждение — «YES«:

img

  • Далее необходимо открыть только что зашифрованный логический том при помощи созданного ключа, чтобы он появился в списке блочных устройств в выводе команды «lsblk«:

cryptsetup luksOpen -d /etc/keys/enc.key /dev/vg01/lvstreped lvstreped

где:

-d /etc/keys/enc.key — путь до ключа, которым был зашифрован логический том lvstreped;

/dev/vg01/lvstreped — путь до логического тома, с которого необходимо снять шифрование;

lvstreped — произвольное имя, которое будет назначено для разшифрованного тома, и должно появиться в выводе команды lsblk.

img

  • Задаём файловую систему на только расшифрованном томе который находится в директории /dev/mapper/:

mkfs.ext4 /dev/mapper/lvstreped
  • Монтируем логический диск в «/opt/data»:

создаём директорию для монтирования:

mkdir /opt/data

добавляем запись в файл /etc/fstab для автоматического монтирования логического тома:

echo "UUID=$(blkid -s UUID -o value /dev/mapper/lvstreped) /opt/data ext4 defaults 0 0" | tee -a /etc/fstab

P.S: UUID указывается расшифрованного (открытого) логического тома.

выполняем монтирование:

mount -av

img

  • Обеспечиваем монтирование логического тома при загрузке ОС без ввода пароля:

echo "lvstreped UUID=$(blkid -s UUID -o value /dev/vg01/lvstreped) /etc/keys/enc.key luks" | tee -a /etc/crypttab

P.S: UUID указывается зашифрованного (закрытого) логического тома, чтобы во время загрузки ОС до монтирования выполнялось его открытие при помощи ключа.

Проверить:

  • выполнить перезагрузку reboot, запуск ОС должен произости без какой либо ошибки на стадии загрузки, после чего проверить примонтированные устройства:

img

Настройка коммутации
  • В качестве коммутаторов используются SW-HQ и SW-BR.

  • В обоих офисах сервера должны находится во vlan100, клиенты во vlan200, management подсеть во vlan300

  • Создайте management интерфейсы на коммутаторах

  • Для каждого vlan рассчитайте подсети, выданные для офисов. Количество хостов в каждой подсети не должно превышать 30-ти.

  • Создайте vlan400 для Proxmox. Этот VLAN является внутренним для всех виртуальных машин, развернутых в кластере.

SW-HQ:

openvswitch — был установлен ранее (SW-HQ не имеет доступ в Интернет).

  • включаем и добавляем в автозагрузку openvswitch:

systemctl enable --now openvswitch

Интерфейсы:

ens33 — в сторону RTR-HQ;

ens34 — vlan100;

ens35 — vlan200;

Сетевая подсистема etcnet будет взаимодействовать с openvswitch, поэтому в директоии /etc/net/ifaces/ создаём следующую структуру каталагов:

  • создаём каталоги для физических интерфейсов ens34 и ens35:

mkdir /etc/net/ifaces/ens3{4,5}
  • создаём также каталог для мостового интерфейса с именем ovs0:

mkdir /etc/net/ifaces/ovs0
  • создаём каталог для management интерфейса с именем mgmt:

mkdir /etc/net/ifaces/mgmt

img

Описываем файлы options для каждого интерфейса:

  • правим основной файл options в котором по умолчанию сказано — удалять настройки заданые через ovs-vsctl, т.к. через etcnet будет выполнено только создание bridge и интерфейса типа internal с назначением необходимого IP-адреса, а настройка функционала будет выполнена средствами openvswitch:

sed -i "s/OVS_REMOVE=yes/OVS_REMOVE=no/g" /etc/net/ifaces/default/options
  • описываем файл options для создания моста с именем ovs0:

vim /etc/net/ifaces/ovs0/options

содержимое файла следующее:

TYPE=ovsbr
HOST='ens33 ens34 ens35'

где:

TYPE — тип интерфейса (bridge);

HOST — интерфейсы которые будут добавлены в bridge;

  • описываем файл options для создания management интерфейса с именем mgmt:

vim /etc/net/ifaces/mgmt/options

содержимое файла следующее:

TYPE=ovsport
BOOTPROTO=static
CONFIG_IPV4=yes
BRIDGE=ovs0
VID=300

где:

TYPE — тип интерфейса (internal);

BOOTPROTO — определяет как будут назначаться сетевые параметры (статически);

CONFIG_IPV4 — определяет использовать конфигурацию протокола IPv4 или нет;

BRIDGE — определяет к какому мосту необходимо добавить данный интерфейс;

VID — определяет принадлежность интерфейса к VLAN;

  • файл options для физических интерфейсов ens34 и ens35 аналогичен ens33:

for i in 4 5; do cp /etc/net/ifaces/ens33/options /etc/net/ifaces/ens3$i/; done
  • назначаем IP-адрес на созданный management интерфейс mgmt согласно таблеце адресации:

echo 10.0.10.66/27 > /etc/net/ifaces/mgmt/ipv4address

echo default via 10.0.10.65 > /etc/net/ifaces/mgmt/ipv4route
  • перезапускаем службу etcnet:

systemctl restart network

img

Средствами openvswitch настраиваем следующий функционал:

  • порт ens33 смотрящий в сторону RTR-HQ — делаем trunk и пропускаем все необходимые VLANs:

ovs-vsctl set port ens33 trunk=100,200,300,400
  • порт ens34 назначаем тэг 100 VLAN:

ovs-vsctl set port ens34 tag=100
  • порт ens35 назначаем тэг 200 VLAN:

ovs-vsctl set port ens35 tag=200
  • включаем модуль ядра 8021q

modprobe 8021q

Проверить:

img

  • также проверить доступ к managment интерфейсу с SRV-HQ к примеру:

img

SW-BR

openvswitch — был установлен ранее (SW-HQ не имеет доступ в Интернет).

Интерфейсы:

ens33 — в сторону RTR-BR;

ens34 — vlan100;

ens35 — vlan200;

Настройка аналогична настройке SW-HQ за исключением добавления интерфейса типа internal для VLAN 400 с именем vlan400.

Результат:

img

img

Так как далее для Установка и настройка сервера баз данных требуется связь между офисами HQ и BR самое время построить туннель и выполнить сразу этот пункт задания, а также настроить маршрутизацию.

Установка и настройка защищённого соединения и динамической маршрутизации
  1. Между маршрутизаторами RTR-HQ и RTR-BR сконфигурируйте защищенное соединение

  • Все параметры на усмотрение участника

  • Используйте парольную аутентификацию

Будет выполняться настройка GRE-туннеля с последующим шифрованием, через IPSec:

RTR-HQ

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

mkdir /etc/net/ifaces/gre1
  • Создаём конфигурационный файл туннельного интерфейса:

vim /etc/net/ifaces/gre1/options

содержимое конфигурационного файла:

TUNLOCAL=11.11.11.11
TUNREMOTE=22.22.22.22
TUNTYPE=gre
TYPE=iptun
TUNMTU=1476
TUNOPTIONS='ttl 64'
DISABLE=no

где:

TUNLOCAL — IP — адрес внешнего интерфейса RTR-HQ (локальная точка туннеля);

TUNREMOE — IP — адрес внешнего интерфейса RTR-BR (точка туннеля на удаленной системе);

TUNTYPE — определяет тип туннеля;

TYPE — определяет тип интерфейса;

TUNMTU — определяем MTU (максимальный размер полезного блока данных одного пакета, который может быть передан протоколом без фрагментации);

TUNOPTIONS — определяет тип IP-туннеля;

DISABLE — определяет игнорировать интерфейс или нет;

Примечание: для нормальной работы OSPF необходимо явно задать значение TTL для строящегося туннеля (например, TUNOPTIONS=’ttl 64′). По умолчанию TTL=inherit, что значит «наследовать значение TTL из вкладываемого в туннель пакета». В случае с OSPF, TTL=1, стало быть первый встречный маршрутизатор отбросит такой пакет, что нам совсем не нужно.

  • Назначаем IP — адрес на туннельный интерфейс:

echo 172.16.100.1/24 > /etc/net/ifaces/gre1/ipv4address
  • перезагружаем службу network:

systemctl restart network
  • включаем модуль ядра gre:

modprobe gre

Проверить:

img

RTR-BR

Настройки аналогичны RTR-HQ, необходимо лишь поменять местами IP-адреса в TUNLOCAL и TUNREMOTE, а также задать IP-адрес из выделенной туннельной сети 172.16.100.0/24.

Результат:

img

Настраиваем шифрование туннеля GRE:

RTR-HQ

  • Устанавливаем пакет strongswan:

apt-get update && apt-get install -y strongswan
  • Описываем конфигурационный файл ipsec.conf:

vim /etc/strongswan/ipsec.conf

содержимое конфигурационного файла:

conn gre
	auto=start
	type=tunnel
	authby=secret
	left=11.11.11.11
	right=22.22.22.22
	leftsubnet=0.0.0.0/0
	rightsubnet=0.0.0.0/0
	leftprotoport=gre
	rightprotoport=gre
	ike=aes256-sha2_256-modp1024!
	esp=aes256-sha2_256!

img

где:

conn gre — создание соединения с именем gre;

auto=start — запускать соединение автоматически при старте демона IPSec;

type=tunnel — указывает IPSec работать в туннельном режиме. Туннельный режим работы шифрует изначальный IP-пакет полностью и добавляет новый заголовок IP. Транспортный режим работы шифрует все, что выше уровня IP, а заголовок IP оставляет без изменений. Грубо говоря, туннельный режим используется для того, чтобы связать две приватные сети через публичную, обеспечив при этом шифрование (что-то вроде безопасного GRE). Транспортный же актуален тогда, когда IP-связность уже достигнута, но трафик между узлами нужно шифровать;

authby=secret — указывает IPSec на аутентификацию по ключу из файла /etc/strongswan/ipsec.secrets;

left — указывает локальный адрес (откуда подключаемся);

right — указывает удаленный адрес (куда подключаемся);

leftsubnet — локальные подсети, трафик из которых необходимо шифровать;

rightsubnet — удаленные подсети, трафик к которым необходимо шифровать;

leftprotoport — локальный транспортный протокол для шифрования;

rightprotoport — удаленный транспортный протокол для шифрования;

ike — параметры первой фазы IPSec;

esp — параметры второй фазы IPSec.

  • Задаём парольную аутентификацию:

vim /etc/strongswan/ipsec.secrets

содержимое конфигурационного файла:

11.11.11.11 22.22.22.22 : PSK "P@ssw0rd"

img

Указываются два публичных IP-адреса, которые используются для создания туннеля. Порядок их записи не важен. Далее разделитель в виде двоеточия. PSK — Pre-Shared Key — в криптографии предварительный общий ключ — это общий секретный ключ, который принят между двумя сторонами, использующими некоторый защищенный канал, прежде чем его нужно зашифровать. Далее указывается секрет\пароль, он должен быть одинаковым для обеих сторон.

  • Включаем и добавляем в автозагрузку службу ipsec:

systemctl enable --now ipsec

RTR-BR

Настройки аналогичны RTR-HQ, необходимо лишь поменять местами IP-адреса в left и right в конфигурационном файле /etc/stringswan/ipsec.conf.

img

Проверить:

  • RTR-HQ

img

  • RTR-BR

img

Также можно, через tcpdump проверить наличие ESP трафика на ISP или RTR-BR, что будет гарантировать шифрование трафика:

img

  1. Обеспечьте динамическую маршрутизацию: ресурсы одного офиса должны быть доступны из другого офиса

  • Для обеспечения динамической маршрутизации используйте протокол OSPF

RTR-HQ

  • Установим пакет frr:

apt-get install -y frr
  • Включаем ospfd:

sed -i "s/ospfd=no/ospfd=yes/g" /etc/frr/daemons
  • Запускаем и добавляем в автозагрукзку службу frr:

systemctl enable --now frr

Проверить:

img

  • Настраиваем OSPF — переходим в интерфейс frr при помощи «vtysh«:

vtysh

Настройка OSPF выглядит следующим образом:

configure terminal
router ospf 
passive-interface default
network 172.16.100.0/24 area 0
network 10.0.10.0/27 area 0
network 10.0.10.32/27 area 0
network 10.0.10.64/27 area 0
exit

interface gre1
no ip ospf passive
exit
end
wr mem

где:

configure terminal — переход в режим глобальной конфигурации;

router ospf — переход в режим конфигурации OSPFv2;

passive-interface default — перевод всех интерфейсов в пассивный режим:

  • далее туннельный интерфейс «gre1» необходимо сделать активным, для того чтобы устанавливать соседство с RTR-BR и обмениваться внутренними маршрутами;

network — объявляем необходимые сети;

interface gre1 — переходим в режим конфигурирования интерфейса gre1;

no ip ospf passive — переводим интерфейс из пассивного редима в активный;

end — выходим в привилигированный режим;

wr mem — сохраняем текущую конфигурацию.

Проверить:

img

RTR-BR

Настройки аналогичны RTR-HQ, необходимо лишь дополнительно объявить подсеть для vlan400.

Результат:

img

Проверить:

  • RTR-HQ

img

  • RTR-BR

img

  • связность SRV-HQ с SRV-BR

img

Далее настроим доступ со всех устройств в локальных сетях офисов в сеть Интернет.

Настройка динамической трансляции адресов
  1. Настройте динамическую трансляцию адресов для обоих офисов. Доступ к интернету необходимо разрешить со всех устройств.

RTR-HQ

  • Устанавливаем nftables:

apt-get install -y nftables
  • Включаем и добавляем в автозагрузку службу nftables:

systemctl enable --now nftables

Далее создаём необходимую структуру для nftables (семейство, таблица, цепочка) для настройки NAT:

  • создаём в семействе ip таблицу nat:

nft add table ip nat
  • создаём цепочка postrouting в таблице nat семейства ip, также задаём hook и priority:

nft add chain ip nat postrouting '{ type nat hook postrouting priority 0; }'
  • создаём правила настройки NAT в семействе ip, таблице nat, цепочке postrouting:

    • можно задать 1-й командой для всех подсетей маскировать трафик через интерфейс ens33 смотрящий в сеть Интернет (ISP), можно и для каждой подсети отдельно через ip saddr — по IP источника:

nft add rule ip nat postrouting ip saddr 10.0.10.0/27 oifname "ens33" counter masquerade

nft add rule ip nat postrouting ip saddr 10.0.10.32/27 oifname "ens33" counter masquerade

nft add rule ip nat postrouting ip saddr 10.0.10.64/27 oifname "ens33" counter masquerade

Проверить:

img

Так как в конфигурационном файле /etc/nftables/nftables.nft уже есть информация о таблице filter — необходимо дописать только что созданную информацию о таблице nat

  • дозапишем в конфигурационный файл /etc/nftables/nftables.nft последние 8 строк (от 14 до 21) вывода команды nft list ruleset:

nft list ruleset | tail -n8 | tee -a /etc/nftables/nftables.nft

img

  • перезагружаем службу nftables:

systemctl restart nftables

Проверить:

  • SW-HQ

img

  • SRV-HQ

img

  • RTR-HQ — должен был поменяться счётчик пакетов:

img

RTR-BR

Настройка аналогина RTR-HQ.

Результат:

  • SW-BR

img

  • SRV-BR

img

  • RTR-BR

img

Настройка протокола динамической конфигурации хостов
  1. Настройте протокол динамической конфигурации хостов для устройств в подсетях CLI — RTR-HQ

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

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

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

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

    • Первый адрес – первый незанятый вами адрес сети

    • Последний адрес – шестой незанятый вами адрес сети

RTR-HQ

  • Установип пакет dhcp-server:

apt-get install -y dhcp-server
  • Укажим сетевой интерефейс, через который будет работать DHCP-сервер:

sed -i "s/DHCPDARGS=/DHCPDARGS=ens34.200/g" /etc/sysconfig/dhcpd

где: ens34.200 — подинтерфейс vlan200 для клиентских ПК;

  • Пример конфигурационного файла с настройкой DHCP — сервера — расположен по пути «/etc/dhcp/dhcpd.conf.example«

    • возьмём его за основу:

cp /etc/dhcp/dhcpd.conf{.example,}
  • После чего, необходимо привести файл «/etc/dhcp/dhcpd.conf» к следующему виду:

vim /etc/dhcp/dhcpd.conf

img

где:

1 — задаётся информация о выдаваемом DNS-суффиксе и DNS-серверах;

2 — Задаём параметры времени аренды сетевых параметров (в секундах)

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

3 — Если в подсети, в которой находится данный сервер, нет необходимости выдавать IP — адреса, то необходимо создать так называемую «заглушку», иначе при запуске DHCP — сервера будет ошибка;

4 — Описываем подсеть с необходимым диапазоном выдаваемых адресов и шлюза по умолчанию.

  • После заполнения конфигурационного файла можно воспользоваться утилитой «dhcpd» с ключём «-t» для проверки корректности его заполнения

    • ключи «-cf» для указания пути до проверяемого файла:

img

  • Включаем и добавляем в автозагрузку службу dhcpd:

systemctl enable --now dhcpd

Проверить:

На RTR-HQ запускаем журнал, а на CLI-HQ выставляем получить параметры по DHCP:

  • CLI-HQ

img

img

  • RTR-HQ

img

  1. Настройте протокол динамической конфигурации хостов для устройств в подсетях CLI RTR-BR

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

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

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

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

    • Первый адрес – первый незанятый вами адрес сети

    • Последний адрес – шестой незанятый вами адрес сети

RTR-BR

Настройки аналогичны RTR-HQ.

Результат:

  • RTR-BR:

img

  • CLI-BR:

img

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

Установка и настройка основного контроллера домена на базе FreeIPA
  1. На сервере SRV-HQ сконфигурируйте основной доменный контроллер на базе FreeIPA

  • Создайте 30 пользователей user1-user30

  • Пользователи user1-user10 должны входить в состав группы group1

  • Пользователи user11-user20 должны входить в состав группы group2

  • Пользователи user21-user30 должны входить в состав группы group3

  • Разрешите аутентификацию с использованием доменных учетных данных на ВМ CLI-HQ и SRV-HQ только.

  • Установите сертификат центра сертификации FreeIPA в качестве доверенного на обоих клиентских ПК.

  • Сконфигурируйте перемещаемые профили для всех пользователей, кроме локальных. Профили хранятся по каталогу /mnt/homes/$USER на клиентских ПК.

SRV-HQ

Развёртывание контроллера домена на базе FeeIPA:

  • Для ускорения установки можно установить демон энтропии haveged:

apt-get update && apt-get install -y haveged
  • Включаем и запускаем службу haveged:

systemctl enable --now haveged
  • Установим пакет FreeIPA с интегрированным DNS-сервером:

apt-get install -y freeipa-server-dns
  • Запускаем интерактивную установку FreeIPA с интегрированным DNS-сервером:

ipa-server-install

1 — отвечаем yes на вопрос, нужно ли сконфигурировать DNS-сервер BIND;

2, 3, 4 — нужно указать имя узлаЮ на котором будет установлен сервер FreeIPA, доменное имя и пространство Kerberos;

  • Эти имена нельзя изменить после завершения установки!

img

1 — задаётся и подтверждается пароль для Director Manager;

  • не менее 8 символов;

2 — задаётся и подтверждается пароль для администратора FreeIPA;

img

1 — задаются параметры для перенаправления DNS;

2 — задаются параметры для обратной зоны;

3 — указывается имя NetBIOS;

img

Указать, если это необходимо, NTP-сервер или пул серверов:

img

Далее необходимо проверить информацию о конфигурации и подтвердить ответив yes:

img

Начнётся процесс конфигурации. После его завершения будет выведена следующая информация:

img

Проверить:

  • Проверяем запущенные службы FreeIPA:

img

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

  • получаем билет kerberos:

kinit admin

вводим пароль доменного пользователя admin

img

  • используя цикл for создадим 30 пользователей: user№ с паролем P@ssw0rd, а также сменим срок действия пароля до 2025 года, чтобы при входе из под пользователя на не пришлось менять пароль:

for i in {1..30};do 
	echo "P@ssw0rd" | ipa user-add user$i --first=User --last=$i --password;
	ipa user-mod user$i --setattr=krbPasswordExpiration=20251225011529Z;
done

Проверить:

img

  • создадим группы: group1, group2 и group3:

for i in {1..3}; do
	ipa group-add group$i;
done

img

  • добавим пользователей в соответствующие группы:

for i in {1..10}; do
	ipa group-add-member group1 --users=user$i;
done

img

for i in {11..20}; do
	ipa group-add-member group2 --users=user$i;
done

img

for i in {21..30}; do
	ipa group-add-member group3 --users=user$i;
done

img

Чтобы разрешить аутентификацию с использованием доменных учетных данных на ВМ CLI-HQ и SRV-HQ только, введём CLI-HQ в домен FreeIPA:

CLI-HQ

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

apt-get update && apt-get install -y freeipa-client zip
  • Запустим скрипт настройки клиента в интерактивном режиме:

ipa-client-install --mkhomedir --enable-dns-updates

Скрипт установки должен автоматически найти необходимые настройки на FreeIPA сервере, вывести их и спросить подтверждение для найденных параметров;

Затем запрашивается имя пользователя, имеющего право вводить машины в домен, и его пароль (можно использовать администратора по умолчанию, который был создан при установке сервера);

Далее сценарий установки настраивает клиент.

img

Также после ввода в домен — CLI-HQ автоматически доверяет интегрированному Корневому Центру Сертификации FreeIPA:

img

Выполняем вход из под пользователя admin и проверяем ранее созданные группы:

img

И соответствующих пользователей в каждой группе:

img

img

img

Далее выполним настройку правил HBAC (Host-based access control) — набор правил для настройки доступа пользователей или групп пользователей к определенным хостам с использованием определенных сервисов.

  • В Identity Management переходим на вкладку Политика -> нажимаем Добавить -> задаём Имя правила -> нажимаем Дабавить и изменить:

img

  • При необходимости даём Описание -> в «Категории пользователей, к которым применяется правило» выбираем Любой (т.к. мы должны иметь доступ с любого доменного пользователя) -> в «Категории узлов, к которым применяется правило» нажимаем Добавить и выбираем устройства согласно заданию -> в «Категории служб, к которой применяется правило» выбираем Любая служба, т.к. в «Любая служба» входим и аутентификация -> далее нажимаем Сохранить:

img

  • Так же отключаем правила по умолчанию, уже имеющиеся, т.к. они разрешают всё и всем;

img

  • проверим вход на HQ-CLI, который есть в правиле из под доменного пользователя user1 (проверяем хотябы то, что отключением правил по умолчанию мы ничего не сломали):

img

Т.к. CLI-HQ введён в домен он автоматически доверяет сертификату центра сертификации FreeIPA в качестве доверенного, а CLI-BR — нет. Введём CLI-BR в домен, также сможем проверить работоспособность ранее созданного правила:

CLI-BR

Аналогично вводу в домен HQ-CLI

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

apt-get update && apt-get install -y freeipa-client zip
  • Запустим скрипт настройки клиента в интерактивном режиме:

ipa-client-install --mkhomedir --enable-dns-updates

img

Проверяем доверяет ли CLI-BR сертификату центра сертификации FreeIPA в качестве доверенного:

img

img

Проверяем правило HBAC:

  • CLI-BR не входит в ранее создаваемое правило, а значит с него вход из под доменных пользователей должен быть не возможен:

img

img

P.S. пароль верный!

SRV-HQ попадает под данное правило и вход под данным пользователем с тем же паролем возможен: