Общие сведения о системе РЕД ОС

РЕД ОС — российская многопользовательская, многозадачная операционная система общего назначения для серверов и рабочих станций, предоставляющая универсальную среду для использования прикладного программного обеспечения. Она создана на основе ведущих мировых технологий с открытым исходным кодом, глубоко доработана отечественными инженерами и полностью независима от зарубежных инфраструктур поддержки.

Система обладает высоким уровнем встроенной защиты информации, проходя регулярные аудиторские проверки на отсутствие скрытых закладок и недекларированных возможностей. Платформа сертифицирована ФСТЭК России по 4 уровню доверия, что делает ее идеальным выбором для развертывания в медицинских учреждениях, финансовых структурах, силовых ведомствах и крупных промышленных предприятиях.

Благодаря модульной архитектуре, РЕД ОС легко адаптируется под любые корпоративные задачи: от простой офисной печатной машины до сложнейших вычислительных кластеров и баз данных высокой доступности. Система включает в себя полноценную поддержку шифрования по стандартам ГОСТ, встроенные механизмы мандатного контроля доступа и надежные инструменты аудита системных логов.

В отличие от классических дистрибутивов общего назначения, РЕД ОС предлагает широкую экосистему совместимости, в которую входят сотни отечественных программных продуктов: CRM-системы, офисные редакторы, средства криптографии и специализированное банковское ПО.

РЕД ОС 7.3 Муром

Дистрибутив РЕД ОС 7.3 представляет собой надежную LTS-платформу. Он ориентирован на корпоративных пользователей и государственные ведомства. Включает ядра веток 5.15 LTS и 6.1 LTS, современные пакеты совместимости и графические среды MATE и Cinnamon.

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

Пакетная база 7.3 Муром также полностью поддерживает установку российских криптографических модулей КриптоПро CSP для работы с электронными подписями на государственных порталах.

РЕД ОС 8.0

Новейшая версия операционной системы РЕД ОС 8 предлагает современный интерфейс, усовершенствованную подсистему рендеринга Wayland и оптимизированные инструменты виртуализации. Снижено время отклика ядра и повышена стабильность СУБД под высокими нагрузками.

Платформа также включает встроенную поддержку Flatpak и Docker, позволяя развертывать современные контейнеризированные приложения за несколько кликов с высокой степенью изоляции процессов.

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

Процесс обновления РЕД ОС

Обновление пакетной базы осуществляется с помощью менеджера пакетов dnf. Перед процедурой рекомендуется обновить локальный индекс пакетов:

dnf clean all
dnf makecache
dnf update -y

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

Вы также можете настроить автоматическое скачивание только критических патчей безопасности через службу dnf-automatic.

Программное обеспечение РЕД ОС

Официальные репозитории содержат тысячи прикладных программ: офисные пакеты (LibreOffice, Р7-Офис), графические редакторы (GIMP, Inkscape), базы данных и средства контейнеризации.

Все программы проходят строгую цифровую подпись и проверку безопасности перед добавлением в репозитории РЕД СОФТ.

Системные администраторы могут использовать локальные зеркала репозиториев для снижения расхода внешнего интернет-трафика.

Поддерживаемое оборудование

РЕД ОС поддерживает широкий спектр периферии, включая сетевые карты, сканеры, МФУ и дискретные графические чипы Nvidia. Для установки закрытых драйверов Nvidia выполните:

dnf install akmod-nvidia nvidia-driver -y

Для принтеров используется встроенная служба CUPS, настройку которой можно производить через веб-интерфейс на порту 631.

Поддерживаются популярные российские архитектуры процессоров, включая Эльбрус и Байкал-М.

Графический интерфейс пользователя

Пользователю доступны две основные легковесные графические оболочки — MATE и Cinnamon. Обе среды поддерживают глубокую кастомизацию, горячие клавиши и виджеты мониторинга ресурсов.

Для тонкой настройки тем оформления и иконок вы можете использовать встроенный «Центр управления».

Для терминальных серверов поддерживается оптимизированная среда XFCE, снижающая нагрузку на оперативную память.

Командная строка и терминал

Командный интерпретатор bash позволяет автоматизировать любые процессы администрирования. Основные команды навигации по файловой системе:

cd /etc/sysconfig
ls -la
pwd

Для просмотра вывода системного журнала используйте journalctl -xe.

Вы также можете использовать шелл Zsh с плагином автодополнения для повышения эффективности работы.

Сетевые настройки и безопасность

За сетевую конфигурацию отвечает служба NetworkManager. Управление брандмауэром firewalld производится через CLI:

firewall-cmd --state
firewall-cmd --get-active-zones

Все изменения брандмауэра записывайте с флагом --permanent для сохранения после перезагрузки.

Для глубокого анализа трафика вы можете использовать консольный сниффер tcpdump.

Администрирование пользователей

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

useradd -m newuser
passwd newuser
usermod -aG wheel newuser

Файл настроек привилегий расположен по пути /etc/sudoers.

Управление парольными политиками (срок действия, минимальная длина) настраивается в файле /etc/login.defs.

11.1 Подготовка к установке серверной ОС

Установка серверной версии РЕД ОС начинается с подготовки аппаратного обеспечения и разметки дискового пространства. Для серверных платформ критически важно обеспечить отказоустойчивость дисковой подсистемы, поэтому на этапе разметки дисков настоятельно рекомендуется использовать технологию LVM (Logical Volume Manager) или аппаратный/программный RAID-массив.

Рекомендуемая схема разметки диска для сервера:

  • /boot — не менее 1 ГБ (файловая система ext4) для размещения ядер Linux и файлов загрузчика GRUB.
  • /boot/efi — 500 МБ (FAT32) для систем с UEFI.
  • / (root) — от 20 ГБ до 50 ГБ (XFS или ext4) под системные файлы.
  • /var — основной объем диска (XFS), так как здесь будут располагаться базы данных, логи веб-служб и конфигурации домена.
  • swap — размер равен объему RAM (если RAM < 8 ГБ) или половине объема (если RAM > 8 ГБ).

При выборе пакетов на этапе установки выберите профиль "Минимальная установка" (Minimal Install) для минимизации площади атаки и снижения потребления ресурсов сервера, либо "Сервер" без графического окружения.

11.2 Пошаговая настройка служб

Настройте имена устройств согласно топологии. Используем полное доменное имя: hostnamectl hostname host-name.au-team.irpo (где host-name имя вашего устройства, например (hq-srv, br-rtr, isp))

На всех устройствах необходимо сконфигурировать IPv4: 
− nmtui > Изменить подключение > Выбираем нужный интерфейс > Стрелочка вправо > Изменить > Конфигурация IPv4:
Изменить с Автоматически на вручную и нажать > Показать > Адреса > Добавить, после чего задаём IP-адрес и при необходимости шлюз и серверы DNS, после чего сохраняем изменения с помощью ОК.
Для начала можно использовать DNS сервер Yandex:(77.88.8.7)

Для применения изменений выходим в командную строку и прописываем команду:
nmcli connection up (INTERFACE)
(где INTERFACE – название вашего интерфейса, настройки которого необходимо обновить (например, ens33))

На маршрутизаторах (ISP/BR-RTR/HQ-RTR) включаем параметр, отвечающий за пересылку пакетов:
echo “net.ipv4.ip_forward=1” >> /etc/sysctl.conf
sysctl -p

Таблица IP-адресов:
Имя устройства      	IP-адрес	 		Шлюз по умолчанию
	ISP		ens33:DHCP			-----
			ens34: 172.16.1.1 /28
			ens35: 172.16.2.1 /28

	HQ-RTR		ens33: 172.16.4.2/28		ens33:172.16.1.1
			ens34.vlan100: 
			192.168.100.1/27
			ens34.vlan200: 
			192.168.200.1/27
			ens34.vlan999: 
			192.168.99.1/29

	BR-RTR
			ens33: 172.16.5.2/28		ens:33.172.16.2.1
			ens34: 172.30.100.1/28

	HQ-SRV
			ens33.vlan100:			ens33:192.168.100.1
			192.168.100.10/27

	BR-SRV
			ens33: 172.30.100.10/28		ens33:172.30.100.1

	HQ-CLI
			ens33.vlan200: DHCP		DHCP

2) Настройка ISP
Настройте адресацию на интерфейсах:
● Интерфейс, подключенный к магистральному провайдеру, 
получает адрес по DHCP
● Настройте маршруты по умолчанию там, где это необходимо
● Интерфейс, к которому подключен HQ-RTR, подключен к сети 
172.16.1.0/28
● Интерфейс, к которому подключен BR-RTR, подключен к сети 
172.16.2.0/28
● На ISP настройте динамическую сетевую трансляцию в сторону 
HQ-RTR и BR-RTR для доступа к сети Интернет 

НА ISP 
dnf install iptables-services -y
systemctl enable --now iptables
iptables -F
iptables -A FORWARD -s 172.16.0.0/16 -j ACCEPT
iptables -A FORWARD -d 172.16.0.0/16 -j ACCEPT
iptables -t nat -A POSTROUTING -o ens33 -s 172.16.0.0/16 -j MASQUERADE
systemctl stop firewalld
systemctl disable firewalld
iptables-save > /etc/sysconfig/iptables
ПРОВЕРЯЕМ ПИНГИ НА 8.8.8.8 С HQ-RTR и BR-RTR 

3)Создание локальных учетных записей 
● Создайте пользователя remote_user на серверах HQ-SRV и BR-SRV
● Пароль пользователя remote_user с паролем P@ssw0rd
● Идентификатор пользователя 2026
● Пользователь remote_user должен иметь возможность запускать sudo без дополнительной аутентификации.
useradd -m -U -s /bin/bash -u 2026 remote_user 
passwd remote_user 
P@ssw0rd 
P@ssw0rd 
echo “remote_user ALL=(ALL) NOPASSWD: ALL” >> /etc/sudoers 

Создайте пользователя net_admin на маршрутизаторах HQ-RTR и BR-RTR 
● Пароль пользователя net_admin с паролем P@ssw0rd
● При настройке на EcoRouter пользователь net_admin должен обладать максимальными привилегиями
● При настройке ОС на базе Linux,запускать sudo без дополнительной аутентификации
useradd -m -U -s /bin/bash net_admin 
passwd net_admin 
P@ssw0rd 
P@ssw0rd 
echo “net_admin ALL=(ALL) NOPASSWD: ALL” >> /etc/sudoers

4)Настройте на интерфейсе HQ-RTR в сторону офиса HQ 
виртуальный коммутатор: 
● Сервер HQ-SRV должен находиться в ID VLAN 100
● Клиент HQ-CLI в ID VLAN 200
● Создайте подсеть управления с ID VLAN 999
● Основные сведения о настройке коммутатора и выбора реализации разделения на VLAN занесите в отчёт
nmtui > Изменить подключение > Добавить > VLAN и настраиваем VLAN. 
Данный шаг выполняем на HQ-RTR – ens34, HQ-SRV – ens33, HQ-CLI – cens33. (Шлюз и Серверы DNS для HQ-CLI и HQ-SRV)

5)Настройка безопасного удаленного доступа на серверах HQ-SRV и BR- SRV: 
● Для подключения используйте порт 2026
● Разрешите подключения только пользователю remote_user
● Ограничьте количество попыток входа до двух
● Настройте баннер «Authorized access only»
Создаём баннер:
echo “Authorized access only” > /etc/ssh/banner.txt

Настраиваем SSH: 
nano /etc/ssh/sshd_config
Port 2026
AllowUsers remote_user
MaxAuthTries 2
Banner /etc/ssh/banner.txt

Разрешаем подключение по порту 2026:

Выключаем SELinux и перезапускаем сервер:

nano /etc/selinux/config

Меняем значение на disabled:
SELINUX=disabled

перезапускаем сервер:
reboot

Перезапускаем ssh:
systemctl restart sshd

Далее с HQ-RTR и BR-RTR проверяем доступ до соответствующих серверов в своей локальной сети:
ssh -l sshuser 172.30.100.10 -p 2026
ssh -l sshuser 192.168.100.10 -p 2026

6)Между офисами HQ и BR необходимо сконфигурировать ip туннель: 
• Сведения о туннеле занесите в отчёт
• На выбор технологии GRE или IP in IP
Заходим в nmtui: Стрелочка вправо – добавить; Выбираем IP-Туннель; Конфигурируем дальше по скринам (записям), не забыв изменить режим на GRE HQ-RTR: 

HQ-RTR:
Имя профиля: tun0
Устройство: tun0
Режим: <GRE>
Родительский: ens33
Локальный IP: 172.16.1.2
Удаленный IP: 172.16.2.2 

