Юниоры 2023

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

Время на выполнение модуля 4 часа

Формат участия в соревновании: командный (2 человека)

Топология
Характеристики ВМ
  • ISP — Debian 11 (CLI) — 1 ГБ ОЗУ

  • FW-MSK — Debian 11 (CLI) — 1 ГБ ОЗУ

  • FW-AMS — Debian 11 (CLI) — 1 ГБ ОЗУ

  • R0-MSK — VyOS — 1 ГБ ОЗУ

  • APP-MSK — Альт Сервер 10.1 (CLI) — 1 ГБ ОЗУ

  • SRV1-MSK — Альт Сервер 10.1 (CLI) — 1 ГБ ОЗУ

  • SRV2-MSK — Альт Сервер 10.1 (CLI) — 1 ГБ ОЗУ

  • PC-MSK — Альт Рабочая станция 10.1 (MATE) — 2 ГБ ОЗУ

  • APP-AMS — Debian 11 (CLI) — 1 ГБ ОЗУ

  • DMZ-AMS — Debian 11 (CLI) — 1 ГБ ОЗУ

  • PC-AMS — Debian 11 (MATE) — 2 ГБ ОЗУ

  • ClientEU — Debian 11 (MATE) — 2 ГБ ОЗУ

  • ClientSPB — Альт Рабочая станция 10.1 (MATE) — 2 ГБ ОЗУ

  • VDS(EKB) — Debian 11 (CLI) — 1 ГБ ОЗУ

  • VPNClient(EKB) — Windows 10 — 2 ГБ ОЗУ

Таблица адресации

 

1. Настройте статичные IPv4-адреса, шлюз по умолчанию и описания на интерфейсах FW* и R0 согласно схеме адресации.
FW-MSK
  1. Меняем имя устройства если таковое не выполнено:

hostnamectl set-hostname FW-MSK; exec bash
  1. Настраиваем интерфейсы согласно заданию:

  • 2.1. Приводим содержимое файла «/etc/network/interfaces» к следующему виду (согласно схеме адресации):

  • 2.2. Перезапускаем службу для применения настроек:

systemctl restart networking
  • 2.3. Укажем информацию о DNS — сервере:

echo nameserver 100.100.100.100 > /etc/resolv.conf
  • 2.4. Проверим доступ в Интернет (если пакеты будут браться из Интернета а не CD/DVD или иное):

img

Аналогичным образом настраиваем FW-AMS

FW-AMS

hostnamectl set-hostname FW-AMS; exec bash

vi /etc/network/interfaces

img

systemctl restart networking

echo nameserver 100.100.100.100 > /etc/resolv.conf
R0-MSK
  1. Меняем имя устройства если таковое не выполнено:

configure
set system host-name R0-MSK
commit
save	
exit
exit
  1. Настраиваем интерфейсы согласно заданию:

configure
set interfaces ethernet eth0 description «FW-R0-MSK»
set interfaces ethernet eth0 address 10.10.10.2/30
set interfaces ethernet eth1 description «LAN-MSK»
set interfaces ethernet eth1 address 192.168.100.1/24
set interfaces ethernet eth2 description «SRV-MSK»
set interfaces ethernet eth2 address 192.168.200.1/24
commit
save
exit
  1. Проверим настройки интерфейсов:

show interfaces

img

P.S. Шлюз по заданию будет выдан посредством OSPF.

2. Настройте статичные IPv4-адреса и шлюз по умолчанию на всех устройствах, где это требуется, согласно схеме адресации.
SRV1-MSK
  1. Меняем имя устройства если таковое не выполнено:

hostnamectl set-hostname SRV1-MSK; exec bash
  1. Настраиваем интерфейс согласно схеме адресации:

  • 2.1. Файл по пути «/etc/net/ifaces/ens33/options» для назначения статического адреса должен иметь следующее содержимое:

img

  • 2.2. Задаём статический IPv4 — адрес:

echo 192.168.200.100/24 > /etc/net/ifaces/ens33/ipv4address
  • 2.3. Задаём шлюз по умолчанию:

echo default via 192.168.200.1 > /etc/net/ifaces/ens33/ipv4route
  • 2.4. Выполняем перезапуск сервиса:

systemctl restart network
  1. Проверяем настройку интерфейса:

img

Аналогичным образом настраиваем SRV2-MSK

SRV2-MSK

img

Аналогичным образом настраиваем APP-MSK

APP-MSK

img

DMZ-MSK
  1. Меняем имя устройства если таковое не выполнено:

hostnamectl set-hostname DMZ-AMS; exec bash
  1. Приводим содержимое файла «/etc/network/interfaces» к следующему виду (согласно схеме адресации):

img

  1. Перезапускаем службу:

systemctl restart networking
  1. Проверяем полученные настройки:

img

Аналогичным образом настраиваем APP-AMS

APP-AMS

img

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

VDS

(Также указываем DNS — сервер с адресом 100.100.100.100)

img

ClientSPB

Через «Центр управления системой (ЦУС)»

img

Или в терминале выполнить команду «acc»

acc

img

img

После чего назначаем параметры согласно таблице адресации:

(Сетевая подсистема: NetworkManager (etcnet))

img

img

Проверяем:

img

ClientEU

img

img

img

Проверяем:

img

VPNClient

img

img

img

3. Настройте OSPFv2 между R0-MSK и FW-MSK
3.1. FW-MSK должен узнавать о сетях LAN-MSK и SRV-MSK через OSPF.
R0-MSK

Настраиваем OSPFv2 на VyOS:

configure

Объявляем сеть между R0-MSK и FW-MSK для установления соседских отношений:

set protocols ospf area 0 network 10.10.10.0/30

Объявляем по заданию информацию о сетях LAN-MSK и SRV-MSK:

set protocols ospf area 0 network 192.168.100.0/24
set protocols ospf area 0 network 192.168.200.0/24

Применяем и сохраняем конфигурацию устройства:

commit
save
3.2. R0 должен получать маршрут по умолчанию и другие необходимые маршруты от FW-MSK через OSPF.
FW-MSK

Обновить список пакетов и установить пакет frr:

apt-get update && apt-get install -y frr

Далее:

img

где:

  • 1 — необходимо включить демон ospfd, для этого в файле «/etc/frr/daemons» — необходимо заменить значение «ospfd=no» на значание «ospfd=yes»:

sed -i “s/ospfd=no/ospfd=yes/g“ /etc/frr/daemons
  • 2 — выполнить перезапуск службы «frr»:

systemctl restart frr
  • 3 — проверяем наличие открытого порта для доступа к демону «ospfd»:

ss -tulpn | grep ospfd
  • 4 — переходим в интерактивный CLI-интерфейс, который предоставляет аналогичную функциональность командной оболочки ‘Cisco IOS’ для управления протоколами маршрутизации:

vtysh
  • 5 — наблюдаем доступ к CLI — интерфейсу frr, переходим к настройки OSPFv2:

    • Объявляем сеть между R0-MSK и FW-MSK для установления соседских отношений:

network 10.10.10.0/30 area 0
end

Проверяем соседство между FW-MSK и R0-MSK:

img

Проверяем таблицу маршрутизации с целью проверки информации о сетях LAN-MSK и SRV-MSK, переданные от R0-MSK:

show ip route ospf

img

Переходим к дальнейшей настройке OSPFv2:

Задаём маршрут по умолчанию для дальнейшего объявления его через OSPF:

ip route 0.0.0.0 0.0.0.0 10.10.10.1

Объявляем маршрут по умолчанию через OSPF:

router ospf 
default-information originate
end

Сохраняем текущие параметры конфигурации:

wr mem

Проверяем на R0-MSK информацию о маршруте по умолчанию переданную через OSPF:

show ip route ospf

img

3.3. Не используйте статические маршруты до этих сетей. Статические маршруты применимы только в качестве временной меры.
FW-MSK

Просмотрим таблицу маршрутизации при помощи утилиты «ip route»:

ip -c route

img

В соответствие с заданием — необходимые сети объявляются через OSPF, а не статически

R0-MSK

Аналогичным образом посмотрим таблицу маршрутизации на отсутствие статических маршрутов:

img

3.4. R0-MSK должен быть защищен от вброса маршрутов с интерфейсов смотрящих в сторону сетей LAN-MSK и SRV-MSK
R0-MSK

