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

Используемые подсети

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

  1. Посмотреть блочные устройства:

lsblk

В списке должен быть CD-привод, например:

sr0     11:0    1  929M  0 rom 

  1. Создать точку монтирования и примонтировать ISO:

mkdir -p /mnt/additional

mount -t iso9660 /dev/sr0 /mnt/additional

  1. Проверить содержимое:

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

  1. Создать каталог проекта:

mkdir -p /opt/testapp

cd /opt/testapp

  1. Создать файл docker-compose.yml: (поменять порт и название файла)

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

  1. Установить curl, если его нет:

apt update

apt install -y curl

  1. Проверить доступность сайта локально:

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 можно показать проверяющему:

  1. Образы импортированы:
  2. docker images | grep -E 'site|maria'
  3. Стек контейнеров:
  4. docker ps

Видно два контейнера:

  1. Конфигурация docker-compose.yml:
  2. cat /opt/testapp/docker-compose.yml

В файле присутствуют:

  1. Работа приложения:

Открывается веб-страница (список «Студенты»).

Если всё из чек-листа выполняется — задание 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

  1. Подключение к БД – находим блок с переменными и делаем так:

$servername = "localhost";

$username   = "webc";

$password   = "P@ssw0rd";

$dbname     = "webdb";

  1. Лёгкие изменения внешнего вида (чтобы не было 1 в 1):

Сохраняем: 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:2014ssh-порт):
--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