КОНФИГУРАЦИЯ IPv4: <Вручную>
Адреса: 10.10.10.1/30

BR-RTR: 
Имя профиля: tun0
Устройство: tun0
Режим: <GRE>
Родительский: ens33
Локальный IP: 172.16.2.2
Удаленный IP: 172.16.1.2 

КОНФИГУРАЦИЯ IPv4: <Вручную>
Адреса: 10.10.10.2/30

ПОСЛЕ ЭТОГО НА ОБОИХ РОУТЕРАХ ПИШЕМ:
nmcli connection modify tun0 ip-tunnel.ttl 64

И перезапускаем tunnel через nmtui (выключаем и включаем интерфейс; Проверяем пинги с двух роутеров на 10.10.10.1 и 10.10.10.2 

7)Обеспечьте динамическую маршрутизацию: ресурсы одного офиса должны быть доступны из другого офиса. Для обеспечения динамической маршрутизации используйте link state протокол на ваше усмотрение. 
● Разрешите выбранный протокол только на интерфейсах в ip туннеле
● Маршрутизаторы должны делиться маршрутами только друг с другом
● Обеспечьте защиту выбранного протокола посредством парольной защиты
● Сведения о настройке и защите протокола занесите в отчёт

HQ-RTR И BR-RTR:

dnf install frr
systemctl enable --now frr
nano /etc/frr/daemons 
заменить no на yes в ospfd=yes
systemctl restart frr
vtysh

ДАЛЕЕ РАБОТА КАК В CISCO:
conf t
router ospf

Команды для HQ-RTR:
network 192.168.100.0/27 area 0
network 192.168.200.0/27 area 0
network 192.168.99.0/29 area 0
network 10.10.10.0/30 area 0
ospf router-id 172.16.1.2
exit
int ens33 (все тоже самое и на ens34 ,ens35)
ip opsf passive

Команды для BR-RTR
network 172.30.100.0/28 area 0
network 10.10.10.0/30 area 0
ospf router-id 172.16.2.2
int ens33 (все тоже самое и на ens34)
ip opsf passive

(Данные команды одновременно пишем в OSPF на HQ-RTR И BR-RTR, но это не точно)
area 0 authentication
exit
interface tun0
ip ospf authentication
ip ospf authentication-key P@ssw0rd
do wr
exit
exit
exit

8)Настройка динамической трансляции адресов.
● Настройте динамическую трансляцию адресов для обоих офисов.
● Все устройства в офисах должны иметь доступ к сети Интернет
НА HQ-RTR И BR-RTR:
systemctl --now enable firewalld
firewall-cmd --set-default-zone=trusted
firewall-cmd --zone=trusted --add-masquerade --permanent
systemctl restart firewalld

9)Настройка протокола динамической конфигурации хостов.
● Настройте нужную подсеть
● Для офиса HQ в качестве сервера DHCP выступает маршрутизатор HQ-RTR.
● Клиентом является машина HQ-CLI.
● Исключите из выдачи адрес маршрутизатора
● Адрес шлюза по умолчанию – адрес маршрутизатора HQ-RTR.
● Адрес DNS-сервера для машины HQ-CLI – адрес сервера HQ-SRV.
● DNS-суффикс для офисов HQ – au-team.irpo
● Сведения о настройке протокола занесите в отчёт

dnf install dhcp-server
nano /etc/dhcp/dhcpd.conf

Пишем это в файле:
subnet 192.168.200.0 netmask 255.255.255.224 {
range 192.168.200.2 192.168.200.30;
option routers 192.168.200.1;
option domain-name-servers 192.168.100.10;
option domain-name “au-team.irpo”;
}

subnet (IP-адрес сети) netmask (маска) {
range (начальный IP-адрес) (конечный IP-адрес);
option routers (шлюз по умолчанию);
option broadcast-address (широковещательный IP-адрес);
option domain-name-servers (IP-адрес DNS сервера);
option domain-name ("суффик домена");
}

systemctl enable --now dhcpd
dhcpd
Получаем адрес на HQ-CLI путём отключения и включения интерфейса ens33.vlan200.

ПРОВЕРЯЕМ НА HQ-RTR, ЧТО ЕСТЬ ЗАПИСЬ В ФАЙЛЕ, УКАЗЫВАЮЩАЯ НА ПОЛУЧЕНИЕ АДРЕС КЛИЕНТОМ:
cat /var/lib/dhcpd/dhcpd.leases

10)Настройка DNS для офисов HQ и BR.
● Основной DNS-сервер реализован на HQ-SRV.
● Сервер должен обеспечивать разрешение имён в сетевые адреса устройств и обратно в соответствии с таблицей 2
● В качестве DNS сервера пересылки используйте любой общедоступный DNS сервер

Устройство	Запись			Тип
HQ-RTR		hq-rtr.au-team.irpo 	A,PTR
BR-RTR		br-rtr.au-team.irpo	A
HQ-SRV		hq-srv.au-team.irpo	A,PTR
HQ-CLI		hq-cli.au-team.irpo	A,PTR
BR-SRV		br-srv.au-team.irpo	A
ISP		docker.au-team.irpo	A
ISP		web.au-team.irpo	A

dnf install bind
nano /etc/named.conf
Изменить строчки, на которые указывают стрелочки:
options {
	listen-on port 53 { any; }; <---
	listen-on-06 port 53 {::1; };
	directory "/var/named";
	dump-file "/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	memstatistics-file "/var/named/data/named_mem_stats.txt";
	secroots-file "/var/named/data/named.secroots";
	recursing-file "/var/named/data/named.recursing";
	allow-query { any; }; <---
	forwarders { 77.88.8.7; }; <---

(Вместо 77.88.8.7 ставим 10.39.0.1)

И в конец добавить:
zone "au-team.irpo" IN {
	type master;
	file "/opt/dns/au-team.irpo";
};

zone "100.168.192.in-addr.arpa" IN {
	type master;
	file "/opt/dns/100.168.192.in-addr.arpa";
};

zone "200.168.192.in-addr.arpa" IN {
	type master;
	file "/opt/dns/200.168.192.in-addr.arpa";
};

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

Далее копируем файл шаблона и заполняем по скринам.
mkdir /opt/dns
cd /opt/dns
cp /var/named/named.empty au-team.irpo
nano au-team.irpo

(/opt/dns/au-team.irpo)
$TTL 3H
au-team.irpo.	IN SOA	au-team.irpo.	au-team.irpo. (
					0;	serial
					1D;	refresh
					1H;	retry
					1W;	expire
					3H);	minimum

	NS	hq-srv.au-team.irpo. 
hq-rtr	A	192.168.100.1
hq-rtr	A	192.168.200.1 
br-rtr	A	172.30.100.1
hq-srv	A	192.168.100.10
hq-cli	A	192.168.200.2
br-srv	A	172.30.100.10
docker	A	172.16.1.1
web	A	172.16.2.1


cp /var/named/named.empty 100.168.192.in-addr.arpa
nano 100.168.192.in-addr.arpa

(/opt/dns/100.168.192.in-addr.arpa)
$TTL 3H
@	IN SOA	au-team.irpo.	au-team.irpo. (
					0;	serial
					1D;	refresh
					1H;	retry
					1W;	expire
					3H);	minimum

	NS	hq-srv.au-team.irpo. 
1	PTR	hq-rtr
10	PTR	hq-srv 


cp /var/named/named.empty 200.168.192.in-addr.arpa
nano 200.168.192.in-addr.arpa

(/opt/dns/200.168.192.in-addr.arpa)
$TTL 3H
@	IN SOA	au-team.irpo.	au-team.irpo. (
					0;	serial
					1D;	refresh
					1H;	retry
					1W;	expire
					3H);	minimum

	NS	hq-srv.au-team.irpo. 
1	PTR	hq-rtr
2	PTR	hq-cli

chmod -R 777 /opt/dns

ПРОВЕРЯЕМ КОНФИГУРАЦИЮ И ИСПРАВЛЯЕМ ОШИБКИ ЕСЛИ ЕСТЬ:
named-checkconf -z
systemctl restart named

Далее заходим в nmtui и меняем ДНС сервер с 77.88.8.7 (10.39.0.1) на 192.168.100.10. Так же указываем домен поиска au-team.irpo. После этого в nmtui переходим на вкладку «Активировать подключение». Выключаем и включаем интерфейс, на который ставили ДНС.

Пример:
Имя профиля: ens33
Устройство: ens33 (00:0C:29:6C:FA:98)
КОНФИГУРАЦИЯ IPv4: <Вручную>
Адреса: 172.16.1.2/28
Шлюз: 172.16.1.1
Серверы DNS: 192.168.100.10
Домены поиска: au-team.irpo

Проверяем
НА HQ-CLI И ПРОВЕРЯЕМ РАБОТОСПОБНОСТЬ
ping br-rtr
ping br-srv
ping hq-rtr
ping hq-srv
ping ya.ru

11) Настройте часовой пояс на всех устройствах, согласно месту проведения экзамена.
timedatectl set-timezone Europe/Moscow
timedatectl
(ПРОВЕРИТЬ ЗОНУ, ПО ЗАДАНИЮ ВРЕМЯ МЕНЯТЬ НЕ ПРОСЯТ)

11.3 Завершение установки и проверка

После того как все службы настроены, необходимо провести комплексное тестирование всей сетевой инфраструктуры. Начните с проверки получения IP-адреса на клиентской машине HQ-CLI по протоколу DHCP в VLAN 200.

Чек-лист для проверки работоспособности сети:

  • Проверка связности между филиалами: отправьте ICMP-запросы по GRE-туннелю с роутера HQ-RTR на BR-RTR.
  • Проверка работы DNS: выполните утилиту dig или nslookup на клиенте HQ-CLI для разрешения имени сервера hq-srv.au-team.irpo.
  • Аудит безопасности портов: убедитесь с помощью утилиты ss, что службы SSH и DNS слушают только разрешенные интерфейсы и порты:
ss -tulnp | grep -E "2026|53"

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

РЕД АДМ

РЕД АДМ позволяет централизованно управлять инфраструктурой на базе ОС Linux и Windows, развертывать домены, управлять учетными записями пользователей и настраивать групповые политики GPO.

Инструмент включает веб-консоль для удаленного администрирования, позволяя развертывать ПО на рабочие станции без прямого физического доступа к ним.

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

РЕД Виртуализация

РЕД Виртуализация — это отечественное решение для построения отказоустойчивых облачных сред, управления виртуальными машинами, хранологическим размещением данных и сетевыми коммутаторами на базе KVM.

Благодаря поддержке кластеризации вы можете организовывать пулы высокой доступности для СУБД и веб-ресурсов.

Интегрирована поддержка "живой" миграции виртуальных машин между физическими хостами без приостановки выполнения задач пользователями.

СУБД в РЕД ОС

РЕД ОС обеспечивает отличную совместимость с популярными СУБД, включая защищенную версию Ред База Данных, PostgreSQL 15, MariaDB и ClickHouse. Обеспечена высокая скорость транзакций.

Для баз данных высокой емкости рекомендуется использовать файловую систему XFS с оптимизированным размером блока ввода-вывода.

Для крупных ERP-систем поставляется преднастроенная конфигурация PostgreSQL, учитывающая специфику российских учетных систем.

15.1 Общие сведения о веб-серверах и прокси

Веб-сервер — это специализированное серверное программное обеспечение, предназначенное для обработки HTTP/HTTPS запросов от клиентов (веб-браузеров) и выдачи им ответов в виде HTML-страниц, медиафайлов или текстовых данных. В экосистеме РЕД ОС основными веб-серверами являются Nginx и Apache HTTP Server (httpd).

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

Использование веб-серверов в связке с обратными прокси-серверами (Reverse Proxy) позволяет строить высокодоступные, защищенные и легко масштабируемые сетевые архитектуры любой сложности.

15.2 Настройка и оптимизация веб-сервисов

Для достижения максимальной скорости обработки конкурентных запросов веб-серверы требуют тонкой настройки конфигурационных параметров под выделенные системные ресурсы.

Рекомендации по оптимизации Nginx:

  • Параметр worker_processes auto; позволяет автоматически распределить рабочие процессы Nginx по всем доступным ядрам центрального процессора.
  • Настройка пула соединений worker_connections 1024; определяет максимальное количество одновременных подключений к одному процессу.
  • Включение сжатия Gzip снижает объем передаваемого трафика на 50–70%, ускоряя рендеринг у конечного пользователя.

Кэширование статических файлов (картинок, стилей, JS-скриптов) на уровне прокси-сервера позволяет значительно разгрузить бэкенд-серверы приложений и ускорить обработку динамической выдачи.