Один из способов достичь этой цели в сетях с использованием протокола OSPF — это сделать указанные интерфейсы пассивными. Пассивный интерфейс в OSPF не обменивается информацией о маршрутах с другими маршрутизаторами, он используется только для получения информации о топологии сети. Это позволяет предотвратить нежелательный обмен маршрутами с соседними сетями

img

img

configure
set protocols ospf passive-interface default
set protocols ospf interface eth0 passive disable
commit
save
exit
show ip ospf interface

img

3.5. FW-MSK должен быть защищен от вброса маршрутов с интерфейса смотрящего в сторону сети DMZ-MSK.
FW-MSK

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

  • также сделаем пассивный интерфейс в сторону «глобальной сети Интернет (ens33)»

img

img

vtysh
configure terminal
router ospf
passive-interface ets35
passive-interface ens33
end 
wr mem
show running-config

img

4. Обеспечьте выход в интернет для всех устройств московского и амстердамского офисов.

Необходимо настроить трансляцию адресов сети (NAT — Network Address Translation) с помощью пакета «firewalld«. Этот подход позволит эффективно использовать доступные публичные IP-адреса и обеспечит устойчивое и безопасное подключение к глобальной сети для всех устройств сети офисов.

FW-MSK

Необходимо включить функцию пересылки пакетов (forwarding):

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

sysctl -p

img

Установим пакет «firewalld»:

apt-get install -y firewalld

Далее интерфейс который смотрит в сторону сети Интернет — добавим в зону «Public» и включим на данную зону маскировку трафика — masquerade:

  • Маскировка позволяет заменить исходный IP-адрес устройства внутри локальной сети на внешний IP-адрес интерфейса, который направлен в сторону Интернета. Таким образом, ответы от внешних серверов будут возвращаться на публичный IP-адрес маршрутизатора, а затем перенаправляться на соответствующее устройство внутри локальной сети.

firewall-cmd --permanent --zone=public --add-interface=ens33

firewall-cmd --permanent --zone=public --add-masquerade  
  • После чего, интерфейс смотрящий в сторону R0-MSK — дабавим в зону «trusted»:

firewall-cmd --permanent --zone=trusted --add-interface=ens34 
  • А интерфейс смотрящий в сторону сети DMZ-MSK — добавим в зону «DMZ»:

firewall-cmd --permanent --zone=dmz --add-interface=ens35	 
  • После чего перезагружаем «firewalld» для того чтобы изменения применились:

firewall-cmd --reload 

img

Проверяем доступ до «Настоящей сети Интернет» с хостов сетей SRV-MSK | DMZ-MSK:

img

img

FW-AMS

Аналогичным образов включаем forwarding, после чего обновляем список пакетов и устанавливаем пакет «firewalld»:

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

sysctl -p

apt-get update && apt-get install -y firewalld

Далее как и в московском офисе выполним добавления интерфейса смотрящего в сторону сети Интернет с зону «public», с последующим включением на неё masquerade;

Затем интерфейс смотрящий в сторону LAN-AMS добавим в зону «trusted», а интерфейс смотрящий в DMZ-AMS — добавим в зону «DMZ»:

firewall-cmd --permanent --zone=public --add-interface=ens33 

firewall-cmd --permanent --zone=public --add-masquerade

firewall-cmd --permanent --zone=trusted --add-interface=ens34

firewall-cmd --permanent --zone=dmz --add-interface=ens35 

firewall-cmd --reload

img

Ну и проверяем доступ в сеть Интернет с хоста сети «DMZ-AMS»:

img

5. Настройте сервер разрешения имен
5.1. Устройства в локальных сетях должны обращаться с DNS запросами к своим FW*

На устройствах со статическими сетевыми параметрами настраиваем вручную и добавляем запись в файл «/etc/resolv.conf»:

R0-MSK

configure
set system name-server 10.10.10.1
commit
save
SRV{1,2}-MSK

echo nameserver 10.10.10.1 > /etc/resolv.conf
APP-MSK

echo nameserver 20.20.20.1 > /etc/resolv.conf
DMZ-AMS | APP-AMS

echo nameserver 172.16.200.1 > /etc/resolv.conf
5.2. Пограничные маршрутизаторы FW* должны выполнять пересылку DNS запросов от локальных клиентов на DNS сервер по адресу 100.100.100.100.
FW-MSK | FW-AMS

Выполним установку пакета «bind9»:

apt-get install -y bind9

Далее приводим файл «/etc/bind/named.conf.options» к следующему виду:

img

где:

  • allow-query { any; }; — разрешает обращаться к данному DNS — серверу для всех;

  • forwarders { 100.100.100.100; }; — пересылает все неизвестные запросы на 100.100.100.100;

При помощи утилиты «named-checkconf» — можно проверить данный файл на наличие ошибок

После чего выполняем перезапуск службы «bind9»:

systemctl restart bind9

Также в firewalld на зону «dmz» — необходимо разрешить сервис «dns»:

firewall-cmd --permanent --zone=dmz --add-service=dns 

firewall-cmd --reload 

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

img

img

img

5.3. ClientSPB и VDS должны обращаться с DNS запросами к 100.100.100.100.
ClientSPB | VDS

выполнялось ранее на стадии настройки IP — адресов

echo nameserver 100.100.100.100 > /etc/resolv.conf
6. Настройте имена устройств согласно топологии.

Выполнялось на стадии настройки статических адресов, в противном случае используется утилита «hostnamectl»

hostnamectl set-hostname <ИМЯ>; exec bash
7. Настройте для всех устройств московского и амстердамского офисов доменные имена в зонах msk.jun39.wsr и ams.jun39.wsr соответственно.
7.1. Все устройства должны быть доступны в локальных сетях всех филиалов по именам в соответствии с топологией в доменах соответствующих филиалов. К примеру dmz-ams.ams.jun39.wsr или pc-msk.msk.jun39.wsr
FW-MSK

Создадим директорию в которой будем хранить файл с настройками для зоны «msk.jun39.wsr»:

mkdir /var/dns

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

cp /etc/bind/db.local /var/dns/msk.db

chown -R bind:bind /var/dns

Также настроим «apparmor» — для этого в файл «/etc/apparmor.d/usr.sbin.named» — добавляем следующую строку:

img

После чего перезагружаем службу «apparmor»:

systemctl restart apparmor

В файл «/etc/bind/named.conf.local» — описываем информацию о зоне прямого просмотра «msk.jun39.wsr», а также о самом файле содержащем данные зоны прямого просмотра «/var/dns/msk.db»:

img

при помощи утилиты «named-checkconf» с колючём «-z» проверяем, что наш файл с зоной прямого просмотра загружается успешно:

img

Наконец заполняем сам файл зоны прямого просмотра «/var/dns/msk.db» и приводим его к следующему виду:

img

также проверяем наличие ошибок при помощи «named-checkconf -z»

Перезапускаем службу «bind9»:

systemctl restart bind9

P.S. Для клиентов которые получают адреса по DHCP — далее на стадии настройки DHCP — сервера вернёмся к настройки автоматического обновление записей DNS для них.

FW-AMS

Аналогичным образом настраиваем DNS — сервер на работу с зоной прямого просмотра «ams.jun39.wsr»:

mkdir /var/dns

cp /etc/bind/db.local /var/dns/ams.db

chown -R bind:bind /var/dns

vi /etc/apparmor.d/usr.sbin.named

img

systemctl restart apparmor

vi /etc/bind/named.conf.local

img

named-checkconf -z

vi /var/dns/ams.db

img

named-checkconf -z

systemctl restart bind9
7.2. В рамках каждого филиала короткие имена должны автоматически дополняться доменным именем соответствующего филиала

На локальных хостах добавляем в файл «/etc/resolv.conf» — строчку «search <домен поиска>» в соответствие с филиалом:

Например:

img

img

При помощи утилит «host» или «nslookup» из пакета «bind-utils» проверяем работу DNS — сервера:

img

Аналогичным образом проверяем работоспособности DNS — сервера в филиале Амстердама

8. Настройте DHCP-сервер на SRV1–MSK для клиентов в сети LAN–MSK и DHCP-сервер на FW-AMS для сети LAN–AMS. DHCP-сервер должен передавать клиентам следующие опции:
8.1. Адрес хоста
8.2. Маску сети
8.3. Адрес шлюза
8.4. Имя домена (msk.jun39.wsr и ams.jun39.wsr соответственно.)
8.5. Адрес DNS (FW*)
8.6. Адрес NTP (FW*)
8.7. Выдаваемый диапазон адресов должен иметь запас в как минимум по 10 адресов в начале и конце сети, но не более 50 суммарного запаса.
SRV1-MSK

