09.02.06 Сетевое и системное администрирование
| Name VM | ОС | RAM | CPU | IP | Additionally |
|---|---|---|---|---|---|
| RTR-L | Debian 11/CSR | 2 GB | 2/4 | 7.7.7.100/24 | |
| 192.168.100.254/24 | |||||
| RTR-R | Debian 11/CSR | 2 GB | 2/4 | 8.8.8.100/24 | |
| 172.16.100.254 /24 | |||||
| SRV | Debian 11/Windows Server 2019 | 2/4 GB | 2/4 | 192.168.100.200/24 | Доп диски 2 шт по 2 GB |
| WEB-L | Debian 11 | 2 GB | 2 | 192.168.100.100/24 | |
| WEB-R | Debian 11 | 2 GB | 2 | 172.16.100.100/24 | |
| ISP | Debian 11 | 2 GB | 2 | 7.7.7.1/24 | |
| 8.8.8.1/24 | |||||
| 3.3.3.1/24 | |||||
| CLI | Windows 10 | 4 GB | 4 | 3.3.3.10/24 |
root | toor
1.1. На основе представленных виртуальных машин или шаблонов виртуальных машин создайте отсутствующие виртуальные машины в соответствии со схемой.
- а. Установите характеристики виртуальных машин в соответствии с Таблицей 1.
- б. Выполните коммутацию (если она не выполнена) в соответствии со схемой сети.
Решение:
- Создайте виртуальные машины в гипервизоре (VirtualBox/VMware/ESXi) со следующими параметрами:
| Имя ВМ | ОС | ОЗУ | ЦПУ | Примечание |
|---|---|---|---|---|
| RTR-L | Debian 11/CSR | 2 ГБ | 2/4 | 2 сетевых интерфейса |
| RTR-R | Debian 11/CSR | 2 ГБ | 2/4 | 2 сетевых интерфейса |
| SRV | Debian 11/Windows Server 2019 | 2/4 ГБ | 2/4 | +2 диска по 2 ГБ |
| WEB-L | Debian 11 | 2 ГБ | 2 | 1 сетевой интерфейс |
| WEB-R | Debian 11 | 2 ГБ | 2 | 1 сетевой интерфейс |
| ISP | Debian 11 | 2 ГБ | 2 | 3 сетевых интерфейса |
| CLI | Windows 10 | 4 ГБ | 4 | 1 сетевой интерфейс |
- Настройте коммутацию согласно логической схеме:
- ISP подключается к RTR-L (сеть 7.7.7.0/24) и RTR-R (сеть 8.8.8.0/24)
- RTR-L подключается к внутренней сети 192.168.100.0/24 (SRV, WEB-L)
- RTR-R подключается к внутренней сети 172.16.100.0/24 (WEB-R)
- ISP подключается к CLI (сеть 3.3.3.0/24)
Решение:
Для систем на базе Debian 11:
# Настройка hostname
hostnamectl set-hostname HOSTNAME
# Обновление файла hosts
echo "127.0.0.1 $(hostname)" >> /etc/hosts
# Проверка
hostnamectlВыполнить на каждой ВМ:
hostnamectl set-hostname ISPhostnamectl set-hostname RTR-L
hostnamectl set-hostname RTR-R
hostnamectl set-hostname SRV
hostnamectl set-hostname WEB-L
hostnamectl set-hostname WEB-R
Start --> Settings --> System --> About --> Rename this PC
1.3. Адресация должна быть выполнена в соответствии с Таблицей 1;
Решение:
Настройка для систем Debian (nmtui)
# Интерфейс к RTR-L
nmcli con add type ethernet con-name "ISP-L" ifname eth1 \
ipv4.addresses 7.7.7.1/24 ipv4.method manual autoconnect yes
# Интерфейс к RTR-R
nmcli con add type ethernet con-name "ISP-R" ifname eth2 \
ipv4.addresses 8.8.8.1/24 ipv4.method manual autoconnect yes
# Интерфейс к CLI
nmcli con add type ethernet con-name "ISP-CLI" ifname eth3 \
ipv4.addresses 3.3.3.1/24 ipv4.method manual autoconnect yes
nmcli con up "ISP-L" && nmcli con up "ISP-R" && nmcli con up "ISP-CLI"# Внешний интерфейс к ISP
nmcli con add type ethernet con-name "ISP-L" ifname eth1 \
ipv4.addresses 7.7.7.100/24 ipv4.gateway 7.7.7.1 \
ipv4.method manual autoconnect yes
# Внутренний интерфейс к локальной сети
nmcli con add type ethernet con-name "Left" ifname eth2 \
ipv4.addresses 192.168.100.254/24 \
ipv4.method manual autoconnect yes
nmcli con up "ISP-L" && nmcli con up "Left"# Внешний интерфейс к ISP
nmcli con add type ethernet con-name "ISP-R" ifname eth1 \
ipv4.addresses 8.8.8.100/24 ipv4.gateway 8.8.8.1 \
ipv4.method manual autoconnect yes
# Внутренний интерфейс к локальной сети
nmcli con add type ethernet con-name "Right" ifname eth2 \
ipv4.addresses 172.16.100.254/24 \
ipv4.method manual autoconnect yes
nmcli con up "ISP-R" && nmcli con up "Right"nmcli con add type ethernet con-name "Left" ifname eth1 \
ipv4.addresses 192.168.100.200/24 ipv4.gateway 192.168.100.254 \
ipv4.dns "192.168.100.254" ipv4.method manual autoconnect yes
nmcli con up "Left"nmcli con add type ethernet con-name "Left" ifname eth1 \
ipv4.addresses 192.168.100.100/24 ipv4.gateway 192.168.100.254 \
ipv4.method manual autoconnect yes
nmcli con up "Left"nmcli con add type ethernet con-name "Right" ifname eth1 \
ipv4.addresses 172.16.100.100/24 ipv4.gateway 172.16.100.254 \
ipv4.method manual autoconnect yes
nmcli con up "Right"Настройка для Windows (GUI, cmd)
1.4. Обеспечьте виртуальные машины дисками, если таковое необходимо в соответствии с Таблицей 1
Решение:
# Создание RAID1 массива из двух дисков /dev/sdb и /dev/sdc
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
# Создание файловой системы
mkfs.ext4 /dev/md0
# Создание точки монтирования и монтирование
mkdir -p /mnt/storage
mount /dev/md0 /mnt/storage
# Настройка автоматического монтирования
echo '/dev/md0 /mnt/storage ext4 defaults,nofail 0 2' >> /etc/fstab
# Настройка mdadm для восстановления после перезагрузки
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u2. Осуществление выбора технологии, инструментальных средств и средств вычислительной техники при организации процесса разработки и исследования объектов профессиональной деятельности
Решение:
# Временная настройка
ip route add default via 7.7.7.1 dev eth1
# Постоянная настройка через nmcli
nmcli con mod "ISP-L" ipv4.gateway 7.7.7.1
nmcli con up "ISP-L"
# Проверка
ip route show | grep default# Временная настройка
ip route add default via 8.8.8.1 dev eth1
# Постоянная настройка через nmcli
nmcli con mod "ISP-R" ipv4.gateway 8.8.8.1
nmcli con up "ISP-R"
# Проверка
ip route show | grep default- На маршрутизаторе RTR-L настройте динамическую трансляцию портов (PAT) для сети
192.168.100.0/24в соответствующие адреса исходящего интерфейса; - На маршрутизаторе RTR-R настройте динамическую трансляцию портов (PAT) для сети
172.16.100.0/24в соответствующие адреса исходящего интерфейса.
Решение:
# Включение IP-пересылки
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
# Настройка правил iptables для PAT
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth1 -j MASQUERADE
# Сохранение правил
apt install iptables-persistent -y
netfilter-persistent save# Включение IP-пересылки
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
# Настройка правил iptables для PAT
iptables -t nat -A POSTROUTING -s 172.16.100.0/24 -o eth1 -j MASQUERADE
# Сохранение правил
apt install iptables-persistent -y
netfilter-persistent save2.3. Между платформами RTR-L и RTR-R должен быть установлен туннель, позволяющий осуществлять связь между регионами с применением внутренних адресов со следующими параметрами:
- a. Используйте в качестве VTI интерфейс
Tunnel1; - b. Между платформами должен быть установлен туннель, позволяющий осуществлять связь между регионами с применением внутренних адресов.
Решение:
Установка StrongSwan на RTR-L и RTR-R
apt update
apt install strongswan strongswan-pki libstrongswan-standard-plugins -yКонфигурация /etc/ipsec.conf
config setup
charondebug="ike 2, knl 2, cfg 2"
uniqueids=never
conn %default
keyexchange=ikev2
authby=secret
ike=aes256-sha256-modp2048!
esp=aes256-sha256!
dpdaction=clear
dpddelay=30s
rekey=yes
conn tunnel-to-rtrr
left=7.7.7.100
leftsubnet=192.168.100.0/24
right=8.8.8.100
rightsubnet=172.16.100.0/24
type=tunnel
auto=start
mark=100/0xffКонфигурация /etc/ipsec.conf
config setup
charondebug="ike 2, knl 2, cfg 2"
uniqueids=never
conn %default
keyexchange=ikev2
authby=secret
ike=aes256-sha256-modp2048!
esp=aes256-sha256!
dpdaction=clear
dpddelay=30s
rekey=yes
conn tunnel-to-rttl
left=8.8.8.100
leftsubnet=172.16.100.0/24
right=7.7.7.100
rightsubnet=192.168.100.0/24
type=tunnel
auto=start
mark=100/0xffКонфигурация /etc/ipsec.secrets на RTR-L и RTR-R
7.7.7.100 8.8.8.100 : PSK "DEMO2023!"Настройка VTI-интерфейса
# Создание VTI-интерфейса
ip link add Tunnel1 type vti local 7.7.7.100 remote 8.8.8.100 key 100
ip addr add 10.0.0.1/30 dev Tunnel1
ip link set Tunnel1 up
# Маршрут к удалённой внутренней сети через туннель
ip route add 172.16.100.0/24 via 10.0.0.2 dev Tunnel1
# Настройка персистентности (добавить в /etc/network/interfaces или создать systemd-юнит)Настройка VTI-интерфейса
# Создание VTI-интерфейса
ip link add Tunnel1 type vti local 8.8.8.100 remote 7.7.7.100 key 100
ip addr add 10.0.0.2/30 dev Tunnel1
ip link set Tunnel1 up
# Маршрут к удалённой внутренней сети через туннель
ip route add 192.168.100.0/24 via 10.0.0.1 dev Tunnel1Запуск и проверка IPsec
# Перезапуск службы
ipsec restart
# Проверка статуса
ipsec statusall
# Ожидаемый результат: состояние ESTABLISHED для соединения tunnel-*Решение:
Установка FRRouting на RTR-L и **RTR-R
# Добавление репозитория
curl -s https://deb.frrouting.org/frr/keys.asc | apt-key add -
echo "deb https://deb.frrouting.org/frr $(lsb_release -s -c) frr-stable" >> /etc/apt/sources.list.d/frr.list
# Установка пакетов
apt update
apt install frr frr-pythontools -y
# Включение OSPF демона
sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
systemctl restart frrfrr version 8.0
frr defaults traditional
hostname RTR-L
log syslog informational
!
router ospf
ospf router-id 1.1.1.1
network 192.168.100.0/24 area 0.0.0.0
network 10.0.0.0/30 area 0.0.0.0
passive-interface eth2
!
ip forwarding
!frr version 8.0
frr defaults traditional
hostname RTR-R
log syslog informational
!
router ospf
ospf router-id 2.2.2.2
network 172.16.100.0/24 area 0.0.0.0
network 10.0.0.0/30 area 0.0.0.0
passive-interface eth2
!
ip forwarding
!# Перезапуск службы маршрутизации
vtysh -c "write"
systemctl restart frr
# Проверка соседей OSPF
vtysh -c "show ip ospf neighbor"
# Проверка таблицы маршрутизации
vtysh -c "show ip route"Решение:
# Добавление правил исключения из NAT для трафика туннеля
iptables -t nat -I POSTROUTING -o Tunnel1 -j ACCEPT
iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -d 172.16.100.0/24 -j ACCEPT
# Сохранение правил
netfilter-persistent save# Добавление правил исключения из NAT для трафика туннеля
iptables -t nat -I POSTROUTING -o Tunnel1 -j ACCEPT
iptables -t nat -I POSTROUTING -s 172.16.100.0/24 -d 192.168.100.0/24 -j ACCEPT
# Сохранение правил
netfilter-persistent save# Просмотр правил NAT
iptables -t nat -L POSTROUTING -n -v
# Тестирование связности между внутренними сетями
# С WEB-L: ping 172.16.100.100
# С WEB-R: ping 192.168.100.100| Zone | Record type | Key | Value |
|---|---|---|---|
| demo.wsr | A | ISP | 3.3.3.1 |
| A | www | 7.7.7.100 | |
| A | www | 8.8.8.100 | |
| CNAME | internet | ISP | |
| int.demo.wsr | A | web-l | 192.168.100.100 |
| A | web-r | 172.16.100.100 | |
| A | srv | 192.168.100.200 | |
| A | rtr-l | 192.168.100.254 | |
| A | rtr-r | 172.16.100.254 | |
| CNAME | webapp-l | web-l | |
| CNAME | webapp-r | web-r | |
| CNAME | ntp | srv | |
| CNAME | dns | srv |
- Запрещено прямое попадание трафика из внутренних сетей во внешние и наоборот;
Решение:
# Сброс существующих правил
iptables -F
iptables -t nat -F
iptables -X
# Установка политик по умолчанию
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Разрешение установленных и связанных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешение локального трафика
iptables -A INPUT -i lo -j ACCEPT
# Разрешение трафика внутри внутреннего региона
# Для RTR-L (интерфейс eth2 - внутренняя сеть)
iptables -A FORWARD -i eth2 -o eth2 -j ACCEPT
# Для RTR-R (интерфейс eth2 - внутренняя сеть)
iptables -A FORWARD -i eth2 -o eth2 -j ACCEPT
# Сохранение правил
netfilter-persistent saveПримечание: Правила для разрешённых сервисов (HTTP, HTTPS, SSH, DNS, IPsec) добавляются отдельно в соответствующих заданиях.
- а. Подключение со стороны внешних сетей по протоколу к платформе управления трафиком RTR-L на порт
2222должны быть перенаправлены на WEB-L; - b. Подключение со стороны внешних сетей по протоколу к платформе управления трафиком RTR-R на порт
2244должны быть перенаправлены на WEB-R.
Решение:
# DNAT для перенаправления порта 2222 на WEB-L
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 2222 \
-j DNAT --to-destination 192.168.100.100:22
# Разрешение перенаправленного трафика в правилах FORWARD
iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 22 \
-d 192.168.100.100 -j ACCEPT
# Сохранение
netfilter-persistent save# DNAT для перенаправления порта 2244 на WEB-R
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 2244 \
-j DNAT --to-destination 172.16.100.100:22
# Разрешение перенаправленного трафика в правилах FORWARD
iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 22 \
-d 172.16.100.100 -j ACCEPT
# Сохранение
netfilter-persistent save# С внешнего клиента (CLI) проверка подключения
# ssh -p 2222 [email protected] # должно подключиться к WEB-L
# ssh -p 2244 [email protected] # должно подключиться к WEB-R- а. Используйте ISP;
- b. Обслуживается зона
demo.wsr;- Наполнение зоны должно быть реализовано в соответствии с Таблицей 2.
- c. Сервер делегирует зону
int.demo.wsrна SRV;- Поскольку SRV находится во внутренней сети западного региона, делегирование происходит на внешний адрес маршрутизатора данного региона;
- Маршрутизатор региона должен транслировать соответствующие порты DNS-службы в порты сервера SRV.
- d. Внешний клиент CLI должен использовать DNS-службы, развёрнутую на ISP, по умолчанию.
Решение:
apt update
apt install bind9 bind9utils dnsutils -yzone "demo.wsr" {
type master;
file "/etc/bind/zones/demo.wsr.zone";
};
zone "int.demo.wsr" {
type delegate-only;
};mkdir -p /etc/bind/zones$TTL 86400
@ IN SOA ns1.demo.wsr. admin.demo.wsr. (
2023030801 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
; NS Records
@ IN NS ISP.demo.wsr.
; A Records
ISP IN A 3.3.3.1
www IN A 7.7.7.100
www IN A 8.8.8.100
; CNAME Records
internet IN CNAME ISP
; Делегирование внутренней зоны
int IN NS rtr-l.int.demo.wsr.
rtr-l.int IN A 7.7.7.100
options {
directory "/var/cache/bind";
recursion yes;
allow-recursion { 3.3.3.0/24; localhost; };
allow-query { any; };
forwarders { 8.8.8.8; 8.8.4.4; };
dnssec-validation auto;
};# Проверка синтаксиса
named-checkconf
named-checkzone demo.wsr /etc/bind/zones/demo.wsr.zone
# Перезапуск службы
systemctl restart bind9
systemctl enable bind9# Перенаправление входящих DNS-запросов на внутренний сервер SRV
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 53 \
-j DNAT --to-destination 192.168.100.200:53
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 53 \
-j DNAT --to-destination 192.168.100.200:53
# Разрешение трафика в FORWARD
iptables -A FORWARD -p udp --dport 53 -d 192.168.100.200 -j ACCEPT
iptables -A FORWARD -p tcp --dport 53 -d 192.168.100.200 -j ACCEPT
netfilter-persistent save# Установка первичного DNS-сервера
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 3.3.3.1
# Проверка
nslookup www.demo.wsr 3.3.3.1- а. Используйте SRV;
- b. Обслуживается зона
int.demo.wsr;- Наполнение зоны должно быть реализовано в соответствии с Таблицей 2.
- c. Обслуживаются обратные зоны для внутренних адресов регионов;
- Имена для разрешения обратных записей следует брать из Таблицей 2.
- d. Сервер принимает рекурсивные запросы, исходящие от адресов внутренних регионов;
- Обслуживание клиентов (внешних и внутренних), обращающихся к зоне
int.demo.wsrдолжно производиться без каких либо ограничений по адресу источника.
- Обслуживание клиентов (внешних и внутренних), обращающихся к зоне
- e. Внутренние хосты регионов (равно как и платформы управления трафиком) должны использовать данную DNS-службу для разрешения всех запросов имен.
Решение:
# Установка роли DNS-сервера
Install-WindowsFeature DNS -IncludeManagementTools
# Создание прямой зоны int.demo.wsr
Add-DnsServerPrimaryZone -Name "int.demo.wsr" -ZoneFile "int.demo.wsr.dns" -ReplicationScope "Server"
# Добавление записей зоны согласно Таблице 2
Add-DnsServerResourceRecordA -Name "web-l" -ZoneName "int.demo.wsr" -IPv4Address "192.168.100.100"
Add-DnsServerResourceRecordA -Name "web-r" -ZoneName "int.demo.wsr" -IPv4Address "172.16.100.100"
Add-DnsServerResourceRecordA -Name "srv" -ZoneName "int.demo.wsr" -IPv4Address "192.168.100.200"
Add-DnsServerResourceRecordA -Name "rtr-l" -ZoneName "int.demo.wsr" -IPv4Address "192.168.100.254"
Add-DnsServerResourceRecordA -Name "rtr-r" -ZoneName "int.demo.wsr" -IPv4Address "172.16.100.254"
# Добавление CNAME-записей
Add-DnsServerResourceRecordCName -Name "webapp-l" -HostName "web-l" -ZoneName "int.demo.wsr"
Add-DnsServerResourceRecordCName -Name "webapp-r" -HostName "web-r" -ZoneName "int.demo.wsr"
Add-DnsServerResourceRecordCName -Name "ntp" -HostName "srv" -ZoneName "int.demo.wsr"
Add-DnsServerResourceRecordCName -Name "dns" -HostName "srv" -ZoneName "int.demo.wsr"
# Создание обратных зон
Add-DnsServerPrimaryZone -NetworkID "192.168.100.0/24" -ReplicationScope "Server"
Add-DnsServerPrimaryZone -NetworkID "172.16.100.0/24" -ReplicationScope "Server"
# Добавление PTR-записей для обратной зоны 192.168.100.0/24
Add-DnsServerResourceRecordPtr -Name "100" -ZoneName "100.168.192.in-addr.arpa" -PtrDomainName "web-l.int.demo.wsr"
Add-DnsServerResourceRecordPtr -Name "200" -ZoneName "100.168.192.in-addr.arpa" -PtrDomainName "srv.int.demo.wsr"
Add-DnsServerResourceRecordPtr -Name "254" -ZoneName "100.168.192.in-addr.arpa" -PtrDomainName "rtr-l.int.demo.wsr"
# Добавление PTR-записей для обратной зоны 172.16.100.0/24
Add-DnsServerResourceRecordPtr -Name "100" -ZoneName "100.16.172.in-addr.arpa" -PtrDomainName "web-r.int.demo.wsr"
Add-DnsServerResourceRecordPtr -Name "254" -ZoneName "100.16.172.in-addr.arpa" -PtrDomainName "rtr-r.int.demo.wsr"
# Настройка рекурсии
Set-DnsServerRecursion -Enable $true
# Разрешение запросов от внутренних сетей
Add-DnsServerRecursionScope -Name "Internal" -EnableRecursion $trueapt install bind9 bind9utils -y
# /etc/bind/named.conf.local
zone "int.demo.wsr" {
type master;
file "/etc/bind/zones/int.demo.wsr.zone";
allow-query { any; };
};
zone "100.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/192.168.100.rev";
};
zone "100.16.172.in-addr.arpa" {
type master;
file "/etc/bind/zones/172.16.100.rev";
};$TTL 86400
@ IN SOA srv.int.demo.wsr. admin.int.demo.wsr. (
2023030801 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
@ IN NS srv.int.demo.wsr.
; A Records
web-l IN A 192.168.100.100
web-r IN A 172.16.100.100
srv IN A 192.168.100.200
rtr-l IN A 192.168.100.254
rtr-r IN A 172.16.100.254
; CNAME Records
webapp-l IN CNAME web-l
webapp-r IN CNAME web-r
ntp IN CNAME srv
dns IN CNAME srv
# Для Debian-клиентов (WEB-L, WEB-R, RTR-L, RTR-R)
nmcli con mod "<имя_соединения>" ipv4.dns "192.168.100.200"
nmcli con up "<имя_соединения>"
# Или вручную в /etc/resolv.conf
echo "nameserver 192.168.100.200" > /etc/resolv.conf- а. Используйте ISP;
- b. Сервер считает собственный источник времени верным,
stratum=4; - c. Сервер допускает подключение только через внешний адрес соответствующей платформы управления трафиком;
- Подразумевается обращение SRV для синхронизации времени.
- d. Клиент CLI должен использовать службу времени **_ISP
Решение:
apt update
apt install ntp -ydriftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# Локальный источник времени с указанным стратумом
server 127.127.1.0
fudge 127.127.1.0 stratum 4
# Разрешение подключения только с внешних адресов маршрутизаторов регионов
restrict 7.7.7.100 mask 255.255.255.255 nomodify notrap noquery
restrict 8.8.8.100 mask 255.255.255.255 nomodify notrap noquery
# Разрешение для клиента CLI
restrict 3.3.3.10 mask 255.255.255.255 nomodify notrap noquery
# Запрет доступа по умолчанию
restrict default ignore
restrict 127.0.0.1
restrict ::1systemctl restart ntp
systemctl enable ntp
# Проверка статуса
ntpq -p
# Ожидаемый результат: локальный источник с меткой .LOCL. и stratum 4# Настройка синхронизации с сервером времени на ISP
w32tm /config /manualpeerlist:"3.3.3.1" /syncfromflags:manual /reliable:yes /update
w32tm /resync /nowait
# Проверка
w32tm /query /status- а. Сервер синхронизирует время с ISP;
- Синхронизация с другими источниками запрещена.
- b. Сервер должен допускать обращение внутренних хостов регионов, в том числе и платформ управления трафиком, для синхронизации времени;
- c. Все внутренние хосты (в том числе и платформы управления трафиком) должны синхронизировать своё время с SRV.
Решение:
# Настройка синхронизации с внешним сервером времени (через RTR-L)
w32tm /config /manualpeerlist:"7.7.7.100" /syncfromflags:manual /reliable:yes /update
w32tm /resync
# Разрешение внутренним клиентам синхронизироваться с этим сервером
# Настройка через реестр или групповые политики:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer" `
-Name "Enabled" -Value 1 -PropertyType DWORD -Force
# Перезапуск службы времени
Restart-Service w32time
# Настройка брандмауэра для разрешения NTP-трафика (порт 123/UDP)
New-NetFirewallRule -DisplayName "Allow NTP" -Direction Inbound `
-Protocol UDP -LocalPort 123 -Action Allow# /etc/ntp.conf на SRV
# Удалить или закомментировать все server-строки, кроме одной:
server 7.7.7.100 iburst prefer
# Разрешение внутренним сетям
restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap noquery
restrict 172.16.100.0 mask 255.255.255.0 nomodify notrap noquery
# Перезапуск
systemctl restart ntp# Для Debian-клиентов
# /etc/ntp.conf
server 192.168.100.200 iburst
systemctl restart ntp
# Проверка
ntpq -p- а. Сервер должен предоставлять доступ для обмена файлами серверам WEB-L и WEB-R;
- b. Сервер, в зависимости от ОС, использует следующие каталоги для хранения файлов:
/mnt/storageдля систем на базе Linux;- Диск
R:\для систем на базе Windows.
- c. Хранение файлов осуществляется на диске (смонтированным по указанным выше адресам), реализованном по технологии RAID1. Решение:
# Создание общей папки с правами доступа
New-SmbShare -Name "webshare" -Path "R:\" `
-FullAccess "BUILTIN\Administrators" `
-ChangeAccess "WEB-L", "WEB-R" `
-Description "Shared storage for web servers"
# Настройка прав NTFS (при необходимости)
$Acl = Get-Acl "R:\"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("WEB-L", "Modify", "ContainerInherit,ObjectInherit", "None", "Allow")
$Acl.AddAccessRule($AccessRule)
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("WEB-R", "Modify", "ContainerInherit,ObjectInherit", "None", "Allow")
$Acl.AddAccessRule($AccessRule)
Set-Acl "R:\" $Acl# Установка Samba
apt install samba -y
# Настройка /etc/samba/smb.conf (добавить в конец)
[webshare]
path = /mnt/storage
browseable = yes
read only = no
valid users = webl, webr
create mask = 0775
directory mask = 0775
force user = nobody
force group = nogroup
# Создание пользователей Samba
smbpasswd -a webl
smbpasswd -a webr
# Настройка прав доступа к каталогу
chown -R nobody:nogroup /mnt/storage
chmod -R 0775 /mnt/storage
# Перезапуск служб
systemctl restart smbd nmbd
systemctl enable smbd nmbd# С WEB-L (Debian)
apt install smbclient -y
smbclient //SRV/webshare -U webl
# Ввести пароль, затем команды: ls, put, get, exit
# С Windows-клиента
net use Z: \\SRV\webshare /user:webl2.6. Сервера WEB-L и WEB-R должны использовать службу, настроенную на SRV, для обмена файлов между собой
- a. В случае применения решения на базе Linux используется центр сертификации типа OpenSSL и располагается по адресу
/var/ca; - b. Выдаваемые сертификаты должны иметь срок жизни не менее 500 дней;
- c. Параметры выдаваемых сертификатов:
- Страна
RU; - Организация
DEMO.WSR; - Прочие поля (за исключением CN) должны быть пусты.
- Страна
Решение:
# Создание структуры каталогов
mkdir -p /var/ca/{private,certs,csr,newcerts,crl}
chmod 700 /var/ca/private
touch /var/ca/index.txt
echo '1000' > /var/ca/serial[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /var/ca
certs = $dir/certs
crl_dir = $dir/crl
new_certs_dir = $dir/newcerts
database = $dir/index.txt
serial = $dir/serial
private_key = $dir/private/ca.key
certificate = $dir/certs/ca.crt
default_md = sha256
default_days = 500
preserve = no
policy = policy_loose
[ policy_loose ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
string_mask = utf8only
default_md = sha256
x509_extensions = v3_ca
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
organizationName = Organization Name
commonName = Common Name
countryName_default = RU
organizationName_default = DEMO.WSR
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
[ v3_server ]
basicConstraints = CA:FALSE
nsCertType = server
nsComment = "OpenSSL Generated Server Certificate"
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth# Генерация закрытого ключа ЦС
openssl genrsa -out /var/ca/private/ca.key 2048
chmod 400 /var/ca/private/ca.key
# Создание самоподписанного корневого сертификата
openssl req -config /var/ca/openssl.cnf \
-key /var/ca/private/ca.key \
-new -x509 -days 500 -sha256 -extensions v3_ca \
-out /var/ca/certs/ca.crt \
-subj "/C=RU/O=DEMO.WSR/CN=DEMO.WSR Root CA"# Генерация ключа и запроса на сертификат (на каждом веб-сервере)
openssl genrsa -out /etc/ssl/private/www.key 2048
chmod 600 /etc/ssl/private/www.key
openssl req -new -key /etc/ssl/private/www.key \
-out /var/ca/csr/www.csr \
-subj "/C=RU/O=DEMO.WSR/CN=www.demo.wsr"
# Подписание запроса на ЦС (на сервере ЦС)
openssl ca -config /var/ca/openssl.cnf \
-extensions v3_server \
-days 500 -notext -md sha256 \
-in /var/ca/csr/www.csr \
-out /var/ca/certs/www.crt \
-batch
# Копирование сертификата и корневого ЦС на веб-серверы
scp /var/ca/certs/www.crt root@WEB-L:/etc/ssl/certs/
scp /var/ca/certs/ca.crt root@WEB-L:/etc/ssl/certs/
# Повторить для WEB-R3. Взаимодействие со специалистами смежного профиля при разработке методов, средств и технологий применения объектов профессиональной деятельности
3.1. Образ Docker (содержащий веб-приложение) расположен на ISO-образе дополнительных материалов:
- a. Выполните установку приложения AppDocker0.
Решение:
# Создание точек монтирования
mkdir -p /mnt/docker-packages /mnt/app-iso
# Монтирование образов (заменить /dev/sr1 и /dev/sr2 на актуальные устройства)
mount /dev/sr1 /mnt/docker-packages
mount /dev/sr2 /mnt/app-iso# Для Debian 11
cd /mnt/docker-packages
dpkg -i *.deb
apt install -f -y
# Проверка установки
docker --version
systemctl enable docker
systemctl start docker# Импорт образа из архива
docker load -i /mnt/app-iso/AppDocker0.tar
# Просмотр загруженных образов
docker images
# Запуск контейнера
docker run -d --name appdocker0 \
--restart=unless-stopped \
-p 8080:80 \
appdocker0:latest- a. Клиентом приложения является CLI (браузер Edge);
- b. Хостинг приложения осуществляется на виртуальной машинах WEB-L и WEB-R;
- c. Доступ к приложению осуществляется по DNS-имени
www.demo.wsr;- Имя должно разрешаться во внешние адреса виртуальной машины управления трафиком в обоих регионах;
- При необходимости доступа к приложению допускается реализовать реверс-прокси или трансляцию портов.
- d. Доступ к приложению должен быть защищён с применением технологии TLS;
- Необходимо обеспечить корректное доверие сертификату сайта, без применения исключений и подобных механизмов.
- e. Незащищённое соединение должно переводится на защищённый канал автоматически.
Решение:
Убедиться, что в зоне demo.wsr на сервере ISP присутствуют записи:
www IN A 7.7.7.100
www IN A 8.8.8.100
# Установка Nginx
apt install nginx -y# Редирект HTTP -> HTTPS
server {
listen 80;
server_name www.demo.wsr;
return 301 https://$host$request_uri;
}
# HTTPS сервер
server {
listen 443 ssl http2;
server_name www.demo.wsr;
# Сертификаты
ssl_certificate /etc/ssl/certs/www.crt;
ssl_certificate_key /etc/ssl/private/www.key;
ssl_trusted_certificate /etc/ssl/certs/ca.crt;
# Параметры TLS
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# Заголовки безопасности
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}# Создание символической ссылки
ln -s /etc/nginx/sites-available/demo.wsr /etc/nginx/sites-enabled/
# Удаление стандартной конфигурации
rm -f /etc/nginx/sites-enabled/default
# Проверка и перезапуск
nginx -t
systemctl restart nginx
systemctl enable nginx# На RTR-L: перенаправление HTTPS на WEB-L
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 \
-j DNAT --to-destination 192.168.100.100:443
iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 443 \
-d 192.168.100.100 -j ACCEPT
# На RTR-R: перенаправление HTTPS на WEB-R
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 \
-j DNAT --to-destination 172.16.100.100:443
iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 443 \
-d 172.16.100.100 -j ACCEPT
netfilter-persistent save-
Убедиться, что корневой сертификат ЦС установлен в доверенные:
- Открыть файл ca.crt
- Установить сертификат в "Доверенные корневые центры сертификации"
-
Проверка доступа в браузере Edge:
- Открыть https://www.demo.wsr
- Убедиться в отсутствии предупреждений о сертификате
- Проверить редирект с http://www.demo.wsr на https://
- a. Сайт должен продолжать обслуживание (с задержкой не более 25 секунд) в следующих сценариях.
- Отказ одной из виртуальной машины WEB;
- Отказ одной из виртуальной машины управления трафиком.
Решение:
- Настройка двух записей A для www.demo.wsr с разными приоритетами (если поддерживается) или использование round-robin:
www IN A 7.7.7.100
www IN A 8.8.8.100
- Уменьшение TTL для быстрого обновления кэша:
$TTL 300 ; 5 минут вместо стандартных 86400
# Установка keepalived для VRRP (опционально, для каждого региона)
apt install keepalived -yvrrp_script chk_http {
script "/usr/local/bin/check_web_service.sh"
interval 5
weight -20
}
vrrp_instance VI_LEFT {
state MASTER
interface eth2
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass VRRP_PASS
}
virtual_ipaddress {
192.168.100.253/24
}
track_script {
chk_http
}
}#!/bin/bash
if curl -sf --connect-timeout 5 http://127.0.0.1:8080/health > /dev/null 2>&1; then
exit 0
else
exit 1
fichmod +x /usr/local/bin/check_web_service.sh
systemctl enable keepalived
systemctl start keepalived# Тест 1: Остановка веб-сервиса на одном из узлов
# На WEB-L:
docker stop appdocker0
# На клиенте CLI:
# - Запустить непрерывный пинг или запросы к www.demo.wsr
# - Зафиксировать время восстановления доступа (должно быть <= 25 секунд)
# - После проверки восстановить сервис: docker start appdocker0
# Тест 2: Имитация отказа маршрутизатора
# На время отключить сетевой интерфейс на RTR-L
ip link set eth1 down
# Проверить доступность через RTR-R
# Восстановить интерфейс: ip link set eth1 up1. Установка, настройка, эксплуатация и обслуживание технических и программно-аппаратных средств компьютерных сетей
- a. Используйте аутентификацию по общему ключу;
- b. Параметры IPsec произвольные.
Решение:
Данная настройка частично выполнена в Задании 2.3 Модуля 1. Необходимо убедиться в корректности параметров аутентификации.
Файл /etc/ipsec.secrets на обеих платформах должен содержать:
7.7.7.100 8.8.8.100 : PSK "DEMO2023!"conn tunnel-to-rtrr # или tunnel-to-rttl на противоположной стороне
authby=secret
ike=aes256-sha256-modp2048!
esp=aes256-sha256!
# ... остальные параметры# Перезапуск IPsec
ipsec restart
# Проверка установленных соединений
ipsec statusall
# Проверка политик безопасности
ip xfrm policy
ip xfrm state
# Тестирование защищённого канала
# С одного из внутренних хостов:
tcpdump -i any host 7.7.7.100 and host 8.8.8.100
# Трафик должен быть зашифрован (протокол ESP)2.1. Платформа управления трафиком RTR-R выполняет контроль входящего трафика согласно следующим правилам:
- a. Разрешаются подключения к портам HTTP и HTTPS для всех клиентов;
- Порты необходимые для работы настраиваемых служб.
- b. Разрешается работа выбранного протокола организации защищённой связи;
- Разрешение портов должно быть выполнено по принципу необходимо и достаточно.
- c. Разрешается работа протоколов ICMP;
- d. Разрешается работа протокола SSH;
- e. Прочие подключения запрещены;
- f. Для обращений к платформам со стороны хостов, находящихся внутри регионов, ограничений быть не должно.
Решение:
# Очистка правил (если требуется перенастройка)
iptables -F INPUT
iptables -F FORWARD
# Базовые правила для установленных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешение служебных портов для внешних клиентов
iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT # HTTP
iptables -A INPUT -i eth1 -p tcp --dport 443 -j ACCEPT # HTTPS
# Разрешение портов для защищённой связи (IPsec)
iptables -A INPUT -i eth1 -p udp --dport 500 -j ACCEPT # IKE
iptables -A INPUT -i eth1 -p udp --dport 4500 -j ACCEPT # NAT-T
iptables -A INPUT -i eth1 -p esp -j ACCEPT # ESP
# Разрешение ICMP
iptables -A INPUT -i eth1 -p icmp -j ACCEPT
# Разрешение SSH для управления (ограничить по источнику при необходимости)
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
# Разрешение всего трафика из внутренней сети
iptables -A INPUT -i eth2 -j ACCEPT
iptables -A FORWARD -i eth2 -j ACCEPT
iptables -A FORWARD -o eth2 -j ACCEPT
# Логирование и блокировка остального входящего трафика
iptables -A INPUT -i eth1 -j LOG --log-prefix "RTR-R-INPUT-DROP: " --log-level 4
iptables -A INPUT -i eth1 -j DROP
# Сохранение правил
netfilter-persistent save2.2. Платформа управления трафиком RTR-L выполняет контроль входящего трафика согласно следующим правилам:
- a. Разрешается подключения к портам DNS, HTTP и HTTPS для всех клиентов;
- Порты необходимы для работы настраиваемых служб.
- b. Разрешается работа выбранного протокола организации защищённой связи;
- Разрешение портов должно быть выполнено по принципу необходимо и достаточно.
- c. Разрешается работа ICMP;
- d. Разрешается работа SSH;
- e. Прочие подключения запрещены;
- f. Для обращений к платформам со стороны хостов, находящихся внутри регионов, ограничений быть не должно.
Решение:
# Очистка правил (если требуется перенастройка)
iptables -F INPUT
iptables -F FORWARD
# Базовые правила для установленных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешение служебных портов для внешних клиентов
iptables -A INPUT -i eth1 -p udp --dport 53 -j ACCEPT # DNS UDP
iptables -A INPUT -i eth1 -p tcp --dport 53 -j ACCEPT # DNS TCP
iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT # HTTP
iptables -A INPUT -i eth1 -p tcp --dport 443 -j ACCEPT # HTTPS
# Разрешение портов для защищённой связи (IPsec)
iptables -A INPUT -i eth1 -p udp --dport 500 -j ACCEPT # IKE
iptables -A INPUT -i eth1 -p udp --dport 4500 -j ACCEPT # NAT-T
iptables -A INPUT -i eth1 -p esp -j ACCEPT # ESP
# Разрешение ICMP
iptables -A INPUT -i eth1 -p icmp -j ACCEPT
# Разрешение SSH для управления
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
# Разрешение всего трафика из внутренней сети
iptables -A INPUT -i eth2 -j ACCEPT
iptables -A FORWARD -i eth2 -j ACCEPT
iptables -A FORWARD -o eth2 -j ACCEPT
# Логирование и блокировка остального входящего трафика
iptables -A INPUT -i eth1 -j LOG --log-prefix "RTR-L-INPUT-DROP: " --log-level 4
iptables -A INPUT -i eth1 -j DROP
# Сохранение правил
netfilter-persistent save