15.3 Завершение установки и проверка

1)Настройте контроллер домена Samba DC на сервере BR-SRV:
• Имя домена au-team.irpo
• Введите в созданный домен машину HQ-CLI
• Создайте 5 пользователей для офиса HQ: имена пользователей формата hquser№ (например, hquser1, hquser2 и т.д.)
• Создайте группу hq, введите в группу созданных пользователей
• Убедитесь, что пользователи группы hq имеют право аутентифицироваться на HQ-CLI
• Пользователи группы hq должны иметь возможность повышать привилегии для выполнения ограниченного набора команд: cat, grep, id.
Запускать другие команды с повышенными привилегиями пользователи группы права не имеют.

На HQ-SRV: 
systemctl restart named
На BR-SRV: 
dnf install -y samba* krb5*
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak 
mv /etc/krb5.conf /etc/krb5.conf.bak
nano /etc/krb5.conf.d/crypto-policies

Изменяем файл следующим образом:
(скриншот)
-----------------------------------------------------------------
[libdefaults]
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192
permitted_enctypes = aes256-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192 ca...
-----------------------------------------------------------------

Для этого ставим курсор на существующую строчку permitted_enctypes, нажимаем CTRL+K и три раза CTRL+U. После этого изменяем начало первых двух строчек.
Выходим из nano: нажимаем ctrl+x, затем y

samba-tool domain provision --use-rfc2307 --interactive
Жмём Enter 3 раза. Далее на моменте DNS backend пишем NONE. Затем указываем пароль администратора P@ssw0rd
(скриншот)
-----------------------------------------------------------------
samba-tool domain provision -use-rfc2307 --interactive
Realm [AU-TEAM.IRPO]:
Domain [AU-TEAM]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: NONE
Administrator password:
Retype password:
-----------------------------------------------------------------

cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
nano /etc/krb5.conf
В realms добавляем kdc:

(скриншот)
-----------------------------------------------------------------
[libdefaults]
	default_realm AU-TEAM.IRPO
	dns_lookup_realm = false
	dns_lookup_kdc = true

[realms]
AU-TEAM.IRPO = {
	default_domain au-team.irpo
	kdc = br-sru.au-team.irpo <---
}

[domain_realm]
	br-sru = AU-TEAM.IRPO
-----------------------------------------------------------------

kdc = br-srv.au-team.irpo

Выходим из nano: нажимаем ctrl+x, затем y

systemctl enable --now samba

Если запустить службы smb nmb winbind krb5kdc, то присоединить HQCLI к домену не получится. Решение - перезапуск BR-SRV
kinit administrator@AU-TEAM.IRPO

Что должно быть на экране:
(скриншот)
-----------------------------------------------------------------
kinit administrator@AU-TEAM.IRPO
Password for administrator@AU-TEAM.IRPO:
Warning: Your password will expire in 41 days on Вт 18 ноя 2025 17:34:11
-----------------------------------------------------------------

На HQ-CLI: 
echo “ au-team.irpo” >> /etc/hosts
realm join -U -v Administrator@AU-TEAM.IRPO

В конце добавления должна появиться надпись “Successfully enrolled machine in realm”

Если не получилось то:
nano /etc/krb5.conf

Приводим файл к следующему виду:
(скриншот)
-----------------------------------------------------------------
#To opt out of the system crypto-policies configuration of krb5, remove the 
#symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
includedir /etc/krb5.conf.d/

[logging]
	default = FILE:/var/log/krb5libs.log
	kdc = FILE:/var/log/krb5kdc.log
	admin_server = FILE:/var/log/kadmind.log

[libdefaults]
	dns_lookup_realm = false
	ticket_lifetime = 24h
	renew_lifetime = 7d
	forwardable = true
	rdns = false
	pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
	spake_preauth_groups = edwards25519
	dns_canonicalize_hostname = fallback
	qualify_shortname =
#	default_realm = EXAMPLE.COM
	default_ccache_name = KEYRING: persistent: %{uid}
udp_preference_limit = 0
default_realm = AU-TEAM.IRPO

[realms]
AU-TEAM.IRPO = {
	kdc = br-srv.au-team.irpo
	admin_server = br-srv.au-team.irpo
}

[domain_realm]
.au-team.irpo = AU-TEAM.IRPO
au-team.irpo = AU-TEAM.IRPO
-----------------------------------------------------------------

[realms]
AU-TEAM.IRPO = {
	kdc = br-srv.au-team.irpo
	admin_server = br-srv.au-team.irpo
}

[domain_realm]
.au-team.irpo = AU-TEAM.IRPO
au-team.irpo = AU-TEAM.IRPO 

и дальше повторяем не получившееся действие:

realm join -U -v Administrator@AU-TEAM.IRPO

На BR-SRV: 
samba-tool group add hq
for i in {1..5}; do samba-tool user add hquser$i P@ssw0rd; samba-tool group addmembers hq hquser$i; done
samba-tool group listmembers hq

Что должно быть на экране:
(скриншот)
-----------------------------------------------------------------
samba-tool group listmembers hq
hquser2
hquser4
hquser1
hquser3
hquser5
-----------------------------------------------------------------

На HQ-CLI: 
sudo -i
nano /etc/sssd/sssd.conf

[sssd]
domains au-team.irpo
config_file_version = 2
services = nss, pam

(скриншот)
-----------------------------------------------------------------
[domain/au-team.irpo]
default_shell = /bin/bash
ad_server = br-srv.au-team.irpo <-----
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = AU-TEAM.IRPO
realmd_tags = manages-system joined-with-adcli
-----------------------------------------------------------------

Дописываем в подчёркнутой строчке br-srv. (как на скриншоте)

Выходим из nano: нажимаем ctrl+x, затем y
systemctl restart sssd 

Выходим из nano: нажимаем ctrl+x, затем y
Далее переходим в «Настройки» - «Сетевые учетные записи». Выбираем Kerberos, вводим administrator@AU-TEAM.IRPO и P@ssw0rd

-----------------------------------------------------------------
(скриншот)
(на графическом интерфейсе на HQ-CLI)

		Учетная запись Вход в систему (Kerberos)
		Вход в систему (Kerberos)
		administrator@AU-TEAM.IRPO
	
	Использовать для Сетвевые ресурсы (включенный тумблер)

					(Удалить учетную запись)
-----------------------------------------------------------------

sss_cache -E
nano /etc/sudoers
Пишем в файл следующую строку:
%hq@au-team.irpo ALL=(ALL) /bin/cat, /bin/grep, /bin/id

-----------------------------------------------------------------
(скриншот)
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING,

## Allows people in group wheel to run all commands
%wheel ALL=(ALL)	ALL
%hq@au-team.irpo ALL=(ALL) /bin/cat, /bin/grep, /bin/id
## Same thing without a password
# %wheel	ALL=(ALL)	NOPASSWD:	ALL
-----------------------------------------------------------------

Выходим: нажимаем ctrl+x, затем y
Проверяем:
id hquser1@AU-TEAM.IRPO
su - hquser1@AU-TEAM.IRPO

-----------------------------------------------------------------
(скриншот)
[root@hq-cli username]# id hquser1@AU-TEAM.IRPO
uid=10601109 (hquser1@au-team.irpo) gid=10600513(domain users@au-team.irpo) группы=10600513(domain users@au-team.irpo), 10601103 (hq@au-team.irpo)
[root@hq-cli username]# su - hquser1@AU-TEAM.IRPO
Последний вход в систему: Пн окт 13 17:23:28 MSK 2025 на pts/0
[hquser1@au-team.irpo@hq-cli ~]$
выход
[root@hq-cli username]# 
-----------------------------------------------------------------

sudo cat /etc/hosts | grep au-team
id

-----------------------------------------------------------------
(скриншот)
[root@hq-cli username]# su - hquser1@AU-TEAM.IRPO
Последний вход в систему: Пн окт 13 17:28:06 MSK 2025 на pts/0
[hquser1@au-team.irpo@hq-cli ~]$ sudo cat /etc/hosts | grep au-team
172.30.100.2	au-team.irpo
[hquser1@au-team.irpo@hq-cli ~]$ id
uid=10601109 (hquser1@au-team.irpo) gid=10600513(domain users@au-team.irp
о) группы=10600513(domain users@au-team.irpo), 10601103 (hq@au-team.irpo)
контекст=unconfined_u:unconfined_r:unconfined_t:so-s0:co.c1023
[hquser1@au-team.irpo@hq-cli ~]$
выход
[root@hq-cli username]#
-----------------------------------------------------------------

2)Сконфигурируйте файловое хранилище на сервере HQ-SRV: 
• При помощи двух подключенных к серверу дополнительных дисков 
размером 1 Гб сконфигурируйте дисковый массив уровня 0
• Имя устройства – md0, при необходимости конфигурация массива 
размещается в файле /etc/mdadm.conf
• Создайте раздел, отформатируйте раздел, в качестве файловой системы 
используйте ext4
• Обеспечьте автоматическое монтирование в папку /raid

На HQ-SRV: 
Проверяем наличие дисков командой. Должны быть sdb, sdc:

lsblk 

-----------------------------------------------------------------
(скриншот)
[root@hq-sru ~]# lsblk
NAME	MAJ:MIN	RM	SIZE	RO	TYPE	MOUNTPOINTS
sda	8:0	0	20G	0	disk
-sda1	8:1	0	1M	0	part
-sda2	8:2	0	1G	0	part	/boot
-sda3	8:3	0	2G	0	part	[SWAP]
-sda4	8:4	0	17G	0	part	/
sdb	8:16	0	1G	0	disk <---
sdc	8:32	0	1G	0	disk <---
sr0	11:0	1	4,4G	0	rom
zram0	252:0	0	3,8G	0	disk	[SWAP]
[root@hq-sru ~]#
-----------------------------------------------------------------

Форматируем диски:
fdisk /dev/sdb
g
n
Жмём Enter 3 раза
w

Аналогично для диска sdc
Должно получиться так:

-----------------------------------------------------------------
(скриншот)
[root@hq-sru ~]# lsblk
NAME	MAJ:MIN	RM	SIZE	RO	TYPE	MOUNTPOINTS
sda	8:0	0	20G	0	disk
-sda1	8:1	0	1M	0	part
-sda2	8:2	0	1G	0	part	/boot
-sda3	8:3	0	2G	0	part	[SWAP]
-sda4	8:4	0	17G	0	part	/
sdb	8:16	0	1G	0	disk
-sdb1	8:17	0	1022M	0	part <---
sdc	8:32	0	1G	0	disk
-sdc1	8:33	0	1022M	0	part <---
sr0	11:0	1	4,4G	0	rom
zram0	252:0	0	3,8G	0	disk	[SWAP]
[root@hq-sru ~]#
-----------------------------------------------------------------

mdadm --create /dev/md0 --level=0 --raid-device=2 /dev/sdb1 /dev/sdc1
Далее проверяем, у md0 в типе должно быть написано raid0

-----------------------------------------------------------------
(скриншот)
[root@hq-sru ~]# lsblk
NAME	MAJ:MIN	RM	SIZE	RO	TYPE	MOUNTPOINTS
sda	8:0	0	20G	0	disk
-sda1	8:1	0	1M	0	part
-sda2	8:2	0	1G	0	part	/boot
-sda3	8:3	0	2G	0	part	[SWAP]
-sda4	8:4	0	17G	0	part	/
sdb	8:16	0	1G	0	disk
-sdb1	8:17	0	1022M	0	part
-md0	9:0	0	2G	0	radi0 <-----
sdc	8:32	0	1G	0	disk
-sdc1	8:33	0	1022M	0	part
-md0	9:0	0	2G	0	radi0 <-----
sr0	11:0	1	4,4G	0	rom
zram0	252:0	0	3,8G	0	disk	[SWAP]
[root@hq-sru ~]#
-----------------------------------------------------------------

mdadm --detail --scan --verbose >> /etc/mdadm.conf
mkfs.ext4 /dev/md0
mkdir /raid
nano /etc/fstab
В конец добавляем следующую строчку:

-----------------------------------------------------------------
(скриншот)
#/etc/fstab
#Created by anaconda on Wed Sep 4 14:28:47 2024
#
#Accessible filesystems, by reference, are maintained under '/dev/disk/'
#See man pages fstab (5), findfs(8), mount (8) and/or blkid(8) for more info.
#
#After editing this file, run 'systemctl daemon-reload' to update systend
#units generated from this file.
#
UUID=17edef9e-a50e-42b3-b70c-b95ffc8a7845 /	ext4	defaults	1	1
UUID=42507379-de96-4b77-820e-aec6b82caeb5 /boot	ext4	defaults	1	2
UUID=ad6593ae-4f04-429e-8909-794a01660015 none	swap	defaults	0	0
/dev/md0	/raid	ext4	defaults	0	0
-----------------------------------------------------------------