Установим пакет «dhcp-server»:

apt-get update && apt-get install -y dhcp-server

Копируем файл с шалбоном конфигурационного файла dhcp-сервера для последующего редактирования:

cp /etc/dhcp/dhcpd.conf.example /etc/dhcp/dhcpd.conf

Приводим файл «/etc/dhcp/dhcpd.conf» к следующему виду:

img

где:

  • 1 — Имя домена;

  • 2 — Адрес DNS — сервера (FW-MSK);

  • 3 — Выдаваемый диапазон адресов (согласно заданию);

  • 4 — Адрес шлюза (R0-MSK);

  • 5 — Адрес NTP — сервера (FW-MSK);

  • 6 — Блок для автоматического обновления записей типа A на DNS — сервере;

Далее при помощи утилиты «dhcpd» и ключей «-t» и «-cf» проверяем правильность заполнения данного конфигурационного файла:

dhcpd -t -cf /etc/dhcp/dhcpd.conf

img

Выполняем перезапуск службы «dhcpd»и добавляем в автозагрузку:

systemctl enable --now dhcpd 

После чего возвращаемся на DNS — сервер и вносим необходимые изменения для совместной работы DHCP и DNS серверов:

FW-MSK

Добавляем в файл «/etc/bind/named.conf.local» следующую строку:

img

  • таким образом, в данной строке мы говорим кому разрешено отправлять динамические обновления для данной зоны, т. е. указываем адрес нашего DHCP — сервера (SRV1-MSK).

Перезагружаем службу bind9:

systemcrtl restart bind9

Аналогичным образом настраиваем DHCP — сервер в филиале Амстердама на FW-AMS:

FW-AMS

Установим пакет «isc-dhcp-server»:

apt-get install -y isc-dhcp-server

img

  • после установки данного пакета будет следующая ошибка в работе данной службы, но после правки конфигурационных файлов DHCP — сервер заработает без ошибок

Далее определяем сетевой интерфейс сервера, на котором DHCP-сервер будет слушать и обрабатывать DHCP-запросы от клиентов, для этого вносим изменения в файл «/etc/default/isc-dhcp-server»:

img

После чего аналогичным образом как и на SRV1-MSK заполняем конфигурационный файл «/etc/dhcp/dhcpd.conf»:

img

Проверяем правильность данного файла:

dhcpd -t -cf /etc/dhcp/dhcpd.conf

После перезапускаем службу «isc-dhcp-server»:

systemctl restart isc-dhcp-server

Также вносим изменения в конфигурацию DNS — сервера по пути «/etc/bind/named.conf.local»:

img

Перезагружаем службу «bind9»:

systemctl restart bind9

В качестве проверки работоспособности DHCP — сервера а также автоматического обновления записей типа A — выводим журнал при помощи команды:

journalctl -f -u isc-dhcp-server

После чего включаем PC-AMS и наблюдаем следующую информацию в журнале на FW-AMS:

img

  • Полноценный «DORA» — процесс;

img

  • Также запись в журнале, которая соответствует информации о автоматическом обновлении записи типа А в DNS.

9. Настройте DHCP Relay на маршрутизаторе R0-MSK таким образом, чтобы клиентам в сети LAN–MSK адреса выдавал сервер SRV1–MSK.

configure
set service dhcp-relay interface eth1
set service dhcp-relay interface eth2
set service dhcp-relay server 192.168.200.100
set service dhcp-relay relay-options relay-agents-packets discard
commit
save

Проверим конфигурацию:

show service dhcp-relay

img

10. Настройте синхронизацию времени
10.1. Устройства в локальных сетях должны синхронизировать свое время с FW*.
R0-MSK

configure
set service ntp server 10.10.10.1
commit
save
SRV{1,2}-MSK

Установим пакет «chrony»:

apt-get install -y chrony

Приводим конфигурационный файл «/etc/chrony.conf»

img

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

После чего перезапускаем и добавляем в автозагрузку службу «chronyd»:

systemctl enable --now chronyd

Проверяем про помощи утилиты «chronyc» с кем данный хост синхронизирует время:

chronyc sources

img

Аналогичным образом настраиваем APP-MSK

{DMZ,APP}-AMS

Устанавливаем пакет «chrony»:

apt-get update && apt-get install -y chrony

Приводим конфигурационный файл «/etc/chrony/chrony.conf» к следующему виду, аналогично необходимо закомментировать строку с серверами по умолчанию, после чего явно указать с кем необходимо синхронизировать время.

img

Выполняем перезапуск службы «chronyd» и проверяем синхронизацию времени через «chronyc»:

systemctl restart chronyd

chronyc sources

img

10.2. Устройства с динамическими адресами должны получать получать информацию о сервере времени от своего DHCP сервера и использовать ее для работы.
PC-{MSK,AMS}

Данная настройка была реализована во время настройки DHCP — сервера, таким образом необходимо установить только пакет «chrony»:

apt-get install -y chrony

systemctl enable --now chronyd

Также повторно запросим информацию от DHCP — сервера чтобы информация о NTP — серверах автоматически заполнилась в «chrony.conf»

10.3. Пограничные маршрутизаторы FW*, ClientSPB и VDS должны синхронизировать свое время с NTP сервером по адресу 100.101.102.103.
FW-MSK

Установим пакет «chrony»:

apt-get install -y chrony

Приводим конфигурационный файл «/etc/chrony/chrony.conf» к следующему виду:

img

После перезагружаем службу «chronyd»:

systemctl restart chronyd

Проверяем синхронизацию:

chronyc sources

img

Также необходимо в «firewalld» для зоны «dmz» — разрешить NTP:

firewall-cmd --permanent --zone=dmz --add-service=ntp 

firewall-cmd --reload 

После проверяем клиентов, которые синхронизируют время с данным сервером:

chronyc clients

img

Аналогичным образом настраиваем FW-AMS:

FW-AMS

apt-get install -y chrony

vi /etc/chrony/chrony.conf

img

systemctl enable --now chronyd

firewall-cmd --permanent --zone=dmz --add-service=ntp 

firewall-cmd --reload 

chronyc sources && chronyc clients

img

Аналогично настраиваем ClientSPB и VDS на синхронизацию с 100.101.102.103

10.4. Настройте часовой пояс на всех устройствах в соответствии с их географическим расположением.

При помощи утилиты «timedatectl» настраиваем необходимый часовой пояс:

timedatectl set-timezone <Europe/Moscov | Europe/Amsterdam>

img

img

Аналогичным образом на остальных хостах в соответствии с географическим расположением.

11. Настройте правила firewall так, чтобы устройства в сетях DMZ-* не могли инициировать соединения к клиентам в приватных сетях организации, при этом входящие соединения из всех локальных сетей в сети DMZ-* должны быть разрешены и машины в сети DMZ-* должны иметь доступ в интернет. При необходимости, допускается возможность штучно открывать дополнительные порты, необходимые для выполнения задания.

Выполнено ранее, посредством добавления сетевых интерфейсов в необходимые зоны:

img

img

  • Зона public: Включение masquerade в этой зоне позволяет устройствам в сети DMZ-* иметь доступ в интернет. Маскарадинг (masquerade) позволяет перенаправлять исходящий трафик от устройств в сети DMZ через внешний интерфейс маршрутизатора, чтобы он мог успешно общаться с внешними ресурсами в интернете.

  • Зона trusted: это локальная сеть. Устройства в сети DMZ не смогут инициировать соединения к клиентам в этой локальной сети из-за ограничения правил firewall на этой граничной маршрутизаторе. Это выполняется благодаря отсутствию правил пересылки (forward) из зоны dmz в зону trusted.

  • Зона dmz: Входящие соединения из всех локальных сетей (в том числе и из зоны trusted) в сети DMZ-* разрешены. Это достигается тем, что мы добавили интерфейс, смотрящий в DMZ, в эту зону. Соединения из локальной сети, проходящие через граничный маршрутизатор и направленные в зону dmz, будут разрешены благодаря правилам в зоне dmz.

12. Настройте сетевое обнаружение по протоколу LLDP на всех сетевых устройствах и серверах.
SRV{1,2}-MSK

Выполняем установку пакета «lldpd»:

apt-get install -y lldpd

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

systemctl enable --now lldpd

Проверяем информацию о соседних устройствах:

lldpcli show neighbors

img

img

