Топология
сети

Используемые
подсети
192.168.10.0-192.168.10.31 – Сеть серверов
192.168.10.32-192.168.10.47 – Сеть клиентов
192.168.10.48-192.168.10.55 – Сеть управления
172.16.70.0-172.16.70.15 – Сеть между ISP и RTR-HQ
172.16.80.0-172.16.80.15 – Сеть между ISP и RTR-BR
Таблицы адресации роутеров
|
Название
устройства |
Название
интерфейса |
IP-Address |
Netmask |
|
ISP |
Ens33 |
DHCP |
DHCP |
|
Ens37 |
172.16.70.1 |
255.255.255.240
(/28) |
|
|
Ens38 |
172.16.80.1 |
255.255.255.240 (/28) |
|
|
HQ-RTR |
Ens33 |
172.16.70.2 |
255.255.255.240 (/28) |
|
Ens37.114 (Vlan 114) |
192.168.10.1 |
255.255.255.224 (/27) |
|
|
Ens37.214 (Vlan 214) |
192.168.10.33 |
255.255.255.240 (/28) |
|
|
Ens37.814 (Vlan 814) |
192.168.10.49 |
255.255.255.248 (/29) |
|
|
BR-RTR |
Ens33 |
172.16.80.2 |
255.255.255.240 (/28) |
|
Ens37 |
192.168.11.1 |
255.255.255.240 (/28) |
Таблица
адресации компьютеров
|
Название
устройства |
IP-Address |
Netmask |
Gateway |
|
BR-SRV |
192.168.11.2 |
255.255.255.240 (/28) |
192.168.11.1 |
|
HQ-SRV |
192.168.10.2 |
255.255.255.224 (/27) |
192.168.10.1 |
|
HQ-CLI |
192.168.10.34-192.168.10.47(DHCP) |
255.255.255.240 (/28) |
192.168.10.33 |
Таблица
доменных имён
|
Устройство |
Запись |
Тип |
|
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
(интерфейс направленный в сторону HQ-RTR) |
docker.au-team.irpo |
A |
|
ISP
(интерфейс направленный в сторону BR-RTR) |
web.au-team.irpo |
A |
Если на устройствах с
графикой, но служба графики выключено, то включить командой: startx
Модуль
1
Настройка
hostname,
IP-Адресации
и туннеля (Задания: 1, 2, 4, 6)
Настройка
isp
Редактирование настроек интерфейсов /etc/network/interfaces: (поменять ip)
source
/etc/network/interfaces.d/*
auto
lo
iface
lo inet loopback
allow-hotplug
ens33
iface
ens33 inet dhcp
post-up /etc/iptables.rules
auto
ens37
iface
ens37 inet static
address 172.16.70.1
netmask 255.255.255.240
auto
ens38
iface
ens38 inet static
address 172.16.80.1
netmask 255.255.255.240
Применение изменений, настройка hostname и
установка iptables:
(поменять ip)
sed
-i '/net.ipv4.ip_forward/s/^#//' /etc/sysctl.conf
echo
ip_gre > /etc/modules
ip a
flush scope global
touch
/etc/iptables.rules
chmod
+x /etc/iptables.rules
systemctl
restart networking
/sbin/sysctl -p
hostnamectl
set-hostname isp.au-team.irpo
echo "nameserver 8.8.8.8" > /etc/resolv.conf
apt install iptables iptables-persistent -y
echo
"/sbin/iptables -t nat -F POSTROUTING" > /etc/iptables.rules
echo "/sbin/iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
"
>> /etc/iptables.rules
/etc/iptables.rules
Если будут интерфейсы перепутаны поменять местами ens36 и ens37!
Настройка hq-rtr
Редактирование настроек интерфейсов /etc/network/interfaces: (поменять ip влан)
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 172.16.70.2
netmask 255.255.255.240
up ip route replace
0.0.0.0/0 via 172.16.70.1
post-up /etc/iptables.rules
auto ens37
iface ens37 inet manual
#vlan114
auto ens37.114
iface ens37.114 inet static
address 192.168.10.1
netmask 255.255.255.224
vlan-raw-device ens37
#vlan214
auto ens37.214
iface ens37.214 inet
static
address 192.168.10.33
netmask 255.255.255.240
vlan-raw-device ens37
#vlan814
auto ens37.814
iface ens37.814 inet
static
address 192.168.10.49
netmask 255.255.255.248
vlan-raw-device ens37
auto gre1
iface gre1 inet tunnel
address 10.10.10.1
netmask 255.255.255.252
mode gre
local 172.16.70.2
endpoint 172.16.80.2
ttl 255
Применение изменений,
настройка hostname
и
установка iptables:
sed
-i '/net.ipv4.ip_forward/s/^#//' /etc/sysctl.conf
echo
ip_gre > /etc/modules
ip a
flush scope global
touch
/etc/iptables.rules
chmod
+x /etc/iptables.rules
systemctl
restart networking
/sbin/sysctl -p
hostnamectl
set-hostname hq-rtr.au-team.irpo
echo "nameserver 8.8.8.8" > /etc/resolv.conf
apt install iptables iptables-persistent -y
echo
"/sbin/iptables -t nat -F POSTROUTING" > /etc/iptables.rules
echo "/sbin/iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
"
>> /etc/iptables.rules
/etc/iptables.rules
/sbin/modprobe
8021q
echo
"8021q" >> /etc/modules
Настройка br-rtr
Редактирование настроек интерфейсов /etc/network/interfaces: (поменять ip)
source
/etc/network/interfaces.d/*
auto
lo
iface
lo inet loopback
auto
ens33
iface
ens33 inet static
address 172.16.80.2
netmask 255.255.255.240
up ip route replace 0.0.0.0/0 via
172.16.80.1
post-up /etc/iptables.rules
auto
ens37
iface
ens37 inet static
address 192.168.11.1
netmask 255.255.255.240
auto
gre1
iface
gre1 inet tunnel
address 10.10.10.2
netmask 255.255.255.252
mode gre
local 172.16.80.2
endpoint 172.16.70.2
ttl 255
Применение изменений,
настройка hostname
и
установка iptables:
sed
-i '/net.ipv4.ip_forward/s/^#//' /etc/sysctl.conf
echo
ip_gre > /etc/modules
ip a
flush scope global
touch
/etc/iptables.rules
chmod
+x /etc/iptables.rules
systemctl
restart networking
/sbin/sysctl -p
hostnamectl
set-hostname br-rtr.au-team.irpo
echo "nameserver 8.8.8.8" > /etc/resolv.conf
apt install iptables iptables-persistent -y
echo
"/sbin/iptables -t nat -F POSTROUTING" > /etc/iptables.rules
echo "/sbin/iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
"
>> /etc/iptables.rules
/etc/iptables.rules
Настройка hq-srv
Редактирование настроек интерфейсов /etc/network/interfaces: (поменять ip и влан)
source
/etc/network/interfaces.d/*
auto
lo
iface
lo inet loopback
auto
ens33
iface
ens33 inet manual
auto
ens33.114
iface
ens33.114 inet static
address 192.168.10.2
netmask 255.255.255.224
gateway 192.168.10.1
vlan-raw-device ens33
Настройка hostname и
перезапускаем сетевую службу:
hostnamectl
set-hostname hq-srv.au-team.irpo
echo "nameserver 8.8.8.8" > /etc/resolv.conf
systemctl
restart networking
Настройка br-srv
Редактирование настроек интерфейсов
/etc/network/interfaces:
source
/etc/network/interfaces.d/*
#
The loopback network interface
auto
lo
iface
lo inet loopback
auto
ens33
iface
ens33 inet static
address 192.168.11.2
netmask 255.255.255.240
gateway 192.168.11.1
Настройка hostname и перезапускаем сетевую службу:
hostnamectl
set-hostname br-srv.au-team.irpo
echo "nameserver 8.8.8.8" > /etc/resolv.conf
systemctl
restart networking
Создание
ssh-пользователей
(Задание 3, 5)
На
hq-srv и
br-srv: (поменять порт и uid)
apt install ssh -y
echo "Authorized access only" > /etc/issue.net
/sbin/useradd -u 2026 -s /bin/bash -m sshuser
echo "sshuser:P@ssw0rd" | /sbin/chpasswd
echo "sshuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
cat << EOF >> /etc/ssh/sshd_config
Port 2014
AllowUsers sshuser
MaxAuthTries 2
Banner /etc/issue.net
EOF
systemctl
restart ssh
Проверка:
su - sshuser
id
sudo whoami
Ожидаемый результат:
(sudo
deluser --remove-home sshuser – удаление sshuser)
На
hq-rtr и
br-rtr:
apt install ssh -y
echo "Authorized access only" > /etc/issue.net
/sbin/useradd -u 2026 -s /bin/bash -m net_admin
echo "net_admin:P@ssw0rd" | /sbin/chpasswd
echo "net_admin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
cat << EOF >> /etc/ssh/sshd_config
Port 22
AllowUsers net_admin
MaxAuthTries 2
Banner /etc/issue.net
EOF
systemctl
restart ssh
Проверка
su -
net_admin
sudo whoami
Ожидаемый результат:
(sudo deluser --remove-home net_admin
sudo rm -rf /home/net_admin – удаление net_admin)
cut -d: -f1 /etc/passwd |
grep net – проверка пользователей
Настройка
OSPF
(Задание 7)
Настройка на hq-rtr:
(поменять ip)
apt install frr -y
cat << EOF > /etc/frr/frr.conf
router ospf
network 10.10.10.0/30 area
0.0.0.0
network 172.16.80.0/28 area 0.0.0.0
network 192.168.10.0/27 area
0.0.0.0
network 192.168.10.32/28 area
0.0.0.0
network 192.168.10.48/29 area
0.0.0.0
EOF
sed
-i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
systemctl
restart frr
Настройка
на br-rtr: (поменять ip)
apt
install frr -y
cat
<< EOF > /etc/frr/frr.conf
router
ospf
network 10.10.10.0/30 area 0.0.0.0
network 172.16.70.0/28 area 0.0.0.0
network 192.168.11.0/28 area 0.0.0.0
EOF
sed
-i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
systemctl
restart frr
ЛИБО ОСТАВИТЬ ТОЛЬКО:
network 10.10.10.0/30 area 0.0.0.0
Перезапуск службы frr:
sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
systemctl restart frr
vtysh -c "show ip ospf neighbor"
Настройка DHCP (Задание 9)
Установка
isc-dhcp-server на
hq-rtr: (поменять влан)
apt install isc-dhcp-server -y
sed -i 's/INTERFACESv4=""/INTERFACESv4="ens37.214"/' /etc/default/isc-dhcp-server
Отредактировать файл /etc/dhcp/dhcpd.conf:
authoritative;
option
domain-name "au-team.irpo";
option
domain-name-servers 192.168.10.2, 8.8.8.8;
default-lease-time
600;
max-lease-time
7200;
ddns-update-style
none;
subnet
192.168.10.32 netmask 255.255.255.240{
range 192.168.10.35 192.168.10.46;
option routers 192.168.10.33;
option subnet-mask 255.255.255.240;
option broadcast-address 192.168.10.47;
}
host
hq-cli{
hardware ethernet 00:0c:29:29:64:60;
fixed-address 192.168.10.34;
}
В hardware ethernet вписывается mac-address (link/ethet) интерфейса ens33 c hq-cli:
ip link
show ens33 | grep link/ether | awk '{print $2}'

Перезапуск dhcp:
systemctl
restart isc-dhcp-server
Редактирование на hq-cli настроек
интерфейсов /etc/network/interfaces: (поменять ip и влан)
source
/etc/network/interfaces.d/*
auto
lo
iface
lo inet loopback
allow-hotplug
ens33
iface
ens33 inet manual
allow-hotplug
ens33.214
iface
ens33.214 inet dhcp
vlan-raw-device
ens33
Настройка hostname и
перезапускаем сетевую службу на hq-cli:
hostnamectl
set-hostname hq-cli.au-team.irpo
systemctl
restart networking
apt install ssh -y
ХЗ ЧТО ЭТО
apt install -y ssh sshpass realmd sssd sssd-tools adcli krb5-user packagekit
samba-common-bin
Настройка DNS (Задание 10)
Устанавливаем необходимые
службы на hq-srv:
apt install bind9 bind9utils
bind9-doc -y
Редактируем файл nano /etc/bind/named.conf.options:
//
/etc/bind/named.conf.options
options
{
directory "/var/cache/bind";
version "none";
listen-on { any; };
listen-on-v6 { any; };
allow-query { any; };
recursion yes;
allow-recursion { any; };
forwarders {
8.8.8.8;
4.4.4.4;
};
allow-transfer { none; };
dnssec-validation auto;
auth-nxdomain no;
allow-update { 192.168.11.2; };
};
Редактируем файл nano /etc/bind/named.conf.local: (поменять ip)
//
local zone
zone
"au-team.irpo"{
type master;
file
"/etc/bind/db.au-team.irpo";
allow-transfer { 192.168.11.2; };
allow-update { none; };
};
zone
"10.168.192.in-addr.arpa"{
type master;
file
"/etc/bind/db.reverse-all";
allow-transfer { none; };
allow-update { none; };
};
zone
"11.168.192.in-addr.arpa"{
type master;
file
"/etc/bind/db.reverse-all";
allow-transfer { none; };
allow-update { none; };
};
zone
"70.16.172.in-addr.arpa"{
type master;
file
"/etc/bind/db.reverse-all";
allow-transfer { none; };
allow-update { none; };
};
zone
"80.16.172.in-addr.arpa"{
type master;
file
"/etc/bind/db.reverse-all";
allow-transfer { none; };
allow-update { none; };
};
Создаём и редактируем файл прямой зоны nano /etc/bind/db.au-team.irpo: (поменять ip и мб имена)
$TTL
60480
@ IN
SOA au-team.irpo.
root.au-team.irpo. (
2024010101 ;Serial
604800 ;Refresh
86400 ;Retry
2419200 ;Expire
604800) ;Negative Cache
TTL
@ IN
NS au-team.irpo.
@ IN
A 192.168.10.2
hq-rtr.au-team.irpo. IN
A 172.16.70.2
br-rtr.au-team.irpo. IN
A 172.16.80.2
hq-srv.au-team.irpo. IN
A 192.168.10.2
hq-cli.au-team.irpo. IN
A 192.168.10.34
br-srv.au-team.irpo. IN
A 192.168.11.2
docker.au-team.irpo. IN
A 172.16.70.1
web.au-team.irpo. IN
A 172.16.80.1
mon.au-team.irpo. IN
CNAME hq-srv.au-team.irpo.
_ldap._tcp.au-team.irpo. IN SRV 0 100 389 br-srv.au-team.irpo.
_kerberos._tcp.au-team.irpo. IN SRV 0 100 88 br-srv.au-team.irpo.
_kerberos._udp.au-team.irpo. IN SRV 0 100 88 br-srv.au-team.irpo.
_kpasswd._tcp.au-team.irpo. IN SRV 0 100 464 br-srv.au-team.irpo.
_kpasswd._udp.au-team.irpo. IN SRV 0 100 464 br-srv.au-team.irpo.
_ldap._tcp.dc._msdcs.au-team.irpo.
IN SRV 0 100 389 br-srv.au-team.irpo.
Создаём и редактируем файл
обратной зоны nano
/etc/bind/db.reverse-all: (поменять ip и
мб имена)
$TTL
60480
@ IN
SOA au-team.irpo. root.au-team.irpo. (
2024010102 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN
NS au-team.irpo.
10.10.168.192.in-addr.arpa. IN
PTR au-team.irpo.
2.10.168.192.in-addr.arpa. IN
PTR au-team.irpo.
11.10.168.192.in-addr.arpa. IN
PTR hq-srv.au-team.irpo.
34.10.168.192.in-addr.arpa. IN
PTR hq-cli.au-team.irpo.
2.11.168.192.in-addr.arpa. IN
PTR br-srv.au-team.irpo.
2.70.16.172.in-addr.arpa. IN
PTR hq-rtr.au-team.irpo.
1.70.16.172.in-addr.arpa. IN
PTR docker.au-team.irpo.
2.80.16.172.in-addr.arpa. IN
PTR br-rtr.au-team.irpo.
1.80.16.172.in-addr.arpa. IN
PTR web.au-team.irpo.
Перезапустить службу bind9:
systemctl
restart bind9
На всех устройствах редактируем
nano /etc/resolv.conf:
domain
au-team.irpo
search
au-team.irpo
nameserver 192.168.10.2
nameserver 8.8.8.8
Проверка:
nslookup docker.au-team.irpo
nslookup hq-srv.au-team.irpo
nslookup google.com
Настройка часового пояса (Задание 11)
На всех устройствах прописать:
timedatectl
set-timezone Europe/Moscow
date
Модуль 2
Настройка
samba-ad-dc (Задание 1)
Базовая установка и
настройка samba-ad-dc на
br-srv:
systemctl stop bind9
systemctl disable bind9
apt install samba smbclient winbind krb5-user -y
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
rm -f /etc/samba/smb.conf
rm -f /etc/samba/smb.conf.old
sudo samba-tool domain provision --use-rfc2307 --realm=au-team.irpo
--domain=au-team --server-role=dc --dns-backend=SAMBA_INTERNAL --adminpass='P@ssw0rd'
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
systemctl restart samba-ad-dc
samba-tool group add hq
samba-tool user add hquser1 P@ssw0rd
samba-tool user add hquser2 P@ssw0rd
samba-tool user add hquser3 P@ssw0rd
samba-tool user add hquser4 P@ssw0rd
samba-tool user add hquser5 P@ssw0rd
samba-tool group addmembers hq hquser1,hquser2,hquser3,hquser4,hquser5
Скрины
на всякий случай (Если не
сработает, то что до этого):
samba-tool
domain provision --use-rfc2307 --interactive

Настройка
hq-cli для
домена:
/sbin/realm join --user=administrator au-team.irpo <<<
'P@ssw0rd'
echo "%#$(id -g hquser1@au-team.irpo) ALL=(ALL:ALL) NOPASSWD:
/bin/cat, /bin/grep, /usr/bin/id" >> /etc/sudoers
Проверка hq-cli:
su hquser1@au-team.irpo
после:
sudo nano /etc/network/interfaces (доступа нет)
sudo cat /etc/network/interfaces (доступ есть)
Настройка Raid 0 (Задание 2)
Создание Raid на
основе двух(трех) дополнительных дисков виртуальных дисков hq-srv: (поменять рейд уровень и рейд
девайсы)
apt install mdadm -y
/sbin/mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb
/dev/sdc /dev/sdd --metadata=1.2
# sbin/mdadm --detail --scan |
sudo tee /etc/mdadm/mdadm.conf
/sbin/mkfs.ext4 /dev/md0
mkdir /raid
mount /dev/md0 /raid
echo '/dev/md0 raid ext4 defaults 0 0' | sudo tee -a /etc/fstab
/sbin/mdadm --detail --scan | sudo tee /etc/mdadm/mdadm.conf
sudo update-initramfs -u
Настройка nfs (Задание 3)
Настройка на hq-srv:
apt install nfs-kernel-server -y
echo "/raid/nfs 192.168.10.34(rw,sync,no_subtree_check)" >
/etc/exports
mkdir /raid/nfs
chmod 777 /raid/nfs
/sbin/exportfs -a
systemctl restart nfs-kernel-server
Проверка на HQ-SRV:
exportfs -v
ss -lntp | grep 2049 || true
✅
Если экспорт виден — сервер готов.
Настройка на hq-cli:
apt install nfs-common -y
mkdir -p /mnt/nfs
mount -t nfs -o defaults,proto=tcp 192.168.10.2:/raid/nfs
grep -q "192.168.10.2:/raid/nfs" /etc/fstab || echo "192.168.10.2:/raid/nfs
/mnt/nfs nfs defaults,proto=tcp 0 0" >> /etc/fstab
Проверка (самая важная)
showmount -e 192.168.100.2 (айпи другой hq-srv)
df -hT | grep /mnt/nfs
touch /mnt/nfs/test_from_cli
ls -la /mnt/nfs | tail
Должно быть:
✅
Если так — Задание 3 выполнено.
Настройка ntp (Задание 4)
Для
устройств ISP:
(поменять ip
и
локал стратум)
apt install chrony -y
cat << EOF >> /etc/chrony/chrony.conf
pool pool.ntp.org iburst
allow 192.168.10.0/27
allow 192.168.10.32/28
allow 192.168.10.48/29
allow 192.168.11.0/28
allow 172.16.70.0/28
allow 172.16.80.0/28
local stratum 9
EOF
systemctl restart chronyd
chronyc tracking
Для устройств: HQ-SRV, HQ-CLI, HQ-RTR: (поменять ip)
apt install chrony -y
sudo sed -i 's/pool 2\.debian\.pool\.ntp\.org iburst/server 172.16.70.1
iburst/' /etc/chrony/chrony.conf
systemctl restart chronyd
chronyc tracking
Для
устройств BR-RTR, BR-SRV: (поменять ip)
apt install chrony -y
sudo sed -i 's/pool 2\.debian\.pool\.ntp\.org iburst/server 172.16.80.1
iburst/' /etc/chrony/chrony.conf
systemctl restart chronyd
chronyc tracking
Настройка ansible (Задание 5)
Настройка на br-srv:
apt install ansible sshpass -y
mkdir -p /etc/ansible
ssh-add -l
ssh-add -D
ssh-add /root/.ssh/id_rsa
В файле /etc/ansible/hosts пишем:
(поменять порты)
[hq-srv]
hq-srv ansible_host=hq-srv ansible_user=sshuser ansible_port=2014
[hq-cli]
hq-cli
ansible_host=hq-cli ansible_user=user ansible_port=22 ansible_password=root
[hq-rtr]
hq-rtr ansible_host=hq-rtr ansible_user=net_admin ansible_port=22
[br-srv]
br-srv ansible_host=br-srv ansible_user=sshuser ansible_port=2014
[br-rtr]
br-rtr ansible_host=br-rtr ansible_user=net_admin ansible_port=22
[all:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
Создаем и редактируем файл
/etc/ansible/ansible.cfg: (мб поменять порт)
[defaults]
inventory = /etc/ansible/hosts
host_key_checking = False
remote_port = 2014
private_key_file = /root/.ssh/id_rsa
timeout = 30
gathering = smart
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
pipelining = True
Пишем
команды для подключения по ключу вместо пароля: (поменять порты)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
sshpass -p "P@ssw0rd" ssh-copy-id -o StrictHostKeyChecking=no
-p 2014 sshuser@hq-srv
sshpass -p "P@ssw0rd" ssh-copy-id -o StrictHostKeyChecking=no
-p 2014 sshuser@br-srv
sshpass -p "root" ssh-copy-id -o StrictHostKeyChecking=no -p
22 user@hq-cli
sshpass -p "P@ssw0rd" ssh-copy-id -o StrictHostKeyChecking=no
-p 22 net_admin@hq-rtr
sshpass -p "P@ssw0rd" ssh-copy-id -o StrictHostKeyChecking=no
-p 22 net_admin@br-rtr
ansible all -m ping
Либо это:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
ssh-copy-id -p 2026 sshuser@hq-srv
ssh-copy-id -p 2026 sshuser@br-srv
ssh-copy-id -p 22 user@hq-cli
ssh-copy-id -p 22 net_admin@hq-rtr
ssh-copy-id -p 22 net_admin@br-rtr
ansible all -m ping
Веб приложение в docker (Задание 6)
Мэйн версия:
Шаг 1. Проверка
работы Docker
На BR-SRV под root:
docker
--version
systemctl
status docker
Ожидаемо:
Шаг 2. Монтирование Additional.iso
lsblk
В списке должен быть CD-привод, например:
sr0 11:0 1 929M 0 rom
mkdir -p
/mnt/additional
mount -t
iso9660 /dev/sr0 /mnt/additional
ls /mnt/additional
ls /mnt/additional/docker
Ожидаемо увидеть папку docker и файлы:
Шаг 3. Импорт Docker-образов из Additional.iso
Импортируем образы в локальный Docker:
docker load
-i /mnt/additional/docker/mariadb_latest.tar
docker load
-i /mnt/additional/docker/site_latest.tar
Проверка:
docker images
Ожидаемо увидеть что-то вроде:
REPOSITORY TAG
IMAGE ID CREATED SIZE
site latest ... ... ...
mariadb 10.11
... ... ...
⚠️ В частности ISO даёт теги site:latest и
mariadb:10.11
(в некоторых примерах теги могут называться site_latest / mariadb_latest — ориентируйтесь по
выводу docker images).
Шаг 4. Подготовка каталога проекта и docker-compose.yml
mkdir -p /opt/testapp
cd /opt/testapp
nano
/opt/testapp/docker-compose.yml
Вставить содержимое:
version:
'3.8'
services:
database:
container_name: db
image: mariadb:10.11 # или mariadb_latest, если так называется образ
restart: always
ports:
- "3306:3306"
environment:
MARIADB_DATABASE: "testdb"
MARIADB_USER: "testc"
MARIADB_PASSWORD: "P@sswOrd"
MARIADB_ROOT_PASSWORD: "root"
volumes:
- db_data:/var/lib/mysql
app:
container_name: testapp
image: site:latest # или site_latest, если так называется образ
restart: always
ports:
- "8080:8000"
environment:
DB_TYPE: "maria"
DB_HOST: "database"
DB_PORT: "3306"
DB_NAME: "testdb"
DB_USER: "testc"
DB_PASS: "P@sswOrd"
depends_on:
- database
volumes:
db_data:
Сохранить файл (Ctrl+O, Enter) и выйти (Ctrl+X).
Важно:
Шаг 5. Запуск Docker-стека
На BR-SRV:
cd /opt/testapp
docker-compose up -d (или docker-compose -f app.yml up -d)
Проверка списка контейнеров:
docker
ps
Ожидаемо:
CONTAINER
ID IMAGE COMMAND STATUS PORTS NAMES
... site:latest "sh -c 'python3 -m a…" Up ... 0.0.0.0:8080->8000/tcp testapp
... mariadb:10.11 "docker-entrypoint.s…" Up ... 0.0.0.0:3306->3306/tcp db
Если контейнеры не поднимаются — смотреть логи:
docker
logs testapp | tail -n 30
docker logs db | tail -n 30
Шаг 6. Проверка работы приложения на BR-SRV
apt update
apt install -y curl
curl http://localhost:8080 | head
Ожидаемо увидеть HTML-страницу, в <title> — что-то вроде:
<title>Все студенты</title>
Если curl показывает начало нормального HTML — приложение запущено и отдаёт страницу.
Шаг 7. Проверка внешнего доступа по порту 8080
На HQ-CLI (или другом хосте экзаменационной сети):
ping br-srv
curl http://br-srv:8080 | head
либо по IP BR-SRV,
например:
curl http://30.30.30.2:8080
| head
В обоих случаях ожидаем начало той же HTML-страницы «Все студенты».
При необходимости (если в системе включён firewall) можно явно разрешить порт 8080 на BR-SRV:
iptables -A INPUT -p tcp
--dport 8080 -j ACCEPT
4. Краткий чек-лист для сдачи задания
На защите задания 6 можно показать проверяющему:
Видно два контейнера:
В файле присутствуют:
Открывается веб-страница (список «Студенты»).
Если всё из чек-листа выполняется — задание 6 по демо-экзамену считается полностью выполненным.
Вторая
версия (не работает)
Ссылка на скачивание additional.iso: https://disk.yandex.ru/d/0MGlkrp2B9nXDw
Вводим команды на br-srv
apt install -y wget curl docker.io docker-compose
mkdir -p /mnt
mkdir -p /tmp/additional
mount /dev/sr0 /tmp/additional
cp -r /tmp/additional /mnt
docker load -i /mnt/additional/docker/mariadb_latest.tar
docker load -i /mnt/additional/docker/site_latest.tar
docker images
chmod -R 755 /mnt/additional
Создаём /mnt/additional/docker/docker-compose.yml:
# docker-compose.yml
version: '3.8'
services:
database:
container_name: db
image: mariadb:10.11
restart: always
ports:
- "3306:3306"
environment:
MARIADB_DATABASE:
"testdb"
MARIADB_USER:
"testc"
MARIADB_PASSWORD:
"P@sswOrd"
MARIADB_ROOT_PASSWORD:
"root"
app:
container_name: testapp
image: site:latest
restart: always
ports:
- "8080:8000"
environment:
DB_TYPE: "maria"
DB_HOST:
"database"
DB_PORT: "3306"
DB_NAME: "testdb"
DB_USER: "testc"
DB_PASS:
"P@sswOrd"
depends_on:
- database
volumes:
db_data:
Далее запускаем docker-compose:
docker-compose -f /mnt/additional/docker/docker-compose.yml up -d
Проверка работоспособности:

Разверните веб приложение на сервере HQ-SRV (Задание 7)
Мейн версия:
НА HQ-SRV
3.1. Монтаж
Additional.iso
sudo
mkdir -p /mnt/additional
sudo
mount /dev/sr0 /mnt/additional
# проверка
ls
/mnt/additional
ls
/mnt/additional/web
В ls
/mnt/additional/web должны быть: dump.sql index.php logo.png.
3.2. Установка Apache, PHP и MariaDB
sudo
apt update
sudo
apt install -y apache2 mariadb-server php php-mysql libapache2-mod-php
Проверка сервисов
sudo
systemctl status apache2 --no-pager
sudo
systemctl status mariadb --no-pager
Оба сервиса должны быть active (running).
3.3. Создание БД и пользователя в MariaDB
Включаем MariaDB и создаём БД/пользователя:
sudo
systemctl enable --now mariadb
sudo
mariadb <<'EOF'
CREATE
DATABASE IF NOT EXISTS webdb;
CREATE
USER IF NOT EXISTS 'webc'@'localhost' IDENTIFIED BY 'P@ssw0rd';
GRANT
ALL PRIVILEGES ON webdb.* TO 'webc'@'localhost';
FLUSH
PRIVILEGES;
EOF
Проверка
sudo
mariadb -e "SHOW DATABASES LIKE 'webdb';"
sudo
mariadb -e "SELECT user,host FROM mysql.user WHERE user='webc';"
Должны появиться строки с webdb и webc | localhost.
3.4. Импорт дампа в БД (мб поменять dump, но вряд ли)
sudo mariadb -u webc -pP@ssw0rd
webdb < /mnt/additional/web/dump.sql
Проверка таблиц
sudo mariadb -u webc
-pP@ssw0rd webdb -e "SHOW TABLES;"
Ожидаем таблицу employees (или аналогичное имя).
3.5. Развёртывание веб-приложения
Очищаем стандартный каталог и копируем файлы сайта:
sudo
rm -rf /var/www/html/*
sudo
cp /mnt/additional/web/index.php /var/www/html/
sudo
cp /mnt/additional/web/logo.png /var/www/html/
# если есть папка images
sudo cp -r
/mnt/additional/web/images /var/www/html/ 2>/dev/null || true
ls -l /var/www/html
В выводе ls должны быть минимум index.php и logo.png.
3.6. Настройка index.php
Открываем файл:
sudo nano
/var/www/html/index.php
$servername =
"localhost";
$username = "webc";
$password = "P@ssw0rd";
$dbname =
"webdb";
Сохраняем: Ctrl+O → Enter → Ctrl+X.
Проверка синтаксиса PHP
php -l /var/www/html/index.php
Должно быть: No syntax errors detected.
3.7. Перевод Apache на порт 8080
3.7.1. ports.conf (поменять порт)
sudo sed -i 's/^Listen
80/Listen 8080/' /etc/apache2/ports.conf
Проверка:
grep -n Listen
/etc/apache2/ports.conf
Должно быть Listen 8084 или 8080.
3.7.2. Виртуальный хост 000-default.conf
Перезаписываем конфиг: (поменять порт)
sudo
bash -c
'cat >/etc/apache2/sites-available/000-default.conf' <<'EOF'
<VirtualHost
*:8080>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.php index.html
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log
combined
</VirtualHost>
EOF
Проверка конфига
sudo apache2ctl configtest
Ожидаем Syntax OK.
3.8. Перезапуск Apache и итоговая проверка
sudo
systemctl restart apache2
sudo
systemctl status apache2 --no-pager
sudo
ss -tlnp | grep 8080
curl
-I http://127.0.0.1:8080 2>/dev/null | head -n1
Должно быть:
Дальше в браузере (HQ-SRV или HQ-CLI):
http://hq-srv:8080
Проверяем:
можно добавлять, обновлять, удалять студента
Вторая
версия:
На сервере hq-srv пишем:
apt install apache2 mariadb-server php php-mysql libapache2-mod-php -y
mkdir -p /mnt
mkdir -p /tmp/additional
mount /dev/sr0 /tmp/additional
cp -r /tmp/additional /mnt
cp /mnt/additional/web/index.php /var/www/html
cp /mnt/additional/web/logo.png /var/www/html
sudo sed -i '/Listen 80/a Listen 8080' /etc/apache2/ports.conf
sudo sed -i \
-e
's/^\$servername\s*=\s*".*";/\$servername = "localhost";/'
\
-e
's/^\$username\s*=\s*".*";/\$username = "webc";/' \
-e
's/^\$password\s*=\s*".*"/\$password = "P@ssw0rd"/' \
-e
's/^\$dbname\s*=\s*".*";/\$dbname = "webdb";/' \
/var/www/html/index.php
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
В файле /etc/apache2/sites-available/000-default.conf:
<VirtualHost *:8080>
ServerAdmin
webmaster@localhost
DocumentRoot /var/www/html
<Directory
/var/www/html>
Options Indexes
FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.php
index.html
</Directory>
ErrorLog
${APACHE_LOG_DIR}/error.log
CustomLog
${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Запуска mariadb попировать
по отдельности:
systemctl enable --now mariadb
mariadb;
CREATE DATABASE webdb;
CREATE USER 'webc'@'localhost' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL PRIVILEGES ON webdb.* TO 'webc'@'localhost';
FLUSH PRIVILEGES;
EXIT;
mysql -u webc -p -D webdb < /mnt/additional/web/dump.sql
systemctl restart apache2
Проверка
работоспособности:

На
маршрутизаторах сконфигурируйте статическую трансляцию портов (Задание 8)
на
hq-rtr редактируем
файл nano
/etc/iptables.rules: (поменять ip и мб порты)
Если в задании 8 на экзамене всё ещё будет написано “пробросьте порт 2026 (--dport)”, тогда лучше сделать так (192.168.11.2:2014
– ssh-порт):
--dport 2026 = порт,
на который подключаются снаружи
:2014 = реальный SSH-порт на сервере внутри сети
Если в
задании 8 тоже будет написано “пробросьте порт 2014”, тогда DNAT
делаешь:
внешний
2014 -> внутренний 2014
также поменять докер порт с 8080 на 8084 (--dport 8084 -j DNAT --to-destination
192.168.10.2:8084)
/sbin/iptables -t nat -A PREROUTING -d 172.16.70.2 -p tcp --dport 2014
-j DNAT --to-destination 192.168.10.2:2014 (пример)
ИЛИ (если ssh = 2014, а пробросить порт нужно 2026)
/sbin/iptables -t
nat -A PREROUTING -d 172.16.70.2 -p tcp --dport 2026 -j DNAT --to-destination
192.168.11.2:2014 (пример)
# NAT
/sbin/iptables -t nat -F POSTROUTING
/sbin/iptables -t nat -F PREROUTING
/sbin/iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
/sbin/iptables -t nat -A PREROUTING -d 172.16.70.2 -p tcp --dport 8080
-j DNAT --to-destination 192.168.10.2:8080
/sbin/iptables -t nat -A PREROUTING -d 172.16.70.2 -p udp --dport 8080
-j DNAT --to-destination 192.168.10.2:8080
/sbin/iptables -t nat -A PREROUTING -d 172.16.70.2 -p tcp --dport 2026
-j DNAT --to-destination 192.168.10.2:2026
/sbin/iptables -t nat -A PREROUTING -d 172.16.70.2 -p udp --dport 2026
-j DNAT --to-destination 192.168.10.2:2026
на br-rtr редактируем файл nano /etc/iptables.rules: (поменять ip и мб порты)
# NAT
/sbin/iptables -t nat -F POSTROUTING
/sbin/iptables -t nat -F PREROUTING
/sbin/iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
/sbin/iptables -t nat -A PREROUTING -d 172.16.80.2 -p tcp --dport 8080
-j DNAT --to-destination 192.168.11.2:8080
/sbin/iptables -t nat -A PREROUTING -d 172.16.80.2 -p udp --dport 8080
-j DNAT --to-destination 192.168.11.2:8080
/sbin/iptables -t nat -A PREROUTING -d 172.16.80.2 -p tcp --dport 2026
-j DNAT --to-destination 192.168.11.2:2026
/sbin/iptables -t nat -A PREROUTING -d 172.16.80.2 -p udp --dport 2026
-j DNAT --to-destination 192.168.11.2:2026
Перезапустить iptables командой:
/etc/iptables.rules
Настройте веб-сервер nginx как обратный прокси-сервер
на ISP и web-based аутентификация
(Задания: 9, 10)
На isp устанавливаем
необходимые пакеты и добавляем пользователя для аутентификации на сайте:
apt install nginx apache2-utils ssh sshpass -y
htpasswd -c -b /etc/nginx/.htpasswd WEB P@ssw0rd
Создаём и редактируем файл nano /etc/nginx/sites-available/web.au-team.irpo: (поменять ip и мб порты и имя сервера)
server {
listen 80;
server_name web.au-team.irpo;
location / {
proxy_pass
http://172.16.70.2: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;
auth_basic
"Restricted area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
Создаём и редактируем файл nano /etc/nginx/sites-available/docker.au-team.irpo: (поменять ip и мб порты и имя сервера)
server {
listen 80;
server_name docker.au-team.irpo;
location / {
proxy_pass
http://172.16.80.2: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;
}
}
Создаем ссылки для nginx и перезапускаем nginx: (менять название докера и web)
ln -s /etc/nginx/sites-available/web.au-team.irpo
/etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/docker.au-team.irpo
/etc/nginx/sites-enabled
/sbin/nginx -t
systemctl restart nginx
Проверка доступа с клиента на сайт web.au-team.irpo:


Проверка доступа с клиента на сайт docker.au-team.irpo:

Скачивание
Яндекс браузера (Задание 11)
Для
того чтобы скачать Яндекс, надо зайти на сайт https://browser.yandex.ru -> пролистать до самого низа
-> «Выбрать Debian
Mint Ubuntu»

Затем
заходим в терминал и пишем:
apt
install /home/user/Загрузки/Yandex.deb
-y

Модуль
3
Выполните
импорт пользователей в домен au-team.irpo (Задание 1)
На br-srv в файле /mnt/additional/import_user.sh:
#!/bin/bash
csv_file="$1"
# Create OU
awk -F ';' 'NR>1 {print $5}' "$csv_file" | sort | uniq |
while read ou; do
samba-tool ou add
OU="$ou",DC=au-team,DC=irpo;
done
# Create Users
while IFS=";" read -r firstName lastName role phone ou street
zip city country password; do
if [ "$firstName" ==
"First Name" ]; then
continue
fi
username="${firstName,,}.${lastName,,}"
samba-tool user add
"$username" "$password" \
--given-name="$firstName" \
--surname="$lastName" \
--telephone-number="$phone" \
--job-title="$role" \
--userou="OU=$ou"
samba-tool user setexpiry
"$username" --noexpiry
done
< "$csv_file"
Запуск скрипта:
chmod +x /mnt/additional/import_user.sh
/mnt/additional/import_user.sh
/mnt/additional/Users.csv
Выполните настройку центра сертификации на базе HQ-SRV
(Задание 2)
Установка на hq-srv и
на isp:
apt install openssl
libengine-gost-openssl -y
Добавляем на hq-srv и isp в конец файла /etc/ssl/openssl.cnf:
openssl_conf
= openssl_init
[openssl_init]
engines
= engine_section
[engine_section]
gost
= gost_section
[gost_section]
engine_id
= gost
dynamic_path
= /usr/lib/x86_64-linux-gnu/engines-3/gost.so
default_algorithms = ALL
На
hq-srv создаём
сертификаты и перекидывание их:
OPENSSL_CONF=/etc/ssl/openssl.cnf
openssl engine -t -c
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCB -out
ca.key
openssl req -new -x509 -md_gost12_256 -days 30 -key ca.key -out ca.cer -subj
"/C=RU/ST=Tatarstan/L=Kazan/O=au-team.irpo/CN=hq-srv.au-team.irpo"
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out
web.au-team.irpo.key
openssl req -new -md_gost12_256 -key web.au-team.irpo.key -out
web.au-team.irpo.csr -subj
"/C=RU/ST=Tatarstan/L=Kazan/O=au-team.irpo/CN=web.au-team.irpo"
openssl x509 -req -in web.au-team.irpo.csr -CA ca.cer -CAkey ca.key
-CAcreateserial -out web.au-team.irpo.cer -days 30
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out
docker.au-team.irpo.key
openssl req -new -md_gost12_256 -key docker.au-team.irpo.key -out
docker.au-team.irpo.csr -subj
"/C=RU/ST=Tatarstan/L=Kazan/O=au-team.irpo/CN=docker.au-team.irpo"
openssl x509 -req -in docker.au-team.irpo.csr -CA ca.cer -CAkey ca.key
-CAcreateserial -out docker.au-team.irpo.cer -days 30
sshpass -p "root" scp -o
StrictHostKeyChecking=no *.au-team.irpo.{key,cer} user@172.16.1.1:/tmp
sshpass -p "root" scp -o
StrictHostKeyChecking=no ca.cer user@hq-cli:/tmp
Скрины на всякий случай (Если не сработает, то что до этого):
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCB -out ca.key
openssl req -new -x509 -md_gost12_256 -days 30 -key ca.key -out ca.cer

openssl x509 -noout -text -in ca.cer
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out
web.au-team.irpo.key
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out
docker.au-team.irpo.key
openssl req -new -md_gost12_256 -key web.au-team.irpo.key -out
web.au-team.irpo.csr

openssl req -new -md_gost12_256 -key docker.au-team.irpo.key -out docker.au-team.irpo.csr

openssl x509 -req -in web.au-team.irpo.csr -CA ca.cer -CAkey ca.key
-CAcreateserial -out web.au-team.irpo.cer -days 30
openssl x509 -req -in docker.au-team.irpo.csr -CA ca.cer -CAkey ca.key
-CAcreateserial -out docker.au-team.irpo.cer -days 30
Перекидываем
файлы с hq-srv на isp и
hq-cli, если не сработает то, что до этого:
scp web.au-team.irpo.key user@172.16.1.1:/tmp
scp web.au-team.irpo.cer user@172.16.1.1:/tmp
scp docker.au-team.irpo.key user@172.16.1.1:/tmp
scp docker.au-team.irpo.cer user@172.16.1.1:/tmp
scp ca.cer user@hq-cli:/tmp
Редактируем на isp файл /etc/nginx/sites-available/web.au-team.irpo:
server {
listen 443 ssl;
server_name
web.au-team.irpo;
ssl_certificate
/etc/nginx/ssl/web.au-team.irpo.cer;
ssl_certificate_key
/etc/nginx/ssl/web.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.1.2: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;
auth_basic
"Restricted area";
auth_basic_user_file /etc/nginx/.htpasswd;
sub_filter
'http://' 'https://';
sub_filter_once
off;
sub_filter_types
text/css text/javascript application/javascript;
}
}
Редактируем на isp файл /etc/nginx/sites-available/docker.au-team.irpo:
server {
listen 443 ssl;
server_name
docker.au-team.irpo;
ssl_certificate
/etc/nginx/ssl/docker.au-team.irpo.cer;
ssl_certificate_key
/etc/nginx/ssl/docker.au-team.irpo.key;
ssl_protocols TLSv1
TLSv1.1 TLSv1.2;
location / {
proxy_pass
http://172.16.2.2: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;
sub_filter
'http://' 'https://';
sub_filter_once
off;
sub_filter_types
text/css text/javascript application/javascript;
}
}
На isp копируем файлы файлы:
OPENSSL_CONF=/etc/ssl/openssl.cnf
openssl engine -t -c
mkdir /etc/nginx/ssl
cp /tmp/web.au-team.irpo.* /etc/nginx/ssl
cp /tmp/docker.au-team.irpo.* /etc/nginx/ssl
systemctl restart nginx
Настройка на hq-cli:
Ссылка
на скачивание КриптоПро: https://cryptopro.ru/products/csp


Обеспечиваем на клиенте
доверие центру сертификации:
cp /tmp/ca.cer /home/user
tar -xzvf /home/user/Загрузки/linux-amd64_deb.tgz -C /home/user/Загрузки
sudo /home/user/Загрузки/linux-amd64_deb/install_gui.sh





Перенастройте
ip-туннель с базового до уровня туннеля, обеспечивающего шифрование трафика
(Задание 3)
Установка
StrongSwan на маршрутизаторе hq-rtr и br-rtr:
apt update
apt install strongswan strongswan-swanctl -y
Конфигурация IPsec на HQ-RTR /etc/ipsec.conf:
# /etc/ipsec.conf - HQ-RTR
config setup
charondebug="ike 2, knl
2, cfg 2"
uniqueids=no
conn %default
keyexchange=ikev2
ike=aes256-sha2_256-modp2048!
esp=aes256-sha2_256!
leftauth=psk
rightauth=psk
auto=start
dpdaction=restart
closeaction=restart
# Transport mode for GRE encryption
conn gre-encrypt
left=172.16.1.2
leftid=@hq-rtr.au-team.irpo
right=172.16.2.2
rightid=@br-rtr.au-team.irpo
type=transport
authby=psk
esp=aes256-sha2_256!
ike=aes256-sha2_256-modp2048!
keyexchange=ikev2
leftprotoport=gre
rightprotoport=gre
leftfirewall=yes
rightfirewall=yes
На HQ-RTR в файле /etc/ipsec.secrets:
# /etc/ipsec.secrets - HQ-RTR
@hq-rtr.au-team.irpo @br-rtr.au-team.irpo : PSK "P@ssw0rd"
Конфигурация IPsec на BR-RTR /etc/ipsec.conf:
# /etc/ipsec.conf - BR-RTR
config setup
charondebug="ike 2, knl
2, cfg 2"
uniqueids=no
conn %default
keyexchange=ikev2
ike=aes256-sha2_256-modp2048!
esp=aes256-sha2_256!
leftauth=psk
rightauth=psk
auto=start
dpdaction=restart
closeaction=restart
# Transport mode for GRE encryption
conn gre-encrypt
left=172.16.2.2
leftid=@br-rtr.au-team.irpo
right=172.16.1.2
rightid=@hq-rtr.au-team.irpo
type=transport
authby=psk
esp=aes256-sha2_256!
ike=aes256-sha2_256-modp2048!
keyexchange=ikev2
leftprotoport=gre
rightprotoport=gre
leftfirewall=yes
rightfirewall=yes
На br-rtr в файле /etc/ipsec.secrets:
# /etc/ipsec.secrets - BR-RTR
@br-rtr.au-team.irpo @hq-rtr.au-team.irpo : PSK "P@ssw0rd"
Запуск и проверка
systemctl restart ipsec
systemctl enable ipsec
systemctl status
ipsec
Настройте межсетевой экран на маршрутизаторах HQ-RTR и
BR-RTR на сеть в сторону ISP (Задание 4)
Добавляем
до правил nat
в файл настроек файрвола /etc/iptables.rules на
hq-rtr и br-rtr:
#!/bin/bash
# Очистка
всех таблиц
/sbin/iptables
-F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#ICMP
/sbin/iptables -A INPUT -p icmp -j ACCEPT
/sbin/iptables -A FORWARD -p icmp -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -j ACCEPT
#OSPF
/sbin/iptables -A INPUT -p ospf -j ACCEPT
/sbin/iptables -A FORWARD -p ospf -j ACCEPT
/sbin/iptables -A OUTPUT -p ospf -j ACCEPT
#GRE
/sbin/iptables -A INPUT -p gre -j ACCEPT
/sbin/iptables -A FORWARD -p gre -j ACCEPT
/sbin/iptables -A OUTPUT -p gre -j ACCEPT
# IPSec ESP (протокол 50)
/sbin/iptables -A INPUT -p 50 -j ACCEPT
/sbin/iptables -A OUTPUT -p 50 -j ACCEPT
/sbin/iptables -A FORWARD -p 50 -j ACCEPT
# IPSec AH (протокол 51)
/sbin/iptables -A INPUT -p 51 -j ACCEPT
/sbin/iptables -A OUTPUT -p 51 -j ACCEPT
/sbin/iptables -A FORWARD -p 51 -j ACCEPT
# IPSec IKE (UDP порт 500)
/sbin/iptables -A INPUT -p udp --dport 500 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --sport 500 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --dport 500 -j ACCEPT
# IPSec NAT-T (UDP порт
4500)
/sbin/iptables -A INPUT -p udp --dport 4500 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --sport 4500 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --dport 4500 -j ACCEPT
# DNS
/sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --dport 53 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 53 -j ACCEPT
# HTTP, HTTPS
/sbin/iptables -A INPUT -p tcp -m multiport --dports 80,443,8080 -j
ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m multiport --dports 80,443,8080 -j
ACCEPT
/sbin/iptables -A FORWARD -p tcp -m multiport --dports 80,443,8080 -j
ACCEPT
# DHCP
/sbin/iptables -A INPUT -p udp --sport 68 --dport 67 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --sport 67 --dport 68 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --sport 68 --dport 67 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --sport 67 --dport 68 -j ACCEPT
#NFSv4
/sbin/iptables -A INPUT -p tcp --dport 2049 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 2049 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp --dport 2049 -j ACCEPT
# NTP сервер (порт 123)
/sbin/iptables -A INPUT -p udp --dport 123 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --dport 123 -j ACCEPT
# Syslog (порт 514)
/sbin/iptables -A INPUT -p udp --dport 514 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 514 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --dport 514 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 514 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --dport 514 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp --dport 514 -j ACCEPT
# SSH
/sbin/iptables -A INPUT -p tcp -m multiport --dport 22,2026 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m multiport --dport 22,2026 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m multiport --dport 22,2026 -j ACCEPT
# Zabbix
сервер (порт 10050 - агент, 10051 - сервер)
/sbin/iptables -A INPUT -p tcp -m multiport --dports 10050,10051 -j
ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m multiport --dports 10050,10051 -j
ACCEPT
/sbin/iptables -A FORWARD -p tcp -m multiport --dports 10050,10051 -j
ACCEPT
# CUPS (порт 631)
/sbin/iptables -A INPUT -p tcp --dport 631 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 631 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 631 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --dport 631 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp --dport 631 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --dport 631 -j ACCEPT
# Samba
/sbin/iptables -A INPUT -p tcp -m multiport --dports
88,389,636,3268,3269,139,445,137,138 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m multiport --dports
88,389,636,3268,3269,139,445,137,138 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m multiport --dports
88,389,636,3268,3269,139,445,137,138 -j ACCEPT
# CyberBackUp
/sbin/iptables -A INPUT -p tcp -m multiport --dports 9877,7780 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m multiport --dports 9877,7780 -j
ACCEPT
/sbin/iptables -A FORWARD -p tcp -m multiport --dports 9877,7780 -j
ACCEPT
Настройте принт-сервер cups на сервере HQ-SRV (Задание
5)
Установка cups:
apt install cups cups-pdf printer-driver-cups-pdf -y
/sbin/usermod -a -G lpadmin sshuser
/sbin/usermod -a -G lpadmin user
/sbin/cupsctl --share-printers --remote-any
В веб-интерфейсе создаём новый
виртуальный принтер:



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


Проверка пробных старниц на сервере (d00004-001):

Реализуйте
логирование при помощи rsyslog на устройствах HQ-RTR, BR-RTR, BR-SRV (Задание
6)
Установка rsyslog на
hq-srv, hq-rtr, br-rtr, br-srv:
apt install
rsyslog -y
В файле в разделе модули
/etc/rsyslog.conf на hq-srv:
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
# Правила
для сохранения логов удаленных хостов
$template
RemoteLogs,"/opt/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%.log"
if $fromhost-ip != '127.0.0.1' and $fromhost-ip != '192.168.10.2' then {
if $syslogseverity <= 4
then {
?RemoteLogs
stop
}
}
Установка rsyslog на hq-rtr, br-rtr, br-srv:
apt install rsyslog -y
echo "*.* @192.168.10.2:514" >> /etc/rsyslog.conf
logger -p
user.warning "Тестовое предупреждение от $(hostname)"
systemctl restart
rsyslog
Перезапускаем rsyslog на
всех устройствах:
systemctl restart
rsyslog
Команда для проверки:
tail -f /opt/hq-rtr/*.log
На
сервере HQ-SRV реализуйте мониторинг устройств с помощью открытого программного
обеспечения (Задание 7)
Установка
Zabbix:
wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian12_all.deb
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:/bin:/usr/bin
dpkg -i zabbix-release_6.4-1+debian12_all.deb
apt update
apt install -y zabbix-server-mysql zabbix-frontend-php
zabbix-apache-conf zabbix-sql-scripts zabbix-agent
Настройка MariaDB:
mariadb
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix
-pP@ssw0rd zabbix
sudo sed -i 's/^# DBHost=localhost/DBHost=localhost/'
/etc/zabbix/zabbix_server.conf
sudo sed -i 's/^DBName=zabbix/DBName=zabbix/'
/etc/zabbix/zabbix_server.conf
sudo sed -i 's/^DBUser=zabbix/DBUser=zabbix/' /etc/zabbix/zabbix_server.conf
sudo sed -i 's/^# DBPassword=/DBPassword=P@ssw0rd/'
/etc/zabbix/zabbix_server.conf
Создаём файл /etc/apache2/sites-available/zabbix.conf:
<VirtualHost *:80>
ServerName mon.au-team.irpo
DocumentRoot /usr/share/zabbix
<Directory
/usr/share/zabbix>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog
${APACHE_LOG_DIR}/zabbix_error.log
CustomLog
${APACHE_LOG_DIR}/zabbix_access.log combined
</VirtualHost>
Включаем сайт apache2 и перезапуск Zabbix-server:
a2ensite
zabbix.conf
a2enmod rewrite
systemctl restart apache2
systemctl restart zabbix-server
systemctl enable zabbix-server
Устанавливаем
агенты на hq-srv и
br-srv:
wget
https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian12_all.deb
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:/bin:/usr/bin
dpkg -i zabbix-release_6.4-1+debian12_all.deb
apt update
apt install zabbix-agent
Настройка агента на hq-srv /etc/zabbix/zabbix_agentd.conf:
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.2
ServerActive=192.168.10.2
Hostname=hq-srv.au-team.irpo
Timeout=30
EnableRemoteCommands=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
Настройка агента на br-srv
/etc/zabbix/zabbix_agentd.conf:
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.2
ServerActive=192.168.10.2
Hostname=br-srv.au-team.irpo
Timeout=30
EnableRemoteCommands=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
Перезапуск агента Zabbix:
systemctl enable zabbix-agent
systemctl restart zabbix-agent
На сервере выполняем web-уcтановку Zabbix:



Вводим учётные данные по умолчанию
логин Admin
и
пароль zabbix

Создание
узлов сети серверов hq-srv и
br-srv:


Создаём
панель:


Создание
нового пользователя admin
с
паролем P@ssw0rd123

Реализуйте
механизм инвентаризации машин HQ-SRV и
HQ-CLI через
Ansible
на
BR-SRV (Задание 8)
Создаём
нужные директории:
mkdir /etc/ansible/PC-INFO
mkdir /etc/ansible/playbook
Создаём и редактируем файл /etc/ansible/playbook/get_hostname_address.yml:
- name: получение данных с хоста
hosts: hq-srv,hq-cli
gather_facts: yes
tasks:
- name: создание отчета
на BR-SRV
copy:
dest:
/etc/ansible/PC-INFO/{{ ansible_hostname }}.yml
content: |
computer_name: {{
ansible_hostname }}
ip_address: {{
ansible_default_ipv4.address }}
delegate_to: localhost
run_once: false
Запускаем playbook:
ansible-playbook /etc/ansible/playbook/get_hostname_address.yml
cat /etc/ansible/cat /etc/ansible/PC-INFO/hq-cli.yml
cat /etc/ansible/cat /etc/ansible/PC-INFO/hq-srv.yml
На
HQ-SRV настройте
программное обеспечение fail2ban для
защиты ssh
Уставка
fail2ban (Задание 9)
Установка fail2ban:
apt install fail2ban -y
Создаём и редактируем файл /etc/fail2ban/jail.local:
[DEFAULT]
bantime = 60
findtime = 600
maxretry = 3
backend = auto
banaction = iptables-multiport
action = %(action_)s
[sshd]
enabled = true
port = 2026
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 60
findtime = 600
[sshd-ddos]
enabled
= false
Перезапуск fail2ban:
systemctl
restart fail2ban
Задание
10
Скачивание
и установка Кибер Бэкап (DEB пакет):
wget
https://download.cyberprotect.ru/releases/CyberBackup/17.4.36200/CyberBackup_17_64-bit.x86_64
chmod +x CyberBackup_17_64-bit.x86_64
./CyberBackup_17_64-bit.x86_64



Создаём пользователя на hq-srv:
sudo useradd -o -u 0 -g 0 -s /bin/bash irpoadmin
echo "irpoadmin:P@ssw0rd" | sudo chpasswd
sudo usermod -aG sudo irpoadmin
echo “irpoadmin ALL=(ALL:ALL) ALL” >> /etc/sudoers
sudo groupadd irpo
sudo usermod -aG irpo irpoadmin
echo “irpoadmin” >> /etc/security/acronisagent.conf
sudo systemctl restart acronis_ams
sudo systemctl restart acronis_asm
Вход
в КИБЕР Бэкап:

Создании
организации и добавление учётной записи:



Активируем
пробную лицензию:


Установка
на hq-cli:



На
клиенте создаём директории:
mkdir -p /backup/etc/
mkdir -p /backup/webdb/
sudo chmod 750 /backup
Создаем 2 хранилища:



План
защиты для /etc:

План защиты для webdb (В резервной копии приложений
выбираем mysql):



Проверка
созданных планов резервного копирования:


Задание
10 с помощью restic
Установка Restic и создание пользователя backupuser на
hq-cli:
apt
update
apt
install restic -y
/sbin/useradd
-m -s /bin/bash backupuser
echo
"backupuser:P@ssw0rd" | /sbin/chpasswd
mkdir
-p /backup
chown
backupuser:backupuser /backup
chmod
750 /backup
Установка Restic и
создание пользователя irpoadmin на hq-srv:
apt
update
apt
install restic sshpass -y
/sbin/useradd
-m -s /bin/bash irpoadmin
echo
"irpoadmin:P@ssw0rd" | /sbin/chpasswd
/sbin/usermod
-aG sudo irpoadmin
echo
"irpoadmin ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
sudo
-u irpoadmin ssh-keygen -t rsa -b 4096 -f /home/irpoadmin/.ssh/id_rsa -N
""
sudo
-u irpoadmin sshpass -p "P@ssw0rd" ssh-copy-id -o
StrictHostKeyChecking=no backupuser@hq-cli
sudo
-u irpoadmin RESTIC_PASSWORD="P@ssw0rd" restic init --repo
sftp:backupuser@hq-cli:/backup/etc
sudo
-u irpoadmin RESTIC_PASSWORD="P@ssw0rd" restic init --repo
sftp:backupuser@hq-cli:/backup/webdb
sudo
setcap 'cap_dac_read_search+ep' $(which restic)
Создать на hq-srv файл /home/irpoadmin/backup_etc.sh:
#!/bin/bash
export
RESTIC_PASSWORD="P@ssw0rd"
restic
backup --repo sftp:backupuser@hq-cli:/backup/etc /etc
Создайте на hq-srv файл /home/irpoadmin/backup_webdb.sh:
#!/bin/bash
DUMP_FILE="/tmp/webdb_$(date
+%Y%m%d).sql"
mysqldump
-u webc -pP@ssw0rd webdb > $DUMP_FILE
export
RESTIC_PASSWORD="P@ssw0rd"
restic
backup --repo sftp:backupuser@hq-cli:/backup/webdb $DUMP_FILE
rm -f $DUMP_FILE
Права на выполнение и
запуск:
chmod
+x /home/irpoadmin/backup_etc.sh /home/irpoadmin/backup_webdb.sh
sudo
-u irpoadmin /home/irpoadmin/backup_etc.sh
sudo
-u irpoadmin /home/irpoadmin/backup_webdb.sh
Просмотр снапшотов в репозиториях:
sudo
-u irpoadmin RESTIC_PASSWORD="P@ssw0rd" restic snapshots --repo
sftp:backupuser@hq-cli:/backup/etc
sudo -u irpoadmin
RESTIC_PASSWORD="P@ssw0rd" restic snapshots --repo
sftp:backupuser@hq-cli:/backup/webdb
Восстановление в определённую папку вместо latest можно написать ID:
sudo
-u irpoadmin RESTIC_PASSWORD="P@ssw0rd" restic restore latest
--target /tmp/restore_etc --repo sftp:backupuser@hq-cli:/backup/etc
sudo
-u irpoadmin RESTIC_PASSWORD="P@ssw0rd" restic restore latest
--target /tmp/restore_webdb --repo sftp:backupuser@hq-cli:/backup/webdb
Восстановление в исходное место из папки:
cp
-a /tmp/restore_etc/etc/* /etc/
mysql
-u webc -pP@ssw0rd webdb < /tmp/restore_webdb/tmp/webdb_*.sql