/dev/md0 /raid ext4 defaults 0 0

Выходим из nano: нажимаем ctrl+x, затем y
systemctl daemon-reload
mount -a
df -h

Должна быть строчка с примонтированной директорией /raid:

-----------------------------------------------------------------
(скриншот)
[root@hq-sru dns]# df -h

Файловая система	Размер	Использовано	Дост	Использовано%	Смонтировано в
deutmpfs		4,0M	0		4,0M	0%		/dev
tmpfs			2,0G	0 		2,0G	0%		/dev/shm
tmpfs			784M	3,2M		781M	1%		/run
/dev/sda4		17G	4,2G		12G	27%		/
tmpfs			2,0G	0		2,0G	0%		/tmp
/dev/sda2		974M	165M		742M	19%		/boot
tmpfs			392M	4,0K		392M	1%		/run/user/0
/dev/md0		2,0G	24K		1,9G	1%		/raid
-----------------------------------------------------------------

3)Настройте сервер сетевой файловой системы (nfs) на HQ-SRV: 
• В качестве папки общего доступа выберите /raid/nfs, доступ для чтения и записи исключительно для сети в сторону HQ-CLI
• На HQ-CLI настройте автомонтирование в папку /mnt/nfs
• Основные параметры сервера отметьте в отчёте
На HQ-SRV: 

dnf install nfs4-acl-tools -y
mkdir /raid/nfs
chown nobody:nobody /raid/nfs
chmod 777 /raid/nfs
nano /etc/exports

Добавляем в него следующую строчку:
/raid/nfs 192.168.200.0/27(rw) 192.168.100.1(rw)

Прописываем на всякий случай 192.168.100.1(rw), так как на HQ-RTR включен NAT на все интерфейсы и происходит подмена 192.168.200.2 на 192.1689.100.1

Выходим из nano: нажимаем ctrl+x, затем y
exportfs -a
systemctl enable --now nfs-server

Переходим на HQ-CLI: 
mkdir /mnt/nfs
nano /etc/fstab

Добавляем в конец следующую строчку:
:/raid/nfs /mnt/nfs nfs auto 0 0

-----------------------------------------------------------------
(скриншот)
#/etc/fstab
#Created by anaconda on Wed Sep 4 14:28:47 2024
#
#Accessible filesystems, by reference, are maintained under '/dev/disk/'
#See man pages fstab (5), findfs(8), mount (8) and/or blkid(8) for more info.
#
#After editing this file, run 'systemctl daemon-reload' to update systend
#units generated from this file.
#
UUID=17edef9e-a50e-42b3-b70c-b95ffc8a7845 /	ext4	defaults	1	1
UUID=42507379-de96-4b77-820e-aec6b82caeb5 /boot	ext4	defaults	1	2
UUID=ad6593ae-4f04-429e-8909-794a01660015 none	swap	defaults	0	0
192.1689.100.10:/raid/nfs	/mnt/nfs	nfs	auto	0	0
-----------------------------------------------------------------

4)Настройте службу сетевого времени на базе сервиса chrony на 
маршрутизаторе ISP:
• Вышестоящий сервер ntp на маршрутизаторе ISP - на выбор участника
• Стратум сервера - 5
• В качестве клиентов ntp настройте: HQ-SRV, HQ-CLI, BR-RTR, BR-SRV.
На ISP: 
nano /etc/chrony.conf

Добавляем # к трём любым строчкам, начинающимся с server ntp и 
дописываем ещё три строчки как на скриншоте:

-----------------------------------------------------------------
(скриншот)
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
server ntp1.uniiftri.ru iburst
#server ntp2.uniiftri.ru iburst
#server ntp3.uniiftri.ru iburst
#server ntp4.uniiftri.ru iburst
local stratum 5
allow 0/0
hwtimestamp *
-----------------------------------------------------------------

local stratum 5
allow 0/0
hwtimestamp *

Выходим из nano: нажимаем ctrl+x, затем y
systemctl restart chronyd
chronyc sources

-----------------------------------------------------------------
[root@isp ~]# chronyc sources
MS Name/IP address	Stratum	Poll	Reach	LastRx	Last sample
======================================================================
^* ntp1.uniiftri.ru	1	6	17	57	-237us[ -893] +/- 9217us
[root@isp ~]#
-----------------------------------------------------------------

На HQ-SRV, HQ-CLI, BR-RTR, BR-SRV: 
nano /etc/chrony.conf

Комментируем все сервера и добавляем созданный:

-----------------------------------------------------------------
(скриншот)
#server ntp1.uniiftri.ru iburst
#server ntp2.uniiftri.ru iburst
#server ntp3.uniiftri.ru iburst
#server ntp4.uniiftri.ru iburst
server 172.16.4.1 iburst prefer
-----------------------------------------------------------------

server  iburst prefer

Выходим из nano: нажимаем ctrl+x, затем y
systemctl restart chronyd
chronyc sources

-----------------------------------------------------------------
(скриншот)
[root@isp ~]# chronyc sources
MS Name/IP address	Stratum	Poll	Reach	LastRx	Last sample
======================================================================
^* ntp1.uniiftri.ru	2	6	1	1	-128us[ -120] +/- 10ms
[root@isp ~]#
-----------------------------------------------------------------

5)Сконфигурируйте ansible на сервере BR-SRV:
• Сформируйте файл инвентаря, в инвентарь должны входить HQ-SRV, HQCLI, HQ-RTR и BR-RTR
• Рабочий каталог ansible должен располагаться в /etc/ansible
• Все указанные машины должны без предупреждений и ошибок отвечать pong на команду ping в ansible посланную с BR-SRV.
На BR-SRV:
nano /etc/ansible/demo.ini

Пишем в файл:
-----------------------------------------------------------------
(скриншот)
[HQ-SRV]
192.168.100.10 ansible_user=sshuser ansible_port=2024
[HQ-CLI]
192.168.200.2 ansible_user=username
[HQ-RTR]
192.168.100.1 ansible_user=net_admin
[BR-RTR]
172.30.100.1 ansible_user=net_admin
-----------------------------------------------------------------

[HQ-SRV]
 ansible_user=sshuser ansible_port=2026
[HQ-CLI]
 ansible_user=username
[HQ-RTR]
 ansible_user=net_admin
[BR-RTR]
 ansible_user=net_admin
Выходим из nano: нажимаем ctrl+x, затем y
ssh-keygen -t rsa

Жмём Enter всегда до конца выполнения команды

Далее копируем ключи. На вопрос с сохранением отпечатка пишем yes, все пароли – P@ssw0rd

ssh-copy-id -p 2026 sshuser@
ssh-copy-id username@
ssh-copy-id net_admin@
ssh-copy-id net_admin@
Составляем конфигурационный файл:
nano /etc/ansible/ansible.cfg

-----------------------------------------------------------------
(скриншот)
# For previous versions of Ansible you
# Note that this file was always incom

# for example, for 2.9: https://github
[defaults]
Inventory = /etc/ansible/demo.ini
ask_pass = False
host_ket_cheking = False
interpreter_python=/usr/bin/python
-----------------------------------------------------------------

[defaults]
Inventory = /etc/ansible/demo.ini
ask_pass = False
host_ket_cheking = False
interpreter_python=/usr/bin/python

Выходим из nano: нажимаем ctrl+x, затем y
ansible -m ping all

Вывод должен быть следующим:

-----------------------------------------------------------------
(скриншот)
[root@br-sro username]# ansible -m ping all
HQ-CLI I SUCCESS => { 
	"changed": false,
	"ping": "pong"
}
BR-RTR | SUCCESS => {
	"changed": false,
	"ping": "pong"
}
HQ-SRU I SUCCESS => {
	"changed": false,
	"ping": "pong"
}
HQ-RTR | SUCCESS => {
	changed: false,
	"ping": "pong"
}
HQ-SRV I SUCCESS => {
	"changed": false,
	"ping": "pong"
}
HQ-RTR | SUCCESS => { 
	"changed": false,
	"ping": "pong"
}
[root@br-sru username]#
-----------------------------------------------------------------

6)Разверните веб приложение в docker на сервере BR-SRV:
• Средствами docker должен создаваться стек контейнеров с вебприложением и базой данных
• Используйте образы site_latest и mariadb_latest, располагающиеся в директории docker в образе Additional.iso
• Основной контейнер testapp должен называться testapp
• Контейнер с базой данных должен называться db
• Импортируйте образы в docker, укажите в yaml файле параметры подключения к СУБД, имя БД -testdb, пользователь test с паролем P@ssw0rd, порт приложения 8080, при необходимости другие параметры
• Приложение должно быть доступно для внешних 
подключений через порт 8080

На BR-SRV:
Перед развертыванием выполняем монтирование ISO образа с необходимыми Docker-образами. 
Для этого переходим через VMWare WorkStation в настройки виртуальной машины. Там выбираем CD/DVD driver 1 > Use ISO image file > Browse >  Additional.iso > Open > OK.

Выходит уведомление, соглашаемся

После этого заново заходим в настройки BR-SRV, выбираем CD/DVD driver 1 > Connected > OK.

На BR-SRV:
mount /dev/cdrom /mnt
dnf install docker-ce docker-compose –y
systemctl enable --now docker
docker --version
docker load < /mnt/docker/site_latest.tar
docker load < /mnt/docker/mariadb_latest.tar

Проверка:
docker images

-----------------------------------------------------------------
(скриншот)
[root@br-sru ~]# docker images
REPOSITORY	TAG	IMAGE ID	CREATED		SIZE
site		latest	27cd88ea6100	3 months ago	347MB
mariadb		latest	dace79266a80	4 months ago	326MB
[root@br-srv ~]#

-----------------------------------------------------------------

nano site.yml

-----------------------------------------------------------------
(скриншот)
services:
  db:
    image: mariadb
    container_name: db
    environment:
      MARIADB_ROOT_PASSWORD: P@ssw0rd
      MARIADB_DATABASE: testdb
      MARIADB_USER: test
      MARIADB_PASSWORD: P@ssw0rd
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped

  testapp:
    image: site
    container_name: testapp
    environment:
      DB_TYPE: maria
      DB_HOST: db
      DB_NAME: testdb
      DB_USER: test
      DB_PASS: P@ssw0rd
      DB_PORT: 3306
    ports:
      - "8080:8000"
    depends_on:
      - db
    restart: unless-stopped

volumes:
  db_data:
-----------------------------------------------------------------

services:
  db:
    image: mariadb
    container_name: db
    environment:
      MARIADB_ROOT_PASSWORD: P@ssw0rd
      MARIADB_DATABASE: testdb
      MARIADB_USER: test
      MARIADB_PASSWORD: P@ssw0rd
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped

  testapp:
    image: site
    container_name: testapp
    environment:
      DB_TYPE: maria
      DB_HOST: db
      DB_NAME: testdb
      DB_USER: test
      DB_PASS: P@ssw0rd
      DB_PORT: 3306
    ports:
      - "8080:8000"
    depends_on:
      - db
    restart: unless-stopped

volumes:
  db_data:

Выходим из nano: нажимаем ctrl+x, затем y
docker-compose -f site.yml up -d

На HQ-CLI:
Открываем браузер и заходим на :8080

-----------------------------------------------------------------
(скриншот)
На скринщоте показан сайт, который находиться на BR-SRV
На самом сайте должно быть написано "Очень нужный и важный сайт"
-----------------------------------------------------------------

7)Разверните веб приложение на сервере HQ-SRV:
• Используйте веб-сервер apache
• В качестве системы управления базами данных используйте mariadb
• Файлы веб приложения и дамп базы данных находятся в директории web образа Additional.iso
• Выполните импорт схемы и данных из файла dump.sql в базу данных webdb
• Создайте пользователя web с паролем P@ssw0rd и предоставьте ему права доступа к этой базе данных
• Файлы index.php и директорию images скопируйте в каталог веб сервера apache
• В файле index.php укажите правильные учётные данные для подключения к БД
• Запустите веб сервер и убедитесь в работоспособности приложения
• Основные параметры отметьте в отчёте

На HQ-SRV:
Перед развертыванием выполняем монтирование ISO образа с
необходимыми Docker-образами. Для этого переходим через VMWare
WorkStation в настройки виртуальной машины. Там выбираем CD/DVD driver 1 > Use ISO image file > Browse > Additional.iso > Open < OK.

Выходит уведомление, соглашаемся