Аналогичным образом устанавливаем «lldpd» на FW-MSK и APP-MSK:

APP-MSK | FW-MSK

apt-get install -y lldpd

systemctl enable --now lldpd

img

img

configure
set service lldpd
commit
save
exit
show lldp neighbors

img

Аналогично настраиваем филиал Амстердама

{FW,DMZ,APP}-AMS

apt-get install -y lldpd

systemctl enable --now lldpd

img

13. Настроить удаленный доступ к VDS и R0-MSK по SSH
13.1. Устройство PC-MSK при входе под пользователем user должно иметь доступ к VDS под пользователем user c использованием SSH ключей, без необходимости ввода пароля.
PC-MSK

Создадим SSH — ключи:

ssh-keygen -t rsa

img

Скопируем публичный ключ «id_rsa.pub» на VDS:

ssh-copy-id user@100.70.6.12

img

Проверяем подключение:

ssh user@100.70.6.12

img

13.2. Подключение к VDS с PC-MSK должно осуществляться по имени “VDS”
PC-MSK

Добавим алиас для него в файл «~/.ssh/config». Это позволит подключаться к VDS, используя указанное имя:

img

Проверяем подключение по имени, а не IP — адресу:

img

14. Настройте защищенный VPN-туннель FW-AMS<=>FW-MSK со следующими параметрами:
14.1. Технология VPN на ваш выбор: IPsec, OpenVPN, WireGuard.
14.2. Используйте современные надежные протоколы шифрования AES и SHA-2
14.3. Не допускается использование протоколов шифрования и аутентификации с длиной ключа/хеша менее 256 бит.
14.4. Настройте маршрутизацию, NAT и межсетевой экран таким образом, чтобы трафик для другого офиса не натировался и не блокировался

Настройка защищённого VPN — туннеля будем настраиваться посредством Wireguard:

  • 14.1. WireGuard — WireGuard является современной технологией VPN, которая обеспечивает высокую производительность и безопасность.

  • 14.2. WireGuard использует симметричное шифрование, и AES является одним из поддерживаемых алгоритмов шифрования. SHA-2 обычно используется для хеширования и аутентификации данных в WireGuard.

  • 14.3. WireGuard поддерживает протоколы шифрования, такие как ChaCha20 и Curve25519, которые обеспечивают ключи и хеши длиной 256 бит, что удовлетворяет данному требованию.

FW-MSK

Установим пакет «wireguard»:

apt-get install -y wireguard

Создадим директорию для ключей:

mkdir /etc/wireguard/keys

cd /etc/wireguard/keys

Генерируем пары ключей для сервера и клиента:

wg genkey | tee srv-sec.key | wg pubkey > srv-pub.key

wg genkey | tee cli-sec.key | wg pubkey > cli-pub.key

Копируем закрытый ключ сервера и публичный ключ клиента в конфигурационный файл туннельного интерфейса «/etc/wireguard/wg0.conf»:

cat srv-sec.key cli-pub.key >> /etc/wireguard/wg0.conf

Далее заполняем этот конфигурационный файл и приводим его к следующему виду:

img

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

systemctl enable --now wg-quick@wg0

Проверяем:

img

Данный туннельный интерфейс необходимо вынести в отдельную зону в firewalld, чтобы трафик не натировался и не блокировался:

firewall-cmd --permanent --zone=internal --add-interface=wg0 

Также настраиваем необходимые разрешения для firewalld:

firewall-cmd --permanent --zone=public --add-port=12345/{tcp,udp} 

firewall-cmd --reload 
FW-AMS

Установим пакет «wireguard»:

apt-get install -y wireguard

Создадим директорию для ключей:

mkdir /etc/wireguard/keys

cd /etc/wireguard/keys

При помощи утилиты «scp» забираем с FW-MSK закрытый ключ клиента и открытый ключ сервера:

scp root@100.70.4.18:/etc/wireguard/keys/cli-sec.key ./

scp root@100.70.4.18:/etc/wireguard/keys/srv-pub.key ./

Копируем закрытый ключ клиента и публичный ключ сервера в конфигурационный файл туннельного интерфейса «/etc/wireguard/wg0.conf»:

cat cli-sec.key srv-pub.key >> /etc/wireguard/wg0.conf

Далее заполняем этот конфигурационный файл и приводим его к следующему виду:

img

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

systemctl enable --now wg-quick@wg0

Данный туннельный интерфейс необходимо вынести в отдельную зону в firewalld, чтобы трафик не натировался и не блокировался:

firewall-cmd --permanent --zone=internal --add-interface=wg0 

firewall-cmd --reload

Проверяем:

img

img

15. Настройте работу OSPF между FW*, чтобы устройства из московского офиса имели связанность с устройствами из амстердамского.
FW-MSK

Необходимо дополнить конфигурационный файл туннельного интерфейса «/etc/wireguard/wg0.conf», и привести его к следующему виду:

img

  • Параметр Table в конфигурации WireGuard отвечает за управление маршрутной таблицей для интерфейса WireGuard. Когда значение установлено в off, WireGuard не будет управлять маршрутной таблицей, и вам придется настраивать маршруты вручную без автоматического добавления или удаления маршрутов через интерфейс WireGuard.

  • Параметр AllowedIPs в конфигурации WireGuard используется для указания подсетей (IP-адресов), которые разрешены для пересылки через туннель WireGuard. Когда трафик с определенного IP-адреса приходит к WireGuard интерфейсу, он будет перенаправлен через VPN туннель, если его IP-адрес находится в списке AllowedIPs.

Для применения настроек перезапускаем туннельный интерфейс:

wg-quick down wg0

wg-quick up wg0

img

После чего переходим к настройки OSPF:

vtysh
configure terminal
router ospf 
network 10.20.30.0/30 area 0
network 20.20.20.0/30 area 0
end
wr mem
show running-config

img

Также для зоны «internal» в которой находится наш туннельный интерфейс «wg0» в firewalld разрешим OSPF:

firewall-cmd --permanent --zone=internal --add-protocol={ospf,89} 

firewall-cmd --reload

Аналогичным образом настраиваем FW-AMS

FW-AMS

Содержимое файла «/etc/wireguard/wg0.conf»:

img

Конфигурация OSPF:

img

Проверка соседей:

img

img

Также посмотрим таблицы маршрутизации:

img

FW-MSK — знает о сетях LAN-AMS и DMZ-AMS, через туннельный интерфейс wg0 по ospf

img

аналогично FW-AMS — знает о сетях DMZ-MSK, LAN-MSK и SRV-MSK, через туннельный интерфейс wg0 по ospf

проверка доступа с SRV1-MSK до APP-AMS — через туннель Wireguard

img

16. Обеспечьте подключение клиента VPNClient к серверу VPN на FW-MSK.
16.1. Технология VPN на ваш выбор: IPsec, OpenVPN, WireGuard.
16.2. Клиент должен иметь доступ к серверам в сети SRV-MSK
16.3. Соединение должно автоматически устанавливаться при включении компьютера или входе под пользователем user.

Будем использовать также Wireguard для обеспечения подключения, так как клиент должен иметь ограниченный доступ а именно только к сети SRV-MSK, поэтому создадим новый туннельный интерфейс «wg1» на FW-MSK

FW-MSK

Переходим в каталог «/etc/wireguard/keys» и генерируем новую пару ключей для сервера и клиента:

cd /etc/wireguard/keys

wg genkey | tee srv01-sec.key | wg pubkey > srv01-pub.key

wg genkey | tee cli01-sec.key | wg pubkey > cli01-pub.key

Копируем приватный ключ сервера и публичный ключ клиента в конфигурационный файл туннельного интерфейса «/etc/wireguard/wg1.conf»:

cat srv01-sec.key cli01-pub.key >> /etc/wireguard/wg1.conf

Далее описываем сам конфигурационный файл и приводим его к следующему виду:

img

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

systemctl enable --now wg-quick@wg1

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

firewall-cmd --permanent --zone=public --add-port=23456/{tcp,udp} 

firewall-cmd --reload

далее необходимо, через OSPF объявить туннельную сеть для R0-MSK:

vtysh
configure terminal
router ospf 
network 10.9.9.0/30 area 0
end 
wr mem
exit

Переходим к конфигурации клиента:

VPNClient

Открываем браузер, переходим на сайт https://wireguard.com/install, после чего скачиваем клиентское приложиние по необходимую операционную систему:

img

после чего выполняем установку из скаченного файла

Далее описываем конфигурацию клиента:

img

img

img

img

Проверяем на FW-MSK:

img

И проверим таблицу маршрутизации у VPNClient:

img

видим доступ к сети SRV-MSK — через туннельный интерфейса

Проверим сетевую связность с VPNClient до SRV1-MSK:

img

При перезагрузке ПК или входе под пользователем «user» данный туннельный интерфейс поднимается в автоматическом режиме:

img

17. Настройте централизованный сбор журналов syslog на SRV1-MSK.
17.1. Журналы должны храниться в файлах /opt/logs/[hostname], где hostname — это короткое или полное доменное имя машины, предоставившей соответствующие сообщения.
17.2. PC-MSK должен записывать сообщения error и более важные.
17.3. SRV*-MSK должны записывать сообщения warning и более важные.
17.4. FW должен записывать сообщения от служб ospf и имеющихся на устройстве служб туннелирования (ipsec, openvpn, wireguard и т.д) уровня не менее notice.
SRV1-MSK

Установим пакет «rsyslog»:

apt-get install -y rsyslog

Создадим директорию для хранения журналов:

mkdir /opt/logs

Редактируем конфигурационный файл «/etc/rsyslog.conf»:

  • Добавьте следующие строки в конец файла, чтобы настроить хранение журналов в файлах /opt/logs/ согласно требованиям:

...
$template DynaFile,"/opt/logs/%HOSTNAME%.log"
*.* -?DynaFile

Это настроит запись всех журналов в файлы, где %HOSTNAME% будет заменено на соответствующее доменное имя машины.

Фильтрация журналов по уровню сообщений:

  • Добавьте следующие строки в конфигурацию rsyslog, чтобы фильтровать журналы в соответствии с указанными требованиями:

...
:msg, contains, "error" /opt/logs/PC-MSK.log
& stop

:msg, contains, "warning" /opt/logs/SRV-MSK.log
& stop

:msg, contains, "ospf" /opt/logs/FW.log
:msg, contains, "ipsec" /opt/logs/FW.log
:msg, contains, "openvpn" /opt/logs/FW.log
:msg, contains, "wireguard" /opt/logs/FW.log
& stop

Перезапустите службу rsyslog, чтобы применить изменения:

systemctl restart rsyslog

Теперь сервер SRV1-MSK будет настроен для централизованного сбора журналов syslog согласно указанным требованиям. Журналы будут храниться в соответствующих файлах /opt/logs/, и фильтрация сообщений будет осуществляться в соответствии с заданными правилами.

Модуль Б. (Развертывание и сопровождение сетевой инфраструктуры)

Время на выполнение модуля 4 часа

Формат участия в соревновании: командный (2 человека)

Топология

img

Характеристики ВМ

img

Таблица адресации

img

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

В зависимости от способа развёртывания стенда и выбранного гипервизора, варианты и способы развёртывания необходимых виртуальных машин может быть выполнено по разному

В данном случае Модуль А — выполнялся в среде VMWare Workstation

img

Поэтому выполнение пункта 1.1. будет продемонстрировано на примере VMWare Workstation

1.1. Разверните необходимые машины из шаблонов и назначьте им параметры, указанные в таблице “Характеристики виртуальных машин в Иркутском филиале”

Вариант развёртывания виртуальной машины из шаблона «OVA-файла»:

img

Выбираем «Открыть виртуальную машину» — после чего выбираем файл шаблона с расширением «.ova»:

img

выбираем необходимый шаблон, нажимаем «Открыть»

img

задаём необходимое имя, нажимаем «Импортировать»

img

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

img

После импорта виртуальной машины из шаблона — задаём необходимые параметры согласно заданию:

img

Аналогичным образом развернуть другие ВМ

1.2. Создайте виртуальные сети и соедините устройства согласно топологии

img

Для создания недостающих сетей в настройках ВМ нажимаем «Добавить», выбираем «Сетевой Адаптер» — нажимаем «Финиш»

img

img

Выбираем созданную сеть, нажимаем «Сохранить» Аналогично создаём и подключаем все остальные сети к ВМ

1.3. Настройте IPv4-адресацию на устройствах в иркутском филиале и ClientVV и обеспечьте выход в интернет.
FW-IKT

Задаём имя, если таковое не выполнено:

hostnamectl set-hostname FW-IKT; exec bash

Далее настраиваем сетевые интерфейсы, приводим конфигурационный файл «/etc/network/interfaces» к следующему виду:

img

Перезапускаем сетевую службу для применения IP — адресов:

systemctl restart networking

Проверяем:

ip -c a

Проверяем доступ в Интернет:

img

Затем, обновляем список пакетов и устанавливаем firewalld:

apt-get update && apt-get install -y firewalld

После настраиваем доступ в Интернет посредством NAT (PAT), а именно внешний интерфейс добавим в зону «public» и включим на неё «masquerade», интерфейс смотрящий в сеть LAN-IKT добавим в зону «trusted», а интерфейс смотрящий в зону DMZ-IKT добавим в зону «DMZ»:

firewall-cmd --permanent --zone=public --add-interface=ens33 

firewall-cmd --permanent --zone=public --add-masquerade 

firewall-cmd --permanent --zone=trusted --add-interface=ens34 

firewall-cmd --permanen --zone=dmz --add-interface=ens35 

firewall-cmd --reload

img

Также необходимо включить функцию пересылки пакетов (forwarding):

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

img

img

img

Далее назначаем имя и сетевые параметры:

img

img

Проверяем доступ в Интернет:

img

SRV1-IKT

Задаём имя, если таковое не выполнено:

hostnamectl set-hostname SRV1-IKT; exec bash

Далее настраиваем параметры сетевого интерфейса:

echo 192.168.1.100/24 > /etc/net/ifaces/ens33/ipv4address

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

Для применения настроек перезагружаем сетевой сервис:

systemctl restart network

Проверяем:

img

Аналогичным образом настраиваем APP-IKT:

APP-IKT

img

1.4. Настройте сервер разрешения имен
FW-IKT

Установим пакет «bind9»:

apt-get install -y bind9 

Далее редактируем конфигурационный файл «/etc/bind/named.conf.options» и приводим его к следующему виду:

img

секцией «forwarders { 100.100.100.100; }; — выполняем пункт 1.6. также при помощи утилиты «named-checkconf» проверяем данный файл

после описываем информацию о зоне «ikt.jun39.wsr» в конфигурационном файле «/etc/bind/named.conf.local»:

img

далее создаём каталог для хранения файла зоны «ikt.jun39.wsr» и копируем шаблон для дальнейшего редактирования:

mkdir /var/dns

cp /etc/bind/db.local /var/dns/ikt.db

chown -R bind:bind /var/dns

после чего настраиваем «apparmor» и приводим «/etc/apparmor.d/usr.sbin.named» к следующему виду:

img

перезагружаем службу «apparmor»:

systemctl restart apparmor

проверяем:

named-checkconf -z

img

Приступаем к заполнению зоны прямого просмотра «/var/dns/ikt.db»:

img

перезагружаем службу «bind9»:

systemctl restart bind9

Также в firewalld для зоны «DMZ» разрешаем сервис dns:

firewall-cmd --permanent --zone=dmz --add-service=dns 

firewall-cmd --reload

Также для того чтобы клиент PC-IKT получал сетевые параметры по DHCP — развернём на данном хосте DHCP — сервер:

Выполним установку пакета «isc-dhcp-server»:

apt-get install -y isc-dhcp-server

Также в файле «/etc/default/isc-dhcp-server» указываем через какой интерфейс слушать DHCP запросы:

sed -i “s/INTERFACESv4=\“\“/INTERFACESv4=\“ens34\“/g“ /etc/default/isc-dhcp-server

после чего настраиваем конфигурационный файл «/etc/dhcp/dhcpd.conf»:

img

также проверяем конфигурационный файл при помощи утилиты «dhcpd»:

dhcpd -t -cf /etc/dhcp/dhcpd.conf

img

перезапускаем dhcp — сервер:

systemctl restart isc-dhcp-server

Проверяем включаем PC-IKT и смотрим журнал:

img

полноценный «DORA» процесс, а также автоматическое добавление и обновление DNS записей:

img

PC-IKT

img

img

1.5. Устройства в локальных сетях должны обращаться с DNS запросами к своим FW–IKT.
SRV1-IKT

echo nameserver 192.168.1.1 > /etc/resolv.conf
APP-IKT