После этого заново заходим в настройки HQ-SRV, выбираем CD/DVD driver 1 > Connected > OK

На HQ-SRV:
mount /dev/cdrom /mnt
dnf install mariadb-server httpd php php-mysqlnd php-cli -y
systemctl enable --now mariadb httpd

Для проверки на hq-cli открываем в браузере 

-----------------------------------------------------------------
(скриншот)
На скринщоте показан сайт, который находиться на HQ-SRV
На самом сайте должно быть написано "RedOS Test Page"
и еще маленькими буквами "Red OS Apacher HTTP Server"
-----------------------------------------------------------------

mysql_secure_installation
P@ssw0rd
n
n
y
y
y
y

-----------------------------------------------------------------
(скриншот)
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'

Switch to unix socket authentication [Y/n] n 
 . . . skipping.

You already have your root account protected, so you can safely answer 'n'

Change the root password? [Y/n] n 
 . . . skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 . . . Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y 
 . . . Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 . . . Success!
 - Removing privileges on test database...
 . . . Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect innediately.

Reload privilege tables now? [Y/n] y
 . . . Success!

Cleaning up..

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@hq-sru dns]#
-----------------------------------------------------------------

mysql -u root -p
P@ssw0rd
CREATE USER 'web'@'localhost' IDENTIFIED BY 'P@ssw0rd';
CREATE DATABASE webdb DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON webdb.* TO 'web'@'localhost';
flush privileges;
\q
mysql -u root -p webdb < /mnt/web/dump.sql
cp /mnt/web/index.php /var/www/html
cp /mnt/web/logo.png /var/www/html
nano /var/www/html/index.php

Меняем значения как на скриншоте:

-----------------------------------------------------------------
(скриншот)


-----------------------------------------------------------------
(скриншот)
На скринщоте показан сайт, который находиться на HQ-SRV
На самом сайте должно быть написано "Задание 7 модуль 2 База данных сотрудников"
-----------------------------------------------------------------

8)На маршрутизаторах сконфигурируйте статическую трансляцию портов:
• Пробросьте порт 8080 в порт приложения testapp BR-SRV на маршрутизаторе BR-RTR, для обеспечения работы приложения testapp извне
• Пробросьте порт 8080 в порт веб приложения на HQ-SRV на маршрутизаторе HQ-RTR, для обеспечения работы веб приложения извне
• Пробросьте порт 2026 на маршрутизаторе HQ-RTR в порт 2026 сервера HQ-SRV, для подключения к серверу по протоколу ssh из внешних сетей
• Пробросьте порт 2026 на маршрутизаторе BR-RTR в порт 2026 сервера BRSRV, для подключения к серверу по протоколу ssh из внешних сетей.

На BR-RTR:
iptables -t nat -A PREROUTING -p tcp -m tcp -d /28 
--dport 8080 -j DNAT --to-destination :8080
iptables -t nat -A PREROUTING -p tcp -m tcp -d /28 
--dport 2026 -j DNAT --to-destination :2026
iptables-save > /etc/sysconfig/iptables

НО ТАК КАК МФ ИСПОЛЬЗОВАЛИ НА ДАННЫХ МАРШРУТИЗАТОРАХ FIREWALLD, ТО ЛУЧШЕ ПРОКИДЫВАТЬ ПОРТЫ ЧЕРЕЗ НЕГО ЖЕ:

(ДОВОЛЬНО СЛОЖНО В НАСТРОЙКЕ, НЕ РЕКОМЕНДУЕТСЯ)
firewall-cmd --permanent --zone=trused --add-forward-port=port=8080:proto=tcp:toport=8080:toaddr=
firewall-cmd --permanent --zone=trused --add-forward-port=port=2026:proto=tcp:toport=2026:toaddr=
firewall-cmd --reload

На hq-cli в браузере открываем :8080, должен открыться сайт как в задании 6.
Пробуем подключиться по ssh, должно подключить к br-srv:

ssh sshuser@ -p 2026

-----------------------------------------------------------------
(скриншот)
[root@hq-sru html]# ssh sshuser@172.16.2.2 -p 2026
The authenticity of host '[172.16.2.21:2026 ([172.16.2.21:2026)' can't be established.
ED25519 key fingerprint is SHA256: IpWsP9g5GBCJ5Ma4/QnsEkA3KpJBgwZQuWKi GEyr jGU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added [172.16.2.21:2026' (ED25519) to the list of known hosts.
Authorized access only
sshuser@172.16.2.2's password:
Last login: Mon Oct 6 18:25:14 2025 from 172.30.100.1
Isshuser@br-sru ~]$
-----------------------------------------------------------------

На HQ-RTR:
iptables -t nat -A PREROUTING -p tcp -m tcp -d /28 --
dport 8080 -j DNAT --to-destination :80
iptables -t nat -A PREROUTING -p tcp -m tcp -d /28 --
dport 2026 -j DNAT --to-destination :2026
iptables-save > /etc/sysconfig/iptables

НО ТАК КАК МФ ИСПОЛЬЗОВАЛИ НА ДАННЫХ МАРШРУТИЗАТОРАХ FIREWALLD, ТО ЛУЧШЕ ПРОКИДЫВАТЬ ПОРТЫ ЧЕРЕЗ НЕГО ЖЕ:

(ДОВОЛЬНО СЛОЖНО В НАСТРОЙКЕ, НЕ РЕКОМЕНДУЕТСЯ)
firewall-cmd --permanent --zone=trused --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=
firewall-cmd --permanent --zone=trused --add-forward-port=port=2026:proto=tcp:toport=2026:toaddr=
firewall-cmd --reload

На hq-cli в браузере открываем :8080, должен
открыться сайт как в задании 7.

Пробуем подключиться по ssh, должно подключить к hq-srv:
ssh sshuser@ -p 2026

-----------------------------------------------------------------
(скриншот)
[root@br-rtr "1# ssh sshuser@172.16.1.2 -p 2026
The authenticity of host '[172.16.1.2]:2026 ([172.16.1.2]:2026)' can't be established.
ED25519 key fingerprint is SHA256:6uaZ3S+jzL13QaaA+yw/yw8w14YQ03K7QP30hGXIr6o.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[172.16.1.21:2026' (ED25519) to the list of known hosts.
Authorized access only
sshuser@172.16.1.2's password:
Last login: Wed Oct 8 19:08:20 2025 from 192.168.100.1
[sshuser@hq-sru ~]$
-----------------------------------------------------------------

9)Настройте веб-сервер nginx как обратный прокси-сервер на ISP
• При обращении по доменному имени web.au-team.irpo у клиента должно открываться веб приложение на HQ-SRV
• При обращении по доменному имени docker.au-team.irpo клиента должно открываться веб приложение testapp

На ISP:
dnf install nginx -y
systemctl enable --now nginx
nano /etc/nginx/nginx.conf

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

-----------------------------------------------------------------
(скриншот)
 #	server {
 #	    listen	80;
 #	    listen	[::]:80;
 #	    server_name	_;
 #	    root	/usr/share/nginx/html;
 #
 #	    # Load configuration files for the default server block.
 #	    include /etc/nginx/default.d/*.conf;
 #	}

       server {
	   listen      80;
	   server_name docker.au-team.irpo;
	   location / {
	       proxy_pass http://172.16.5.2:8080;
	   }
       }


       server {
	   listen      80:
	   server_name web.au-team.irpo;
	   location / {
	       proxy_pass http://172.16.4.2:8080;
	   }
       }
-----------------------------------------------------------------

       server {
	   listen      80;
	   server_name docker.au-team.irpo;
	   location / {
	       proxy_pass http://172.16.5.2:8080;
	   }
       }


       server {
	   listen      80:
	   server_name web.au-team.irpo;
	   location / {
	       proxy_pass http://172.16.4.2:8080;
	   }
       }

Выходим из nano: нажимаем ctrl+x, затем y
systemctl restart nginx
nano /etc/selinux/config

Меняем параметр SELINUX на disabled
Выходим из nano: нажимаем ctrl+x, затем y
reboot

На hq-cli в браузере открываем docker.au-team.irpo, должен открыться сайт
из задания 6, открываем web.au-team.irpo, там сайт из задания 7

10)На маршрутизаторе ISP настройте web-based аутентификацию:
• При обращении к сайту web.au-team.irpo клиенту должно быть предложено ввести аутентификационные данные
• В качестве логина для аутентификации выберите WEB с паролем P@ssw0rd
• Выберите файл /etc/nginx/.htpasswd в качестве хранилища учётных записей
• При успешной аутентификации клиент должен перейти на веб сайт.

На ISP:
dnf install httpd-tools -y
htpasswd -c /etc/nginx/.htpasswd WEB
P@ssw0rd
P@ssw0rd
nano /etc/nginx/nginx.conf

Добавляем строчки auth_basic как на скриншоте:

-----------------------------------------------------------------
(скриншот)
 #	server {
 #	    listen	80;
 #	    listen	[::]:80;
 #	    server_name	_;
 #	    root	/usr/share/nginx/html;
 #
 #	    # Load configuration files for the default server block.
 #	    include /etc/nginx/default.d/*.conf;
 #	}

       server {
	   listen      80;
	   server_name docker.au-team.irpo;
	   location / {
	       proxy_pass http://172.16.5.2:8080;
	   }
       }


       server {
	   listen      80:
	   server_name web.au-team.irpo;
	   location / {
	       auth basic "Restricted Content";
	       auth_basic_user_file /etc/nginx/.htpasswd;
	       proxy_pass http://172.16.4.2:8080;
	   }
       }
-----------------------------------------------------------------

auth_basic “Restricted Content”;
auth_basic_user_file /etc/nginx/.htpasswd;

Выходим из nano: нажимаем ctrl+x, затем y
nginx -t

-----------------------------------------------------------------
(скриншот)
[root@isp ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@isp ~]#
-----------------------------------------------------------------

systemctl restart nginx

На hq-cli в браузере открываем web.au-team.irpo, вводим логин WEB и пароль P@ssw0rd, должен открыться сайт из задания 7

-----------------------------------------------------------------
(скриншот)
Вход
http://web.au-team.irpo
Подключение к сайту не защищено

Имя пользователя:

Пароль:

	Отмена	Вход
-----------------------------------------------------------------

11)Удобным способом установите приложение Яндекс Браузер на HQ-CLI
• Установку браузера отметьте в отчёте.

На HQ-CLI:
Заходим в «Окно настройки РЕДОС», переходим во вкладку «Партнерские приложения» и нажимаем на Яндекс браузер. 
После загрузки нажимаем на клавишу WIN и выбираем «Другие приложения». Переходим на вторую страницу и запускаем браузер.

Средства разработки

Для программистов доступны компиляторы GCC, Clang, интерпретаторы Python 3, PHP, Node.js, а также популярные средства контроля версий (Git) и сборщики проектов.

Все компиляторы оптимизированы для сборки бинарных файлов под российские процессоры «Эльбрус» и «Байкал».

Поддерживается интеграция со средами разработки Eclipse, VS Code и IntelliJ IDEA.

17.1 Основные понятия

1)Выполните импорт пользователей в домен au-team.irpo: 
• В качестве файла источника выберите файл users.csv располагающийся в образе Additional.iso 
• Пользователи должны быть импортированы со своими паролями и другими атрибутами 
• Убедитесь, что импортированные пользователи могут войти на машину HQ-CLI

Выполняем импортирование пользователей на сервере BR-SRV:
Монтируем образ Additional.iso:

mount /dev/cdrom /mnt

Проверяем, что users.csv имеет данные: 
cat /mnt/Users.csv

Создаём файл import.sh и пишем скрипт для быстрого импорта данных:
nano import.sh
#!/bin/bash
tail -n +2 /mnt/Users.csv | while IFS=';' read -r firstName lastName _ _ ou _ _ _ _ password
do
samba-tool ou create "OU=$ou"
samba-tool user create "${firstName}${lastName}" "P@ssw0rd1" \
--userou="OU=$ou"
done

(скриншот)
-----------------------------------------------------------------
#!/bin/bash
tail -n +2 /mnt/Users.csv | while IFS=';' read -r firstName lastName _ _ ou _ _ _ _ password
do
samba-tool ou create "OU=$ou"
samba-tool user create "${firstName}${lastName}" "P@ssw0rd1" \
--userou="OU=$ou"
done
-----------------------------------------------------------------

Выдаём файлу права на исполнение:
chmod +x import.sh
./import.sh

На HQ-CLI попробовать зайти по данным:
Логин: MalachiAlexander@au-team.irpo
Пароль: P@ssw0rd1