echo nameserver 172.16.1.1 > /etc/resolv.conf
1.6. FW–IKT должны выполнять пересылку DNS запросов

Выполнено на стадии настройки локального DNS сервера на FW-IKT

1.7. Настройте для всех новых устройств соответствующие им имена и доменное имя ikt.jun39.wsr.

Если имена устройств не назначены ранее то назначаем при помощи утилиты «hostnamectl»:

hostnamectl set-hostname <ИМЯ>;exec bash
{SRV1,APP}-IKT

echo search ikt.jun39.wsr >> /etc/resolv.conf 
1.8. Настройте синхронизацию времени аналогично другим филиалам
FW-IKT

Установим пакет «chrony»:

apt-get install -y chrony

Далее настраиваем синхронизацию с хостом 100.101.102.103 правим конфигурационный файл «/etc/chrony/chrony.conf»:

img

после выполняем перезапуск службы «chronyd»:

systemctl restart chronyd

Проверяем синхронизацию при помощи утилиты «chronyc»:

img

Также в firewalld для зону «DMZ» разрешим сервис NTP:

firewall-cmd --permanent --zone=dmz --add-service=ntp 

firewall-cmd --reload 
SRV1-IKT

Установим пакет «chrony»:

apt-get update && apt-get install -y chrony

Далее настраиваем синхронизацию с FW-IKT правим конфигурационный файл «/etc/chrony.conf»:

img

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

systemctl restart chronyd

Проверяем:

chronyc sources

Аналогично настраиваем APP-IKT:

APP-IKT

Установим пакет «chrony»:

apt-get update && apt-get install -y chrony

Далее настраиваем синхронизацию с FW-IKT правим конфигурационный файл «/etc/chrony.conf»:

img

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

systemctl restart chronyd

Проверяем:

chronyc sources
2. Настройте защищенные VPN-туннели FW-IKT<=>FW-MSK со следующими параметрами:
2.1. Технология VPN на ваш выбор: IPsec, OpenVPN, WireGuard.
2.2. Используйте современные надежные протоколы шифрования AES и SHA-2
2.3. Не допускается использование протоколов шифрования и аутентификации с длиной ключа/хеша менее 256 бит.
2.4. Настройте NAT и межсетевой экран таким образом, чтобы трафик для другого офиса не натировался и не блокировался.
2.5. Настройка тоннеля не должна помешать функционированию тоннеля между AMS и MSK.

Так же как и в модуле А — для построения защищённого VPN — туннеля будем использовать технологию Wireguard

FW-MSK

Напоминаю что туннельные интерфейсы уже есть, а именно:

  • wg0 — для соединения филиала MSK с AMS;

  • wg1 — для соединения клиента ClientVPN с сетью LAN-MSK;

Таким образом для туннеля между FW-IKT и FW-MSK будем использовать wg2;

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

cd /etc/wireguard/keys

wg genkey | tee srv02-sec.key | wg pubkey > srv02-pub.key

wg genkey | tee cli02-sec.key | wg pubkey > cli02-pub.key

После копируем содержание закрытого серверного ключа и открытого клиентского в конфигурационный файл туннельного интерфейса «/etc/wireguard/wg2.con»:

cat srv02-sec.key cli02-pub.key >> /etc/wireguard/wg2.conf

Далее приводим конфигурационный файл к следующему виду:

img

далее включаем и добавляем в автозагрузку туннельный интерфейс:

systemctl enable --now wg-quick@wg2

Также в настройках firewalld на зону «public» разрешаем порт иписанной в конфигурационном файле, и выносим данный туннельный интерфейс в зону «internal»:

firewall-cmd --permanent --zone=public --add-port=34567/{tcp,udp} 

firewall-cmd --permanent --zone=internal --add-interface=wg2 

firewall-cmd --reload 

переходим к настройке FW-IKT:

FW-IKT

Установим пакет «wireguard»:

apt-get install -y wireguard

Создадим директорию для ключей:

mkdir /etc/wireguard/keys

cd /etc/wireguard/keys

Затем при помощи утилиты «scp» заберём необходимые ключи с FW-MKS:

scp root@100.70.4.18:/etc/wireguard/keys/cli02-sec.key ./

scp root@100.70.4.18:/etc/wireguard/keys/srv02-pub.key ./

Далее добавим данные ключи в конфигурационный файл туннельного интерфейса «wg2»:

cat cli02-sec.key srv02-pub.key >> /etc/wireguard/wg2.conf

Затем приводим конфигурационный файл к следующему виду:

img

далее включаем и добавляем в автозагрузку туннельный интерфейс:

systemctl enable --now wg-quick@wg2

Также в настройках firewalld выносим данный туннельный интерфейс в зону «internal»:

firewall-cmd --permanent --zone=internal --add-interface=wg2 

firewall-cmd --reload 

Проверяем:

wg show wg2

img

3. Настройте работу OSPF, чтобы устройства из иркутского филиала имели связанность с устройствами из московского и амстердамского.
FW-IKT

Устанавливаем пакет «frr»:

apt-get install -y frr

Правим конфишурационный файл «/etc/frr/daemons» и ключаем демон «ospfd»:

sed -i “s/ospfd=no/ospfd=yes/g“ /etc/frr/daemons

Перезагружаем службу «frr»:

systemctl restart frr 

Переходим в режим конкурирования протокола ospfd в стиле Cisco Like:

vtysh

img

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

configure terminal
router ospf 
passive-interface default
no passive-interface wg2
network 10.8.8.0/30 area 0
network 192.168.1.0/24 area 0
network 172.16.1.0/24 area 0
end
wr mem
exit

Проверяем:

show running-config

img

Так же в firewalld на зону «internal» добавляем протокол ospf:

firewall-cmd --permanent --zone=internal --add-protocol={ospf,89} 

firewall-cmd --reload 

Переходим к настройке OSPFv2 на FW-MSK:

FW-MSK

vtysh

configure terminal
router ospf 
network 10.8.8.0/30 area 0 
end
wr mem

Проверяем соседство:

show ip ospf neighbor

img

Также проверим таблицу маршрутизации, в которой должна появиться информация о сетях LAN-IKT, DMZ-IKT:

show ip route ospf

img

Также проверим известные маршруты по OSPF с FW-IKT

img

таким образом, видно, что FW-IKT знаем о локальных сетях в московском и амстердамских филиалах

Проверим сетевую связность с APP-IKT до APP-MSK и APP-AMS

img

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

вы можете использовать подход с копированием файлов зон с DNS-серверов FW-MSK и FW-AMS на DNS-сервер FW-IKT в иркутском филиале, чтобы реализовать возможность обращения устройств из иркутского филиала к устройствам в других филиалах по доменным именам.

В этом случае вы будете создавать «слепки» зон с других филиалов на DNS-сервере FW-IKT в иркутском филиале. Это позволит FW-IKT разрешать имена устройств из других филиалов без необходимости перенаправления запросов на другие DNS-серверы.

scp root@100.70.4.18:/var/dns/msk.db /var/dns/

scp root@100.70.3.45:/var/dns/ams.db /var/dns/

Также редактируем файл «/etc/bind/named.conf.local» и вносим информацию о зонах московского и амстердамского филиалов:

img

также проверяем при помощи утилиты «named-checkconf»:

img

После чего перепусканем службу «bind9»:

systemctl restart bind9

Также необходимо на всех FW-* в firewalld на зону «internal» — разрешить сервис dns:

firewall-cmd --permanent --zone=internal --add-service=dns 

firewall-cmd --reload

После чего проверяем с APP-IKT доступ до APP-* в других филиалах:

APP-IKT

img

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

img

5. Создайте пользователя admin с паролем P@ssw0rd на SRV1–IKT, и добавьте в группу sudo.
SRV1-IKT

useradd admin

passwd admin

после задаём пароль P@ssw0rd и подтверждаем его

usermod -aG wheel admin

echo “admin ALL=(ALL:ALL) ALL“ >> /etc/sudoers

Проверяем:

img

6. Настройте общий доступ к файлам на SRV1–IKT по протоколу NFS.
6.1. Каталог для хранения файлов /opt/nfs/rw должен быть доступен для чтения и записи.
6.2. Каталог для хранения файлов /opt/nfs/ro должен быть доступен только для чтения.
6.3. NFS должен быть доступен для клиентов в сети LAN-IKT.
SVR1-IKT

Создаём директории и даём полные права для общего доступа согласно заданию:

mkdir -p /opt/nfs/{rw,ro}

chmod 777 /opt/nfs/{rw,ro}

После чего переходим к настройке общего доступа по протоколу NFS:

apt-get update && apt-get install -y nfs-{server,utils}

Далее приводим файл «/etc/exports» к следующему виду:

img

После включаем и добавляем в автозагрузку «nfs-server»:

systemctl enable --now nfs-server

Также проверим при помощи утилиты «showmount» какие директории доступны с данного хоста для монтирования другими в качестве общего ресурса:

img

7. Настройте клиент NFS на PC–IKT.
7.1. Путь /opt/nfs/rw на SRV1–IKT должен быть смонтирован в каталог /home/user/Desktop/nfs_rw на PC–IKT.
7.2. Путь /opt/nfs/ro на SRV1–IKTAMS должен быть смонтирован в каталог /home/user/Desktop/nfs_ro на PC–IKT.
7.3. Монтирование должно восстанавливаться при перезагрузке виртуальной машины.
PC-IKT

Выполним установку необходимых пакетов:

apt-get update && apt-get install -y nfs-{utils,clients}

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

mkdir -p /home/user/Desktop/nfs_{rw,ro}

После чего добавляем следующие записи в файл «/etc/fstab»:

echo "192.168.1.100:/opt/nfs/rw /home/user/Desktop/nfs_rw nfs defaults 0 0" >> /etc/fstab

echo "192.168.1.100:/opt/nfs/ro /home/user/Desktop/nfs_ro nfs defaults 0 0" >> /etc/fstab

Для применения монтирования воспользуемся утилитой «mount»:

mount -av

Проверяем:

img

Также правиряем права на чтение и запись для каталога «/home/user/Desktop/nfs_rw»:

img

img

И также права на чтение для каталога «/home/user/Desktop/nfs_ro»:

img

кнопка «Создать» — неактивна, так как права только на чтение:

Перейдём на SRV1-IKT и из под пользователя admin создадим тестовый файл, чтобы проверить права на чтение:

img

8. Настройте права доступа для каталога /opt/nfs/ на SRV1–IKT.
8.1. Пользователь admin должен иметь права на чтение и запись в каталог /opt/nfs и все его подкаталоги.

Выполнено ранее, так как были выданы полные права в моменте настройке NFS — сервера

Но можно выполнить и иным способом:

Создайте группу для пользователей, которым разрешен доступ к каталогу «/opt/nfs/»:

groupadd nfs_user

Добавьте пользователя admin в созданную группу:

usermod -aG nfs_user admin

Назначьте права на каталог /opt/nfs/ для группы nfs_users, чтобы члены этой группы имели доступ на чтение и запись:

chown -R root:nfs_user /opt/nfs

chmod -R 770 /opt/nfs
9. На каждом из серверов APP-* должен быть развернут WEB-сервер.
9.1. Сайт должен открываться по адресу web.jun39.wsr по протоколу HTTP на стандартном порте и должен быть доступен из сети интернет.
9.2. Сайт должен содержать следующий текст: “Welcome to Minecraft server mc.jun39.wsr site in XX region”, где XX заменено на “European”, “Central”, “Siberian” соответственно региональному расположению.

В качестве веб-сервера будем использовать NGINX:

APP-AMS

Установим пакет «nginx»:

apt-get update && apt-get install -y nginx

Далее заменим содержание страницы по умолчанию на то, что требуется в задании:

echo “Welcome to Minecraft server mc.jun39.wsr site in European region“ > /var/www/html/index.nginx-debian.html

После чего выполняем перезагрузку веб-сервера «nginx»:

systemctl restart nginx

Проверяем доступ по IP — адресу с клиента PC-AMS:

img

веб-сервер работает, доступ по имени «web.jun39.wsr» будет выполнен позднее

Аналогичным образом выполняем настройку веб-сервера в филиалах Москвы и Иркутска

APP-{MSK,IKT}

В случае с ОС Альт Сервер настройка веб-сервера занимает больше действий, но смысл тот же что в случае с Debian

Выполняем установку пакета «nginx»:

apt-get update && apt-get install -y nginx

Создадим директорию для хранения сайта:

mkdir -p /var/www/html

Далее в данной директории поместим сам файл с сайтом и содержимым в соответствии с регионом по заданию «index.html»:

echo “Welcome to Minecraft server mc.jun39.wsr site in <РЕГИОН> region“ > /var/www/html/index.html

После правим конфигурационный файл «/etc/nginx/sites-available.d/default.conf» и приводим его к следующему виду:

img

после чего создаём символическую ссылку на директорию «/etc/nginx/sites-enabled.d/»

ln -s /etc/nginx/sites-available.d/default.conf /etc/nginx/sites-enabled.d/default.conf

Включаем и добавляем в автозагруску веб-сервер «nginx»

systemctl enable --now nginx 

Проверяем с локальных клиентов в соответствующих филиалах:

PC-MSK

img

PC-IKT

img

После чего настраиваем доступ к сайту из сети Интернет, для этого необходимо на FW-* в соответствующих филиалах выполнить проброс портов, а также разрешить сервис «http» на внешнюю зону «public» и «dmz»:

FW-MSK

firewall-cmd --permanent --zone=public --add-service=http 

firewall-cmd --permanent --zone=dmz --add-service=http 

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=20.20.20.2 

firewall-cmd --reload 
FW-AMS

firewall-cmd --permanent --zone=public --add-service=http 

firewall-cmd --permanent --zone=dmz --add-service=http

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=172.16.200.200 

firewall-cmd --reload
FW-IKT

firewall-cmd --permanent --zone=public --add-service=http 

firewall-cmd --permanent --zone=dmz --add-service=http 

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=172.16.1.100 

firewall-cmd --reload

После чего запускаем любого клиента из сети Интернет и проверяем доступ к веб-сайтам:

ClientVV

img

img

img

для настройки доступа по имени «web.jun39.wsr» внутри локальной сети каждого филиала, на FW-* создадим зону «jun39.wsr» в которую добавим запись типа A с адресами APP-*:

FW-{MSK,AMS,IKT}

Добавляем в файл «/etc/bind/named.conf.local» информацию о зоне jun39.wsr:

img

после чего, копируем шаблон для зоны и заполняем его и приводим к следующему виду:

cp /etc/bind/db.local /var/dns/jun39.db

img

перезагружаем DNS — сервер:

systemctl restart bind9

Проверяем с клиента доступ по имени:

PC-MSK

img

Аналогично настраиваем на остальных FW-* и проверяем с локальных клиентов

img

img

10. На сервере VDS разверните сервер DNS
10.1. Сервер должен расшифровывать зону jun39.wsr
10.2. Имя jun39.wsr для клиентов в сети интернет должно расшифровываться в адрес сервера VDS.
10.3. Имя web.jun39.wsr для для клиентов в сети интернет должно расшифровываться во внешний адрес FW-* в ближайшем к клиенту регионе.
10.4. Не забудьте проконтролировать, что клиенты Client* обращаются с DNS-запросами к VDS.
VDS

Установим пакет «bind9»:

apt-get update && apt-get install -y bind9

После привидём файл «/etc/bind/named.conf.options» к следующему виду:

img

Далее описываем в файле «/etc/bind/named.conf.local» информацию о зоне «jun39.wsr»:

img

Также настраиваем apparmor и добавляем следующую сторку в файл «/etc/apparmor.d/usr.sbin.named»:

img

перезагружаем «apparmor»:

systemctl restart apparmor

Копируем шаблон для зоны и описываем зоны «jun39.wsr» и приводим её к следующему виду:

mkdir /var/dns

/etc/bind/db.local /var/dns/jun39.db

chown -R bind:bind /var/dns

img

проверяем утилитой «named-checkconf» с ключём «-z»

Перезагружаем службу «bind9»:

systemctl restart bind9

Далее на ClientEU, ClientSPB и ClientVV добавляем в файл «/etc/resolv.conf» информацию о том, что DNS — сервером будет является VDS:

echo nameserver 100.70.6.12 > /etc/resolv.conf

После чего проверяем с любого клиента:

img

Для реализации «во внешний адрес FW- в ближайшем к клиенту регионе*» самым быстрым (но не правильным для продакшена) способом, в связи с временными ограничениями чемпионата является правка локального файла «/etc/hosts» на клиентах в соответствие с адресами ближайших FW:

ClientEU

echo 100.70.3.45 web.jun39.wsr >> /etc/hosts

img

ClientSPB