2)Выполните настройку центра сертификации на базе HQ-SRV:
• Необходимо использовать отечественные алгоритмы шифрования
• Сертификаты выдаются на 30дней 
• Обеспечьте доверие сертификату для HQ-CLI 
• Выдайте сертификаты веб серверам 
• Перенастройте ранее настроенный реверсивный прокси nginx на протокол https
• При обращении к веб серверам https://web.au-team.irpo и https://docker.au-team.irpo у браузера клиента не должно возникать предупреждений.

Центра сертификации необходимо развернуть на HQ-SRV:

Устанавливаем пакет openssl-gost-engine, обеспечивающий поддержку алгоритмов ГОСТ:
dnf install openssl-gost-engine

Активируем поддержку ГОСТ в openssl:
openssl-switch-config gost

Применяем модуль политики, определяющий используемые методы шифрования ГОСТ:
update-crypto-policies --set GOST-ONLY:GOST

Проверяем используемую в системе политики шифрования:
update-crypto-policies --show

Генерируем закрытый ключ для удостоверяющего центра:
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out CA.key

Создаем самоподписанный корневой сертификат (Root CA):
openssl req -new -x509 -md_gost12_256 -days 365 -key CA.key -out CA.crt -subj "/C=RU/ST=Russia/L=Kazan/O=MCK-KTITS/OU=MCK-KTITS CA/CN=MCK-KTITS CA Root"

Генерируем закрытый ключ для веб-серверов:
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out au-team.irpo.key

Создаём файл расширений:
nano au-team.irpo.ext

И добавляем туда следующее:
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = au-team.irpo
DNS.2 = docker.au-team.irpo
DNS.3 = web.au-team.irpo
IP.1 = 172.16.1.2
IP.2 = 172.16.2.2

(скриншот)
-----------------------------------------------------------------
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = au-team.irpo
DNS.2 = docker.au-team.irpo
DNS.3 = web.au-team.irpo
IP.1 = 172.16.1.2
IP.2 = 172.16.2.2
-----------------------------------------------------------------

Создаем запрос на сертификат (CSR):
openssl req -new  -md_gost12_256 -key au-team.irpo.key -out au-team.irpo.csr -subj "/C=RU/L=Kazan/O=AU-TEAM Site GOST/CN=*.au-team.irpo"

Выпускаем сертификат для веб-серверов:
openssl x509 -req -in au-team.irpo.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out au-team.irpo.crt -days 30 -extfile au-team.irpo.ext

Создаем «цепочку сертификатов»:
cat au-team.irpo.crt CA.crt > fullchain.crt

Создаём папку для хранения и дальнейшего переноса сертификатов:
mkdir -p /home/sshuser/certs

Копируем в папку файлы:
cp fullchain.crt /home/sshuser/certs
cp au-team.irpo.key /home/sshuser/certs
cp CA.crt /home/sshuser/certs

Редактируем права на файлы:
chmod 755 -R /home/sshuser/certs

Теперь необходимо произвести настройку nginx на ISP, чтобы сайты работали по https:

Устанавливаем пакет openssl-gost-engine, обеспечивающий поддержку алгоритмов ГОСТ:
dnf install openssl-gost-engine

Активируем поддержку ГОСТ в openssl:
openssl-switch-config gost

Применяем модуль политики, определяющий используемые методы шифрования ГОСТ:
update-crypto-policies --set GOST-ONLY:GOST

Проверяем используемую в системе политики шифрования:
update-crypto-policies --show

Создаём папку для хранения сертификатов:
mkdir -p /etc/ssl/site

Копируем сертификаты:
scp -P 2026 sshuser@172.16.1.2:/home/sshuser/certs/* /etc/ssl/site

Редактируем файл nginx.conf и добавляем серверы https после http серверов:
  server {
        listen       443 ssl;
        server_name  docker.au-team.irpo;
        ssl_certificate /etc/ssl/site/fullchain.crt;
        ssl_certificate_key /etc/ssl/site/au-team.irpo.key;
        ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH:MEDIUM;
        ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;
        location / {
            proxy_pass http://172.16.2.2:8080;
        }
}

    server {
        listen       443 ssl;
        server_name  web.au-team.irpo;
        ssl_certificate /etc/ssl/site/fullchain.crt;
        ssl_certificate_key /etc/ssl/site/au-team.irpo.key;
        ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH:MEDIUM;
        ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;
        location / {
	    auth_basic "Restricted Content";
	    auth_basic_user_file /etc/nginx/.htpasswd;
            proxy_pass http://172.16.1.2:8080;
        }
}

(скриншот)
-----------------------------------------------------------------
  server {
        listen       443 ssl;
        server_name  docker.au-team.irpo;
        ssl_certificate /etc/ssl/site/fullchain.crt;
        ssl_certificate_key /etc/ssl/site/au-team.irpo.key;
        ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH:MEDIUM;
        ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;
        location / {
            proxy_pass http://172.16.2.2:8080;
        }
}

    server {
        listen       443 ssl;
        server_name  web.au-team.irpo;
        ssl_certificate /etc/ssl/site/fullchain.crt;
        ssl_certificate_key /etc/ssl/site/au-team.irpo.key;
        ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH:MEDIUM;
        ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;
        location / {
	    auth_basic "Restricted Content";
	    auth_basic_user_file /etc/nginx/.htpasswd;
            proxy_pass http://172.16.1.2:8080;
        }
}
-----------------------------------------------------------------

Проверяем, что конфиг без ошибок:
nginx -t

Если команда не выдала ошибок, то перезапускаем сервис:
systemctl restart nginx

Теперь необходимо произвести настройку на HQ-CLI:
Монтируем Additional.iso:
mount /dev/cdrom /mnt

Копируем файлы КриптоПро для открытия сайтов с сертификатами ГОСТ:
cp -r /mnt/cryptopro/linux-amd64/ .

Копируем корневой сертификат для дальнейшей установки для доверии браузера работы по https:
scp -P 2026 sshuser@192.168.100.2:/home/sshuser/certs/CA.crt /home/username

Выдаём права на исполнение исполняемых файлов:
chmod +x linux-amd64/*.sh

Запускаем установку графической версии КриптоПро:
./linux-amd64/install_gui.sh

Открывается установщик КриптоПро, нажимаем далее:

(скриншот)
-----------------------------------------------------------------
				Установщик КриптоПро СЅР

Добро пожаловать в мастер установки КриптоПро СЅР

Мастер установки позволит установить, переустановить и удалить КриптоПро CSP с компьютера. Нажмите Далее для продолжения или Выход для выхода из мастера установки.

		<Далее><---				<Выход>
-----------------------------------------------------------------

Здесь необходимо выбрать все пакеты с помощью пробел и нажимаем далее:

(скриншот)
-----------------------------------------------------------------
				Установщик КриптоПро СЅР

Выберите набор для установки.

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

[*] Криптовалютный провайдер KSI

[*] Провайдер КС2 (только по необходимости)

[*] Графические диалоги

[*] cptools, многоцелевое графическое приложение

[*] Поддержка токенов и смарт-карт

[*] Браузерный плагин CADES

[*] Библиотека РКСЅ #11 (для gosuslugi.ru)

[*] Импортировать корневые сертификаты из ОС

		<Далее><---				<Выход>
-----------------------------------------------------------------

Начинаем установку пакетов КриптоПро:

(скриншот)
-----------------------------------------------------------------
				Установщик КриптоПро СЅР

Будут установлены:

* Криптопровайдер КС1
* Криптопровайдер КС2
* Графические диалоги
* cptools, многоцелевое графическое приложение
* Поддержка токенов и смарт-карт
* Браузерный плагин + CADES
* Библиотека РКСЅ #11 (для gosuslugi.ru)
* Импортировать корневые сертификаты из ОС
* stunnel, SSL/TLS туннель с поддержкой ГОСТ

Нажмите Установить, чтобы начать установку. Чтобы вернуться и изменить
настройки, нажмите Назад.

		<Установить><---				<Назад>
-----------------------------------------------------------------

В процесс установки необходимо подтвердить установку пакетов:

(скриншот)
-----------------------------------------------------------------
Результат транзакции
--------------------------
--------------------------
Установка 29 Пакетов

Общий размер: 23 М
Объем изменений: 100 M
Продолжить? [д/Н]: у
-----------------------------------------------------------------

После окончательной установки пакетов, КриптоПро будет успешно установлен.

(скриншот)
-----------------------------------------------------------------
				Установщик КриптоПро СЅР

Пакеты КриптоПро СЅР успешно установлены

					<Ок><---
-----------------------------------------------------------------

При запросе лицензионного ключа, выбираем позже:

(скриншот)
-----------------------------------------------------------------
				Установщик КриптоПро СЅР

Хотите ввести лицензионный ключ сейчас или сделать это позже?

		<Ввести лицензию>				<Позже><---
-----------------------------------------------------------------

Выходим из установщика:

(скриншот)
-----------------------------------------------------------------
				Установщик КриптоПро СЅР


Выберите операцию, которую нужно выполнить.

			Переустановить пакеты КриптоПро СЅР
			Удалить пакеты КриптоПро CSP
			Ввести или проверить лицензию

		<Выбрать>				<Выход><---
-----------------------------------------------------------------

Находим приложение «Инструменты КриптоПро» и запускаем его:

(скриншот)
-----------------------------------------------------------------

Показан экран на котором обведена программа "Инструменты КриптоПро"

-----------------------------------------------------------------

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

(скриншот)
-----------------------------------------------------------------

Показан экран на котором открыто окно:


				КриптоПро CSP

Перемещайте указатель мыши в окне или клавиши для генерации случайной последовательности


-----------------------------------------------------------------

Добавляем корневой сертификат во вкладку «Сертификаты», выбрав хранилище сертификатов «Доверенные корневые центры сертификации»  и «Устанавливаем сертификат». 

(скриншот)
-----------------------------------------------------------------

		Доверенные корневые центры сертификации v
...
...
Контейнеры
Сертификаты <---
Создание подписи
...
...

		Установить сертификаты <---

-----------------------------------------------------------------

И добавляем сертификат центра, который копировали ранее:

(скриншот)
-----------------------------------------------------------------

На экране показано добавление сертификата "CA.crt"

-----------------------------------------------------------------

Выйдет уведомление о добавление сертификата, нажимаем «ОК».

(скриншот)
-----------------------------------------------------------------
			КриптоПро CSP

Внимание: установка корневого сертификата с неподтвержденным отпечатком
представляет риск для безопасности. Вы хотите установить этот сертификат?
Субъект: МСК-KTITS CA Root
Отпечаток (sha1): 83E735CFD8614C74C234D2D1135557C6D9ADA27B

		<ОК>			<Отмена>
-----------------------------------------------------------------

Проверяем наличие сертификата в хранилище:

(скриншот)
-----------------------------------------------------------------

Имя субъекта	Имя издателя		Срок действия	Серийный номер

MCK-KTITS CA	Root MCK-KTITS CA Root	15/02/2027	617993284cd2c77ff967e234233f99...

vTrus Root	CAvTrus Root CA		31/07/2043	43e37113d8b359145db7ce8cfd35fd...

VTrus ECC Root	CAVTrus ECC Root CA	31/07/2043	6e6abc59aa53be983967a2d26ba4...

-----------------------------------------------------------------

Запускаем браузер Яндекс.Браузер и проверяем сайты https://web.au-team.irpo и  https://web.au-team.irpo, что подключения защищены(чтобы это просмотреть нажмите на замок около ссылки страницы):

(скриншот)
-----------------------------------------------------------------

На экране показано что подключение защищено статус "Protect"

-----------------------------------------------------------------

3)Перенастройте ip-туннель с базового до уровня туннеля, обеспечивающего шифрование трафика
• Настройте защищенный туннель между HQ-RTR и BR-RTR 
• Внесите необходимые изменения в конфигурацию динамической маршрутизации, протокол динамической маршрутизации должен возобновить работу после перенастройки туннеля
• Выбранное программное обеспечение, обоснование его выбора и его основные параметры, изменения в конфигурации динамической маршрутизации отметьте в отчёте.

Устанавливаем strongswan на HQ-RTR и BR-RTR:
dnf install strongswan -y

Добавляем strongswan в автозагрузку:
systemctl enable --now strongswan

Создаём конфигурационный файл на HQ-RTR:
nano /etc/strongswan/swanctl/conf.d/swanctl.conf

Добавляем конфигурацию IPSec:
connections {
   my-tunnel {
      local_addrs  = 172.16.1.2
      remote_addrs = 172.16.2.2
      local {
         auth = psk
      }
      remote {
         auth = psk
      }
      children {
         net {
            mode = transport
            esp_proposals = aes256-sha256
            start_action = trap #если нужна автозагрузка туннеля
         }
      }
   }
}
secrets {
   ike-1 {
      secret = "P@ssw0rd"
   }
}

Перезапускаем службу strongswan:
systemctl restart strongswan

Создаём конфигурационный файл на BR-RTR:
nano /etc/strongswan/swanctl/conf.d/swanctl.conf

Добавляем конфигурацию IPSec:
connections {
   my-tunnel {
      local_addrs  = 172.16.2.2
      remote_addrs = 172.16.1.2
      local {
         auth = psk
      }
      remote {
         auth = psk
      }
      children {
         net {
            mode = transport
            esp_proposals = aes256-sha256
            start_action = trap #если нужна автозагрузка туннеля
         }
      }
   }
}
secrets {
   ike-1 {
      secret = "P@ssw0rd"
   }
}

Перезапускаем службу strongswan:
systemctl restart strongswan

Принудительно инициируем соединение (BR-RTR или HQ-RTR):
swanctl --initiate --child net

Проверяем работу:
swanctl --list-conns
(Вывод должен быть приблизительно таким)

(скриншот)
-----------------------------------------------------------------

[root@hq-rtr ~]# swanctl --list-sas
plugin 'sqlite': failed to load sqlite_plugin_create not found and no plugin file available
my-tunnel: #1, ESTABLISHED, IKEUZ, 6cfd82ad4f7e4beb_i 28842142dc39f06c_r*
  local '172.16.1.2′ 172.16.1.2[4500]
  remote '172.16.2.2 @ 172.16.2.2[4500]
  AES_CBC-128/HMAC_SHA2_256_128/PRF_HMAC_SHAZ_256/ECP_256
  established 83s ago, rekeying in 13916s
  net: #1, reqid 1, INSTALLED, TRANSPORT, ESP: AES_CBC-256/HMAC_SHAZ_256_128
    installed 83s ago, rekeying in 3310s, expires in 3877s
    in c5e1586b, 576 bytes, 8 packets, 6s ago
    out cb7b0af7, 576 bytes, 8 packets, 3s ago
    local 172.16.1.2/32
    remote 172.16.2.2/32

-----------------------------------------------------------------

Также дополнительно проверяем, например, с HQ-RTR, что пакеты имеют заголовок ESP, что подтверждает работу IPSec:
tcpdump -i ens33 -n host 172.16.2.2

(скриншот)
-----------------------------------------------------------------

[root@hq-rtr ~]# sudo tcpdump -i ens33 -n host 172.16.2.2
dropped prius to tcpdump
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), snapshot length 262144 bytes
12:55:00.768726 IP 172.16.1.2 > 172.16.2.2: ESP(spi=0xcb7b0af7,seq=0x3), length 120
12:55:07.635771 IP 172.16.2.2 > 172.16.1.2: ESP(spi=0xc5e1586b,seq=0x4), length 120
12:55:10.768803 IP 172.16.1.2 > 172.16.2.2: ESP(spi=0xcb7b0af7,seq=0x4), length 120
12:55:17.637644 IP 172.16.2.2 > 172.16.1.2: ESP(spi=0xc5e1586b,seq=0x5), length 120
12:55:20.769424 IP 172.16.1.2 > 172.16.2.2: ESP(spi=0xcb7b0af7,seq=0x5), length 120
12:55:27.636600 IP 172.16.2.2 > 172.16.1.2: ESP(spi=0xc5e1586b,seq=0x6), length 120
12:55:30.769696 IP 172.16.1.2 > 172.16.2.2: ESP(spi=0xcb7b0af7,seq=0x6), length 120

-----------------------------------------------------------------

4)Настройте межсетевой экран на маршрутизаторах HQ-RTR и BR-RTR на сеть в сторону ISP 
• Обеспечьте работу протоколов http, https, dns, ntp, icmp или дополнительных нужных протоколов 
• Запретите остальные подключения из сети Интернет во внутреннюю сеть.

На HQ-RTR:
firewall-cmd --permanent --zone=external --change-interface=ens33
firewall-cmd --permanent --zone=internal --change-interface=ens34
firewall-cmd --permanent --zone=internal --change-interface=ens34.100
firewall-cmd --permanent --zone=internal --change-interface=ens34.200
firewall-cmd --permanent --zone=internal --add-interface=tun0
firewall-cmd --permanent --new-policy int-to-ext
firewall-cmd --permanent --policy int-to-ext --add-ingress-zone=internal
firewall-cmd --permanent --policy int-to-ext --add-egress-zone=external
firewall-cmd --permanent --policy int-to-ext --set-target=ACCEPT
firewall-cmd --permanent --zone=external --add-service=http
firewall-cmd --permanent --zone=external --add-service=https
firewall-cmd --permanent --zone=external --add-service=dns
firewall-cmd --permanent --zone=external --add-service=ntp
firewall-cmd --permanent --zone=external --add-port=2026/tcp
firewall-cmd --permanent --zone=external --add-port=8080/tcp
firewall-cmd --permanent --zone=external --add-protocol=gre
firewall-cmd --permanent --zone=external --add-port=500/udp
firewall-cmd --permanent --zone=external --add-port=4500/udp
firewall-cmd --permanent --zone=external --add-protocol=esp
firewall-cmd --permanent --zone=external --add-protocol=ah
firewall-cmd --permanent --zone=internal --add-protocol=ospf
firewall-cmd --permanent --zone=external --add-forward-port=port=2026:proto=tcp:toport=2026:toaddr=192.168.100.2
firewall-cmd --permanent --zone=external --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.100.2
firewall-cmd --permanent --direct --add-passthrough ipv4 -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
firewall-cmd --reload

На BR-RTR:
firewall-cmd --permanent --zone=external --change-interface=ens33
firewall-cmd --permanent --zone=internal --change-interface=ens34
firewall-cmd --permanent --zone=internal --add-interface=tun0
firewall-cmd --permanent --new-policy int-to-ext
firewall-cmd --permanent --policy int-to-ext --add-ingress-zone=internal
firewall-cmd --permanent --policy int-to-ext --add-egress-zone=external
firewall-cmd --permanent --policy int-to-ext --set-target=ACCEPT
firewall-cmd --permanent --zone=external --add-service=http
firewall-cmd --permanent --zone=external --add-service=https
firewall-cmd --permanent --zone=external --add-service=dns
firewall-cmd --permanent --zone=external --add-service=ntp
firewall-cmd --permanent --zone=external --add-port=2026/tcp
firewall-cmd --permanent --zone=external --add-port=8080/tcp
firewall-cmd --permanent --zone=external --add-protocol=gre
firewall-cmd --permanent --zone=external --add-port=500/udp
firewall-cmd --permanent --zone=external --add-port=4500/udp
firewall-cmd --permanent --zone=external --add-protocol=esp
firewall-cmd --permanent --zone=external --add-protocol=ah
firewall-cmd --permanent --zone=internal --add-protocol=ospf
firewall-cmd --permanent --zone=external --add-forward-port=port=2026:proto=tcp:toport=2026:toaddr=172.30.100.2
firewall-cmd --permanent --zone=external --add-forward-port=port=8080:proto=tcp:toport=8080:toaddr=172.30.100.2
firewall-cmd --permanent --direct --add-passthrough ipv4 -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
firewall-cmd --reload

5)Настройте принт-сервер cups на сервере HQ-SRV: 
• Опубликуйте виртуальный pdf-принтер 
• На клиенте HQ-CLI подключите виртуальный принтер как принтер по умолчанию. 

Разворачиваем принт-сервер CUPS на HQ-SRV:
dnf install cups cups-pdf -y –-nogpgcheck

Добавляем службу в автозагрузку:
systemctl enable –-now cups

Вносим изменения в файл:
nano /etc/cups/cupsd.conf

В строке Listen localhost:631 меняем localhost на *:

(скриншот)
-----------------------------------------------------------------
# Only listen for connections from the local machine
Listen *:631
Listen/run/cups/cups.sock
-----------------------------------------------------------------

В строках с доступом на сервер и с доступом на страницу админа добавляем строки Allow all:

(скриншот)
-----------------------------------------------------------------
# Restrict access to the server...
<Location />
  Order allow,deny
  Allow all
</Location>

# Restrict access to the admin pages...
<Location /admin>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow all
</Location>
-----------------------------------------------------------------

Перезапускаем службу cups:
systemctl restart cups

Создаём принтер на HQ-SRV:
lpadmin -p Virtual_PDF -E -v cups-pdf:/ -m everywhere 

(Если выскочит ошибка то, lpinfo -m | grep -i pdf и после вывода информации
пишем тот драйвер который похож на данное название дравера: CUPS-PDF.ppd)

Проверяем создание принтера на HQ-SRV:
lpstat -p

(скриншот)
-----------------------------------------------------------------
[root@hq-sru ~]# lpstat -p
принтер Cups-PDF свободен. Включен с момента Вс 15 фев 2026 15:02:17
[root@hq-sru ~]#
-----------------------------------------------------------------

Переходим в настройки на HQ-CLI и добавляем принтер. Для этого сначала необходимо разблокировать доступ к добавлению и изменению настроек:

(скриншот)
-----------------------------------------------------------------

                |
                |
...             |
Клавиатура      |
Принтеры        |
Съемный носитель|		Принтеров нет
...             |
                |		Добавить принтер...

-----------------------------------------------------------------

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

(скриншот)
-----------------------------------------------------------------
				Принтеры		Добавить принтер <---
v1-1
Готов
Модель Generic Text-Only Printer

-----------------------------------------------------------------

Вводим IP-адрес сервера HQ-SRV и выбираем принтер с HQ-SRV:

(скриншот)
-----------------------------------------------------------------
		Отменить	Добавить принтер	Добавить

CUPS-PDF-Printer
Cups-PDF <---


				192.168.100.2
-----------------------------------------------------------------

После добавления принтера, настраиваем принтер для использования по умолчанию, необходимо, что появилась галочка у пункта «Использовать по умолчанию»(Нажимаем на шестеренку Cups-PDF и там ставим галочку на пункте "Использовать по умолчанию").

(скриншот)
-----------------------------------------------------------------

Cups-PDF
Готов							Нет активных заданий (шестеренка -> Использовать по умолчанию)
Модель Generic CUPS-PDF Printer (no options)

v1-1
Готов							Нет активных заданий
Модель Generic Text-Only Printer 

-----------------------------------------------------------------

После этого, дополнительно проверяем, выбрав пункт «Сведения о принтере», что принтер действительно с HQ-SRV. Должен быть IP HQ-SRV.

(скриншот)
-----------------------------------------------------------------
			Подробности Cups-PDF

Имя Cups-PDF
Местоположение
Адрес 192.168.100.2
Драйвер Generic CUPS-PDF Printer (no options)

			Поиск драйверов
			Выбратьт из базы данных...
			Использовать файл PPD...

-----------------------------------------------------------------

6)Реализуйте логирование при помощи rsyslog на устройствах HQ-RTR, BR-RTR, BR-SRV:
• Сервер сбора логов расположен на HQ-SRV, убедитесь, что сервер не является клиентом самому себе 
• Приоритет сообщений должен быть не ниже warning 
• Все журналы должны находиться в директории /opt. Для каждого устройства должна выделяться своя поддиректория, которая совпадает с именем машины 
• Реализуйте ротацию собранных логов на сервере HQ-SRV: 
• Ротируются все логи, находящиеся в директории и поддиректориях /opt 
• Ротация производится один раз в неделю 
• Логи необходимо сжимать
• Минимальный размер логов для ротации – 10МБ. 

Развернём сервер сбора логов на HQ-SRV:
Необходимо включить прием логов по UDP (или TCP) и настроить шаблоны для записи в /opt. 

Открываем и редактируем файл /etc/rsyslog.conf.
nano /etc/rsyslog.conf

Необходимо расскоментировать строки связанные с udp (module и input):

(скриншот)
-----------------------------------------------------------------
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
-----------------------------------------------------------------

В конце добавляем шаблон для записи логов с удаленных серверов в /opt и исключения hq-srv из записи в папку /opt:
$template RemoteLogs,"/opt/%HOSTNAME%/%HOSTNAME%.log"
if $hostname != 'HQ-SRV' then {
    *.warning ?RemoteLogs
    & stop
}

(скриншот)
-----------------------------------------------------------------
$template RemoteLogs,"/opt/%HOSTNAME%/%HOSTNAME%.log"

if $hostname != 'HQ-SRV' then {
    *.warning ?RemoteLogs
    & stop
}
-----------------------------------------------------------------

На клиентах HQ-RTR, BR-RTR, BR-SRV в файле /etc/rsyslog.conf добавляем запись, для отправки логов на сервер логов (можно также в конце):
nano /etc/rsyslog.conf

(скриншот)
-----------------------------------------------------------------
#Target="remote_host" Port="XXX" Protocol="tcp")
*.warning			@192.168.100.2:514
-----------------------------------------------------------------

На HQ-RTR, BR-RTR, BR-SRV, HQ-SRV перезапускаем службу rsyslog:
systemctl restart rsyslog

На HQ-SRV настраиваем ротацию логов. Для этого создаём файл /etc/logrotate.d/remote_logs.
nano /etc/logrotate.d/remote_logs

Добавляем в него конфигурацию:
/opt/*/*.log {
    weekly
    rotate 4
    compress
    minsize 10M
    missingok
    notifempty
    sharedscripts
    postrotate
        /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
    endscript
}