echo 100.70.4.18 web.jun39.wsr >> /etc/hosts

img

ClientVV

echo 100.70.7.99 web.jun39.wsr >> /etc/hosts

img

Данный способ выполнит данные требования данного пункта и сэкономит время на настройки данного способа посредством BGP или других решений таких как Anycast, CDN, CD-WAN и другие.

11. Внутри филиалов имя web.jun39.wsr должно расшифровываться и в локальный адрес APP-* в соответствующем регионе и по нему должен открываться соответствующий сайт

Данный пункт был выполнен на стадии развёртывания веб-серверов, когда на FW-* были созданы внутренние зоны «jun39.wsr» и заведены соответствующие записи типа А ссылающиеся на IP — адреса APP в соответствующем филиале

img

img

img

12. Настройте CA на SRV2-MSK со следующими параметрами
12.1. Используйте /opt/ca в качестве корневой директории CA.
12.2. Страна RU;
12.3. Организация WSR
12.4. CN должен быть установлен как WSR CA.
12.5. Создайте корневой сертификат CA.
12.6. SRV2-MSK и PC-MSK должны доверять CA.
SRV2-MSK

Установим пакет «openssl»:

apt-get install -y openssl

Далее создадим директорию в качестве корневой для СА согласно заданию:

mkdir /opt/ca

Далее скопируем конфигурационный файл «/etc/openssl/openssl.cnf»:

cp /etc/openssl/openssl.cnf /opt/ca

После редактируем данный файл «/opt/ca/openssl.cnf» и проводим его к следующему виду:

img

в секции [ CA_default ] — правим параметр «dir» и указываем ранее созданную директорию в качестве корневой для СА

img

далее в секции [ req_distinguished_name ] — правим согласно заданию следующие параметры: «countryName», «0.organizationName» и «commonName»

Затем при помощи утилиты «openssl» создаём корневой ключ и сертификат СА:

cd /opt/ca

openssl genrsa -out ca.key 2048

openssl req -x509 -new -key ca.key -days 500 -out ca.pem -config openssl.cnf

После выполняем добавления корневого сертификата в качестве доверенного:

cp /opt/ca/ca.pem /etc/pki/ca-trust/source/anchors/ && update-ca-trust
PC-MSK

Аналогичным образом выполняем настройку клиента, предварительно при помощи утилиты «scp» забрав корневой сертификат «ca.pem» с SRV2-MSK:

scp root@srv2-msk:/opt/ca/ca.pem /etc/pki/ca-trust/source/anchors/ && update-ca-trust
13. На сервере SRV1-MSK должен быть развернут WEB-сервер:
13.1. Сайт должен открываться по адресу corp.msk.jun39.wsr
13.2. Сайт должен содержать следующий текст “Welcome to secure corporate portal jun39.wsr”
13.3. Сайт должен функционировать по протоколу HTTPS. При обращении по протоколу HTTP должен происходить автоматический редирект на HTTPS.
13.4. WEB-сервер должен иметь сертификат, подписанный корпоративным центром сертификации
13.5. Сайт должен открываться с PC1-MSK без ошибок и предупреждений
SRV2-MSK

Для начала с генерируем ключ, запрос и сертификат на основе подписанного запроса при помощи ранее настроенного Центра Сертификации:

cd /opt/ca

openssl genrsa -out corp.key 2048

openssl req -new -key corp.key -out corp.csr -config openssl.cnf

img

оставляем все значения по умолчанию за исключением CN

openssl x509 -req -in corp.csr -CA ca.pem -CAkey ca.key -CAcreareserial -out corp.crt

Переходим к настройке веб-сервера

SRV1-MSK

Выполняем установку веб-сервера «NGINX»:

apt-get install -y nginx 

Создаём директорию для хранения веб-сайта и помощаем в него информацию согласно заданию:

mkdir -p /var/www/html

echo “Welcome to secure corporate portal jun39.wsr“ > /var/www/html/index.html

После чего необходимо забрать созданные на SRV2-MSK для данного веб-сервера ключ и сертификат «corp.key» и «corp.crt»:

scp root@srv2-msk:/opt/ca/corp.key /etc/nginx

scp root@srv2-msk:/opt/ca/corp.crt /etc/nginx

Затем настраиваем конфигурационный файл веб-сервера «/etc/nginx/sites-available.d/default.conf» согласно заданию:

img

после чего создаём символическую ссылку на директорию «/etc/nginx/sites-enabled.d/»

ln -s /etc/nginx/sites-available.d/default.conf /etc/nginx/sites-enabled.d/default.conf

Включаем и добавляем в автозагруску веб-сервер «nginx»

systemctl enable --now nginx 
FW-MSK

Необходимо давить CNAME запись в зоне «msk.jun39.wsr» на DNS — сервере:

img

после перезагружаем службу «bind9»:

systemctl restart bind9

Проверяем с клиента:

PC-MSK

img

14. Обеспечьте подключение удаленного сотрудника с компьютера VPNclient к корпоративному порталу https://corp.msk.jun39.wsr посредством VPN-подключения. При этом открытие портала не должно вызывать ошибок и предупреждений безопасности.
VPNClient

Открываем приложение Wireguard:

img

затем нажимаем «Редактировать» — добавляем строчку «DNS» и указываем информацию о DNS — сервере и нажимаем «Сохранить»

Далее необходимо забрать корневой сертификат с SRV2-MSK:

через PowerShell:

scp root@srv2-msk:/opt/ca/ca.pem C:\Users\user\Desktop\

После при помощи «certlm» добавляем сертификат в качестве Корневого:

img

img

img

img

После чего проверяем доступ к порталу в браузере по адресу «https://corp.msk.jun39.wsr»:

img

15. На VDS разверните сервер Minecraft. Для этого непосредственно перед началом развертывания сервера выделите виртуальной машине побольше ресурсов, а именно 4 VCPU и 3 Gb оперативной памяти. После этого, разверните сервер Minecraft со следующими параметрами:
15.1. Имя сервера: Jun39
15.2. Ограничение кол-ва игроков: 12
15.3. Порт: по умолчанию
15.4. Проверка аккаунтов пользователей: отключена
15.5. Сервер должен быть запущен в виде контейнера Docker
15.6. Контейнер должен автоматически запускаться после перезагрузки компьютера
15.7. Для проверки можете использовать tlauncher расположенный на вашем операторском рабочем месте. Подключение осуществляется по внешнему адресу ISP (в сети 172.16.0.0), можно получить в интерфейсе среды виртуализации.
VDS

Для начала необходимо установить Docker:

apt-get install -y ca-certificates curl gnupg lsb-release

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get update

apt-get install -y docker-ce docker-ce-cli containerd.io

systemctl enable --now docker 

Дак же установим «docker-compose»:

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

img

Создадим файл «docker-compose.yml», где опишем как и какой контейнер необходимо запускать:

img

после чего выполняем сборку и запуск контейнера:

docker-compose up -d 

img

Смотрим список запущенных контейнеров:

docker ps 

img

16. На сервере DMZ-AMS разверните сервер облачного хранения данных. Для этого непосредственно перед началом развертывания сервера выделите виртуальной машине побольше ресурсов, а именно 2 VCPU и 2 Gb оперативной памяти. После этого, разверните сервер со следующими параметрами:
16.1. Файловый сервер: NextCloud
16.2. База данных: MariaDB
16.3. Веб интерфейс БД: phpMyAdmin
16.4. Порт NextCloud: 8080
16.5. Порт phpMyAdmin: 8888
16.6. Все сервисы должны быть запущены в виде контейнеров Docker
16.7. Все контейнеры должны автоматически запускаться после перезагрузки компьютера
DMZ-AMS

Аналогичным образом как и на VDS устанавливаем docker и docker-comose

img

После чего описываем «docker-compose.yml» в котором будем хранить информацию о том какие контейнеры и как запускать

Как итог будет создано и запущено три контейнера переменные для которых доступны по гиперссылкам:

img

после чего выполняем сборку и запуск контейнеров:

docker-compose up -d 

img

также смотрим список запущенных контейнеров:

docker ps

img

PC-AMS

Проверяем работоспособность сервисов:

img

img

17. Обеспечьте подключение удаленного сотрудника с компьютера VPNclient к корпоративному облачному хранилищу на DMZ-AMS посредством имеющегося VPN-подключения.

Добавляем в конфигурацию Wireguard на клиенте:

img

Проверяем доступ к сервисам:

img