На HQ-RTR, BR-RTR, BR-SRV, HQ-SRV перезапускаем службу logrotate:
systemctl restart logrotate


7)На сервере HQ-SRV реализуйте мониторинг устройств с помощью открытого программного обеспечения 
• Обеспечьте доступность по URL - http://mon.au-team.irpo для сетей офиса HQ, внесите изменения в инфраструктуру разрешения доменных имён 
• Мониторить нужно устройства HQ-SRV и BR-SRV 
• В мониторинге должны визуально отображаться нагрузка на ЦП, объем занятой ОП и основного накопителя 
• Логин и пароль для службы мониторинга admin P@ssw0rd 
• Организуйте доступ к мониторингу для HQ-CLI, без внешнего доступа 
• Выбор программного обеспечения, основание выбора и основные параметры с указанием порта, на котором работает мониторинг, отметьте в отчёте 

Разворачиваем на сервере HQ-SRV Grafana, Prometheus и node_exporter:
dnf install -y grafana prometheus prometheus-node_exporter –-nogpgcheck

После установки редактируем файл prometheus.yml, добавляем адреса клиентов node_exporter для сбора метрик:
nano /etc/prometheus/prometheus.yml

Редактируем там строчку, добавив адреса 192.168.100.2:9100 и 172.30.100.2:9100:
static_configs:
- targets: ['localhost:9090','192.168.100.2:9100','172.30.100.2:9100']

(скриншот)
-----------------------------------------------------------------
static_configs:
  - targets: ["localhost:9090", "192.168.100.2:9100","172.30.100.2:9100"]
  # The label name is added as a label 'label_name=<label_value>` to any timeseries scraped from this config.
    labels:
      app: "prometheus"
-----------------------------------------------------------------

Добавляем в автозагрузку сервисы:
systemctl enable --now grafana-server
systemctl enable --now prometheus
systemctl enable --now node_exporter

Разворачиваем на BR-SRV node_exporter:
dnf install -y prometheus-node_exporter
Добавляем в автозагрузку сервиc node_exporter:
systemctl enable --now node_exporter
Переходим на HQ-CLI для настройки Grafana. Открываем браузер и переходим по адресу http://192.168.100.2:3000. Откроется веб-интерфейс Grafana.

(скриншот)
-----------------------------------------------------------------
В окне браузера показано начальный вход в Grafana
-----------------------------------------------------------------

Авторизуемся с помощью логина и пароля admin:admin. После этого Grafana запросит новый пароль для учетной записи admin. Задаём новый пароль P@ssw0rd.

(скриншот)
-----------------------------------------------------------------
В окне браузера показано смена пароля пользователя admin
-----------------------------------------------------------------

После чего, открывается веб-интерфейс Grafana.

(скриншот)
-----------------------------------------------------------------
В окне браузера показано веб-интерфейс Grafana
-----------------------------------------------------------------

Добавляем подключение к Prometheus. Для этого переходим во вкладку Connections и добавляем новое подключение через «Add new connection»

(скриншот)
-----------------------------------------------------------------
		Welcome to Connections

Connections	Add new connections
-----------------------------------------------------------------

Находим в DataSources Prometheus

(скриншот)
-----------------------------------------------------------------
В окне браузера показано много сервисов и выбран Prometheus
-----------------------------------------------------------------

В connection пишем адрес Prometheus – http://localhost:9090

(скриншот)
-----------------------------------------------------------------
В окне браузера показан Prometheus

Connections
Prometheus server URL http://localhost:9090
-----------------------------------------------------------------

После чего Datasource Prometheus должно успешно добавиться.

(скриншот)
-----------------------------------------------------------------
В окне браузера показано успешное добавление Prometheus

Successfully queried the Prometheus API
-----------------------------------------------------------------

Добавляем Dashboard, выбрав вкладку Dashboards и создаём дашборд «Create Dashboard»

(скриншот)
-----------------------------------------------------------------

		Dashboards


...
Dashboards
...



			+ Create dashboard

-----------------------------------------------------------------

Импортируем Dashboard, выбрав «Import Dashboard»

(скриншот)
-----------------------------------------------------------------


		Start your new dashboard by adding a visualization


			+ Add visualization


		Import panel			Import a dashboard <---

-----------------------------------------------------------------

Добавляем номер dashboard 11074 и загружаем его «Load».

(скриншот)
-----------------------------------------------------------------

		Import dashboard


...
Dashboards
...
		11076			Load


			+ Create dashboard


-----------------------------------------------------------------

После этого выбираем Prometheus, который ранее был подключен к Grafana и импортирует дашборд.

(скриншот)
-----------------------------------------------------------------

		Import dashboard


...
Dashboards
...

		prometheus
		Import <--- Cancel

-----------------------------------------------------------------

В результате получаем дашборд с мониторингом серверов HQ-SRV и BR-SRV.

(скриншот)
-----------------------------------------------------------------
В окне браузера показано система мониторинга, в которой добавлены HQ-SRV и BR-SRV
-----------------------------------------------------------------

После этого необходимо настроить доступ к мониторингу по доменному имени http://mon.au-team.irpo. Для этого переходим на HQ-SRV и открываем файл /opt/dns/au-team.irpo и добавляем A запись для mon.au-team.irpo, указав адрес HQ-SRV.

nano /opt/dns/au-team.irpo

(скриншот)
-----------------------------------------------------------------
STTL 3H
au-team.irpo.	IN SOA	au-team.irpo.	au-team.irpo. (
						0	; serial
						1D	; refresh
						1H	; retry
						1W	; expire
						3H)	; minimum
	NS	hq-sru.au-tean.irpo.
hq-rtr	A	192.168.100.1
br-rtr	A	172.30.100.1
hq-srv	A	192.168.100.2
hq-cli	A	192.168.200.2
br-srv	A	172.30.100.2
docker	A	172.16.1.1
web	A	172.16.2.1
mon	A	192.168.100.2

-----------------------------------------------------------------

После этого перезапускаем службу named.
systemctl restart named
Теперь открываем мониторинг на HQ-CLI через адрес http://mon.au-team.irpo:3000.

(скриншот)
-----------------------------------------------------------------
В окне браузера показано начальный вход в Grafana по адресу http://mon.au-team.irpo:3000
-----------------------------------------------------------------

8)Реализуйте механизм инвентаризации машин HQ-SRV и HQ-CLI через Ansible на BR-SRV: 
• Плейбук должен собирать информацию о рабочих местах: 
Имя компьютера 
IP-адрес компьютера 
• Плейбук, должен быть размещен в директории /etc/ansible, отчёты в поддиректории PC-INFO, в формате .yml. Файлы должны называется именем компьютера, который был инвентаризирован 
• Файл плейбука располагается в образе Additional.iso в директории playbook

Монтируем образ Additional.iso:
mount /dev/cdrom /mnt

Копируем playbook из образа:
cp /mnt/playbook/get_hostname_address.yml /etc/ansible

Добавяем группу хостов inventory c HQ-SRV и HQ-СLI в файл инвентаризации demo.ini:
nano /etc/ansible/demo.ini

(скриншот)
-----------------------------------------------------------------
[inventory]

hq-cli ansible_host=192.168.200.2 ansible_user=username
hq-srv ansible_host=192.168.100.2 ansible_port=2026 ansible_user=remote_user
-----------------------------------------------------------------

Редактирует плейбук и приводим к виду:
---
- name: Inventory of HQ-SRV and HQ-CLI
  hosts: inventory
  gather_facts: yes
  tasks:
    - name: получение данных с хоста
      copy:
        dest: /etc/ansible/PC-INFO/{{ ansible_hostname }}.yml
        content: |
          Hostname: {{ ansible_hostname }}
          IP_Address: {{ ansible_default_ipv4.address }}
      delegate_to: localhost

Создаём папку для хранения файлов:
mkdir -p /etc/ansible/PC-INFO

Переходим в директорию ansible:
cd /etc/ansible

Запускаем исполнение плейбука:

-----------------------------------------------------------------
[root@br-sru ansible]# ansible-playbook get_hostname_address.ynli demo.ini

PLAY [Inventory of HQ-SRU and HQ-CLI] ***************************

TASK [Gathering Facts] ******************************************
ok: [hq-sru]
ok: [hq-clil

TASK (получение данных с хоста] *********************************

changed: [hq-sru -> localhost]
changed: [hq-cli -> localhost]

PLAY RECAP ******************************************************
hq-cli	: ok=2	changed=1	unreachable=0	failed=0	skipped=0	rescued=0	ignored=0	
hq-srv	: ok=2	changed=1	unreachable=0	failed=0	skipped=0	rescued=0	ignored=0
-----------------------------------------------------------------

ansible-playbook get_hostname_address.yml -i demo.ini

После этого проверяем, что файлы были созданы:
ls /etc/ansible/PC-INFO

Проверяем содержимое:
cat /etc/ansible/PC-INFO/hq-cli.yml
cat /etc/ansible/PC-INFO/hq-srv.yml

9)На HQ-SRV настройте программное обеспечение fail2ban для защиты ssh 
• Укажите порт ssh 
• При 3 неуспешных авторизациях адрес атакующего попадает в бан 
• Бан производится на 1минуту 

Выполняем установку fail2ban на HQ-SRV:
dnf install fail2ban -y --nogpgcheck

Создаём файл с конфигурацией:
nano /etc/fail2ban/jail.local

Пишем следующие конфигурацию:
[sshd]
enabled = true
port = 2026
filter = sshd
maxretry = 3
bantime = 60
findtime = 120

Перезапускаем службу fail2ban:
systemctl restart fail2ban

Добавляем службу в автозагрузку:
systemctl enable --now  fail2ban

Проверяем статус настроек:
fail2ban-client status sshd

17.2 Общие сведения о контейнеризации

Контейнеризация — это метод виртуализации на уровне операционной системы, позволяющий запускать изолированные приложения в единой среде (пространстве пользователя) без необходимости развертывания полноценной гостевой ОС. Контейнеры делят одно и то же ядро хостовой операционной системы, что делает их чрезвычайно быстрыми и экономичными с точки зрения потребления диска и оперативной памяти.

В отличие от традиционных виртуальных машин, каждый контейнер содержит в себе только само приложение и все необходимые для его работы зависимости (библиотеки, конфигурационные файлы). Основными инструментами контейнеризации в экосистеме РЕД ОС являются Docker и Podman.

17.3 Среды виртуализации и оркестрации

Гипервизорная виртуализация (KVM/QEMU) позволяет создавать полностью изолированные виртуальные машины с собственными ядрами операционных систем, что критически важно для изоляции несовместимых корпоративных сред или запуска устаревших систем.

Для управления большим числом контейнеров на нескольких серверах используются системы оркестрации, такие как Kubernetes или упрощенные легковесные кластеры. Они обеспечивают автоматическое масштабирование приложений, балансировку сетевых нагрузок, самовосстановление упавших контейнеров и непрерывное обновление ПО без прерывания обслуживания пользователей.

Мониторинг системы

Анализ журналов и логов в реальном времени осуществляется через journalctl. Для мониторинга потребления ресурсов используются утилиты htop, top, iotop и netstat.

Для постоянного логирования параметров сети рекомендуется использовать Prometheus Node Exporter.

Также в состав системы входит утилита sar для накопления и анализа долгосрочной статистики загрузки ресурсов.

Резервное копирование

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

Скрипты инкрементального копирования rsync можно запускать по расписанию через планировщик cron.

Для создания резервных копий баз данных используйте стандартные дамперы СУБД с автоматическим сжатием.

Часто задаваемые вопросы (FAQ)

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

Для сброса пароля root перезагрузите сервер, в меню GRUB нажмите 'e', допишите init=/bin/sh в строку параметров ядра, смонтируйте корень в rw и смените пароль.

При ошибках монтирования разделов проверьте целостность файловой системы с помощью утилиты fsck.ext4 или xfs_repair.