Время на выполнение модуля 5 часов.
Доступ к ISP вы не имеете!!
Название устройства | ОС |
---|---|
RTR-HQ | Eltex vESR |
RTR-BR | Eltex vESR |
SRV-HQ | Альт Сервер 10 |
SRV-BR | Альт Сервер 10 (Допустима замена) Debian |
CLI-HQ | Альт Рабочая станция 10 |
CLI-BR | Альт Рабочая станция 10 (Допустима замена) |
SW-HQ | Альт Сервер 10 |
SW-BR | Альт Сервер 10 (Допустима замена) |
CICD-HQ | Альт Сервер 10 |
Подсеть/VLAN | Префикс | Диапазон | Broadband | Размер |
---|---|---|---|---|
10.0.10.0 / vlan100 | /27 | 10.0.10.1-30 | 10.0.10.31 | 30 |
10.0.10.32 / vlan200 | /27 | 10.0.10.33-62 | 10.0.10.63 | 30 |
10.0.10.64 / vlan300 | /27 | 10.0.10.65-94 | 10.0.10.95 | 30 |
Подсеть/VLAN | Префикс | Диапазон | Broadband | Размер |
---|---|---|---|---|
10.0.20.0 / vlan100 | /27 | 10.0.20.1-30 | 10.0.20.31 | 30 |
10.0.20.32 / vlan200 | /27 | 10.0.20.33-62 | 10.0.20.63 | 30 |
10.0.20.64 / vlan300 | /27 | 10.0.20.65-94 | 10.0.20.95 | 30 |
Имя | NIC | IP | Default Gateway |
---|---|---|---|
RTR-HQ | ISP | 11.11.11.2/30 | 11.11.11.1 |
vlan100 | 10.0.10.1/27 | ||
vlan200 | 10.0.10.33/27 | ||
vlan300 | 10.0.10.65/27 | ||
RTR-BR | ISP | 22.22.22.2/30 | 22.22.22.1 |
vlan100 | 10.0.20.1/27 | ||
vlan200 | 10.0.20.33/27 | ||
vlan300 | 10.0.20.65/27 | ||
SW-HQ | vlan300 | 10.0.10.66/27 | |
SW-BR | vlan300 | 10.0.20.66/27 | |
SRV-HQ | vlan100 | 10.0.10.2/27 | |
SRV-BR | vlan100 | 10.0.20.2/27 | |
CLI-HQ | vlan200 | 10.0.10.32/27 | |
CLI-BR | vlan200 | 10.0.20.32/27 | |
CICD-HQ | vlan200 | 10.0.10.3/27 |
ТЫКНИ
Добавление serial порта в Гипервизоре:
qm set <VM ID> -serial0 socket
Хост /etc/init/ttyS0.conf
:
# ttyS0 - getty
start on stopped rc RUNLEVEL=[12345]
stop on runlevel [!12345]
respawn
exec /sbin/getty -L 115200 ttyS0 vt102
Конфигурация grub
/etc/default/grub
:
GRUB_CMDLINE_LINUX ='console=tty0 console=ttyS0,115200'
Update:
update-grub
Включение serial порта:
systemctl enable [email protected]
Перезагружаемся и заходим через xterm.js
. Теперь доступны скроллинг, вставка, копирование и произвольный размер окна.
a) Настройте имена устройств согласно топологии
a. Используйте полное доменное имя
b. Сконфигурируйте адреса устройств на свое усмотрение. Для офиса HQ выделена сеть 10.0.10.0/24, для офиса BR выделена сеть 10.0.20.0/24. Данные сети необходимо разделить на подсети для каждого vlan.
c. На SRV-HQ и SRV-BR, создайте пользователя sshuser с паролем P@ssw0rd
1. Пользователь sshuser должен иметь возможность запуска утилиты sudo без дополнительной аутентификации.
2. Запретите парольную аутентификацию. Аутентификация пользователя sshuser должна происходить только при помощи ключей.
3. Измените стандартный ssh порт на 2023.
4. На CLI-HQ сконфигурируйте клиент для автоматического подключения к SRV-HQ и SRV-BR под пользователем sshuser. При подключении автоматически должен выбираться корректный порт. Создайте пользователя sshuser на CLI-HQ для обеспечения такого сетевого доступа.
ТЫКНИ
Полное доменное имя:
config
hostname rtr-hq.company.prof
do commit
do confirm
Команды для просмотра интерфейсов:
sh ip int
sh int stat
Настройка ip-адреса (ISP-HQ):
interface te1/0/2
ip address 11.11.11.2/30
description ISP
exit
Параметры DNS:
domain name company.prof
domain name-server 11.11.11.1
Настройка шлюза:
ip route 0.0.0.0/0 11.11.11.1
Проверка доступа в Интернет:
Настройка подынтерфейсов (Router-on-a-stick) vlan100:
interface te1/0/3.100
ip firewall disable
description vlan100
ip address 10.0.10.1/27
exit
vlan200:
interface te1/0/3.200
ip firewall disable
description vlan200
ip address 10.0.10.33/27
exit
vlan300:
interface te1/0/3.300
ip firewall disable
description vlan300
ip address 10.0.10.65/27
exit
Сохранение:
do commit
do confirm
То же самое, кроме IP-адреса:
Полное доменное имя:
hostnamectl set-hostname <VM_NAME>.company.prof;exec bash
Настройка интерфейсов:
sed -i 's/DISABLED=yes/DISABLED=no/g' /etc/net/ifaces/ens18/options
sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/g' /etc/net/ifaces/ens18/options
echo 10.0.20.2/24 > /etc/net/ifaces/ens18/ipv4address
echo default via 10.0.20.1 > /etc/net/ifaces/ens18/ipv4route
systemctl restart network
ping -c 4 8.8.8.8
Создание пользователя sshuser:
adduser sshuser
passwd sshuser
P@ssw0rd
P@ssw0rd
echo "sshuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
usermod -aG wheel sshuser
sudo -i
На серверах, к которым подключаемся:
mkdir /home/sshuser
chown sshuser:sshuser /home/sshuser
cd /home/sshuser
mkdir -p .ssh/
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
chown sshuser:sshuser .ssh/authorized_keys
На машине с которого подключаемся к серверам:
ssh-keygen -t rsa -b 2048 -f srv_ssh_key
mkdir .ssh
mv srv_ssh_key* .ssh/
Конфиг для автоматического подключения .ssh/config
:
Host srv-hq
HostName 10.0.10.2
User sshuser
IdentityFile .ssh/srv_ssh_key
Port 2023
Host srv-br
HostName 10.0.20.2
User sshuser
IdentityFile .ssh/srv_ssh_key
Port 2023
chmod 600 .ssh/config
Копирование ключа на удаленный сервер:
ssh-copy-id -i .ssh/srv_ssh_key.pub [email protected]
ssh-copy-id -i .ssh/srv_ssh_key.pub [email protected]
На сервере /etc/ssh/sshd_config
:
AllowUsers sshuser
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
AuthorizedKeysFile .ssh/authorized_keys
Port 2023
systemctl restart sshd
Подключение:
ssh srv-hq
a) На SRV-HQ настройте зеркалируемый LVM том
a. Используйте два неразмеченных жестких диска.
b. Настройте автоматическое монтирование логического тома.
c. Точка монтирования /opt/data.
b) На SRV-BR сконфигурируйте stripped LVM том.
a. Используйте два неразмеченных жестких диска.
b. Настройте автоматическое монтирование тома.
c. Обеспечьте шифрование тома средствами dm-crypt. Диск должен монтироваться при загрузке ОС без запроса пароля.
d. Точка монтирования /opt/data.
ТЫКНИ
Создаем разделы:
gdisk /dev/sdb
o - y
n - 1 - enter - enter - 8e00
p
w - y
То же самое с sdc
Инициализация:
pvcreate /dev/sd{b,c}1
В группу:
vgcreate vg01 /dev/sd{b,c}1
Логический том-зеркало RAID1:
lvcreate -l 100%FREE -n lvmirror -m1 vg01
Создаём ФС:
mkfs.ext4 /dev/vg01/lvmirror
Директория:
mkdir /opt/data
Автозагрузка /etc/fstab
:
echo "UUID=$(blkid -s UUID -o value /dev/vg01/lvmirror) /opt/data ext4 defaults 1 2" | tee -a /etc/fstab
Монтаж:
mount -av
Проверка:
df -h
Создаем разделы:
gdisk /dev/sdb
o - y
n - 1 - enter - enter - 8e00
p
w - y
То же самое с sdc
Инициализация:
pvcreate /dev/sd{b,c}1
В группу:
vgcreate vg01 /dev/sd{b,c}1
Striped том:
lvcreate -i2 -l 100%FREE -n lvstriped vg01
-i2 - количество полос
-l 100%FREE - занять всё место
-n lvstriped - имя 'lvstriped'
vg01 - имя группы
ФС:
mkfs.ext4 /dev/vg01/lvstriped
Создание ключа:
dd if=/dev/urandom of=/root/ext2.key bs=1 count=4096
Шифрование тома с помощью ключа:
cryptsetup luksFormat /dev/vg01/lvstriped /root/ext2.key
Открытие тома ключом:
cryptsetup luksOpen -d /root/ext2.key /dev/vg01/lvstriped lvstriped
ФС на расшифрованном томе:
mkfs.ext4 /dev/mapper/lvstriped
Директория монтирования:
mkdir /opt/data
Автозагрузка /etc/fstab
echo "UUID=$(blkid -s UUID -o value /dev/mapper/lvstriped) /opt/data ext4 defaults 0 0" | tee -a /etc/fstab
Монтаж:
mount -av
Автозагрузка зашифрованного тома с помощью ключа /etc/crypttab
:
echo "lvstreped UUID=$(blkid -s UUID -o value /dev/vg01/lvstriped) /root/ext2.key luks" | tee -a /etc/crypttab
reboot, df -h, lsblk
a) В качестве коммутаторов используются SW-HQ и SW-BR.
b) В обоих офисах серверы должны находиться во vlan100, клиенты – во vlan200, management подсеть – во vlan300.
c) Создайте management интерфейсы на коммутаторах.
d) Для каждого vlan рассчитайте подсети, выданные для офисов. Количество хостов в каждой подсети не должно превышать 30-ти.
ТЫКНИ
Внимание! в интерфейсах ens... не должно быть прочих файлов, кроме options
, иначе порты не привяжутся
Временное назначение ip-адреса (смотрящего в сторону rtr-hq):
ip link add link ens18 name ens18.300 type vlan id 300
ip link set dev ens18.300 up
ip addr add 10.0.10.66/27 dev ens18.300
ip route add 0.0.0.0/0 via 10.0.10.65
echo nameserver 8.8.8.8 > /etc/resolv.conf
Обновление пакетов и установка openvswitch
:
apt-get update && apt-get install -y openvswitch
Автозагрузка:
systemctl enable --now openvswitch
ens18 - rtr-hq
ens19 - cicd-hq - vlan200
ens20 - srv-hq - vlan100
ens21 - cli-hq - vlan200
Создаем каталоги для ens19,ens20,ens21:
mkdir /etc/net/ifaces/ens{19,20,21}
Для моста:
mkdir /etc/net/ifaces/ovs0
Management интерфейс:
mkdir /etc/net/ifaces/mgmt
Не удалять настройки openvswitch:
sed -i "s/OVS_REMOVE=yes/OVS_REMOVE=no/g" /etc/net/ifaces/default/options
Мост /etc/net/ifaces/ovs0/options
:
TYPE - тип интерфейса, bridge;
HOST - добавляемые интерфейсы в bridge.
mgmt /etc/net/ifaces/mgmt/options
:
TYPE - тип интерфейса (internal);
BOOTPROTO - статически;
CONFIG_IPV4 - использовать ipv4;
BRIDGE - определяет к какому мосту необходимо добавить данный интерфейс;
VID - определяет принадлежность интерфейса к VLAN.
Поднимаем интерфейсы:
cp /etc/net/ifaces/ens18/options /etc/net/ifaces/ens19/options
cp /etc/net/ifaces/ens18/options /etc/net/ifaces/ens20/options
cp /etc/net/ifaces/ens18/options /etc/net/ifaces/ens21/options
Назначаем Ip, default gateway на mgmt:
echo 10.0.10.66/27 > /etc/net/ifaces/mgmt/ipv4address
echo default via 10.0.10.65 > /etc/net/ifaces/mgmt/ipv4route
Перезапуск network:
systemctl restart network
Проверка:
ip -c --br a
ovs-vsctl show
ens18 - rtr-hq делаем trunk и пропускаем VLANs:
ovs-vsctl set port ens18 trunk=100,200,300
ens19 - tag=200
ovs-vsctl set port ens19 tag=200
ens20 - tag=100:
ovs-vsctl set port ens20 tag=100
ens21 - tag=200
ovs-vsctl set port ens21 tag=200
Включаем инкапсулирование пакетов по 802.1q:
modprobe 8021q
Проверка включения
a) В качестве серверов баз данных используйте сервера SRV-HQ и SRV-BR
b) Разверните сервер баз данных на базе Postgresql
a. Создайте базы данных prod, test, dev
i. Заполните базы данных тестовыми данными при помощи утилиты pgbench. Коэффицент масштабирования сохраните по умолчанию.
b. Разрешите внешние подключения для всех пользователей.
c. Сконфигурируйте репликацию с SRV-HQ на SRV-BR
d. Обеспечьте отказоустойчивость СУБД при помощи HAProxy.
i. HAProxy установите на SW-HQ.
ii. Режим балансировки – Hot-Standby: Активным необходимо сделать только SRV-HQ. В случае отказа SRV-HQ активным сервером должен становится SRV-BR.
iii. Выбор standby режима (RO/RW) остается на усмотрение участника.
iv. Обеспечьте единую точку подключения к СУБД по имени dbms.company.prof
ТЫКНИ
Установка postgresql
:
apt-get install -y postgresql16 postgresql16-server postgresql16-contrib
Развертываем БД:
/etc/init.d/postgresql initdb
Автозагрузка:
systemctl enable --now postgresql
Включаем прослушивание всех адресов:
nano /var/lib/pgsql/data/postgresql.conf
Перезагружаем:
systemctl restart postgresql
Проверяем:
ss -tlpn | grep postgres
Заходим в БД под рутом:
psql -U postgres
Создаем базы данных "prod","test","dev":
CREATE DATABASE prod;
CREATE DATABASE test;
CREATE DATABASE dev;
Создаем пользователей "produser","testuser","devuser":
CREATE USER produser WITH PASSWORD 'P@ssw0rd';
CREATE USER testuser WITH PASSWORD 'P@ssw0rd';
CREATE USER devuser WITH PASSWORD 'P@ssw0rd';
Назначаем на БД владельца:
GRANT ALL PRIVILEGES ON DATABASE prod to produser;
GRANT ALL PRIVILEGES ON DATABASE test to testuser;
GRANT ALL PRIVILEGES ON DATABASE dev to devuser;
Заполняем БД с помощью pgbench
:
pgqbench -U postgres -i prod
pgqbench -U postgres -i test
pgqbench -U postgres -i dev
Проверяем
Настройка аутентификации для удаленного доступа:
nano /var/lib/pgsql/data/pg_hba.conf
Перезапускаем:
systemctl restart postgresql
Установка:
apt-get install -y postgresql16 postgresql16-server postgresql16-contrib
Конфиг
nano /var/lib/pgsql/data/postgresql.conf
wal_level = replica
max_wal_senders = 2
max_replication_slots = 2
hot_standby = on
hot_standby_feedback = on
wal_level указывает, сколько информации записывается в WAL (журнал операций, который используется для репликации); max_wal_senders — количество планируемых слейвов; max_replication_slots — максимальное число слотов репликации; hot_standby — определяет, можно ли подключаться к postgresql для выполнения запросов в процессе восстановления; hot_standby_feedback — определяет, будет ли сервер slave сообщать мастеру о запросах, которые он выполняет.
systemctl restart postgresql
Останавливаем:
systemctl stop postgresql
Удаляем каталог:
rm -rf /var/lib/pgsql/data/*
Запускаем репликацию (может длиться несколько десятков минут):
pg_basebackup -h 10.0.10.2 -U postgres -D /var/lib/pgsql/data --wal-method=stream --write-recovery-conf
Назначаем владельца:
chown -R postgres:postgres /var/lib/pgsql/data/
Запускаем:
systemctl start postgresql
Создаем тест:
psql -U postgres
CREATE DATABASE testik;
Установка haproxy:
apt-get install haproxy
Автозагрузка:
systemctl enable --now haproxy
Конфиг /etc/haproxy/haproxy.cfg
:
listen stats
bind 0.0.0.0:8989
mode http
stats enable
stats uri /haproxy_stats
stats realm HAProxy\ Statistics
stats auth admin:toor
stats admin if TRUE
frontend postgre
bind 0.0.0.0:5432
default_backend my-web
backend postgre
balance first
server srv-hq 10.0.10.2:5432 check
server srv-br 10.0.20.2:5432 check
a) Настройте динамическую трансляцию адресов для обоих офисов. Доступ к интернету необходимо разрешить со всех устройств.
ТЫКНИ
rtr-hq:
config
security zone public
exit
int te1/0/2
security-zone public
exit
object-group network COMPANY
ip address-range 10.0.10.1-10.0.10.254
exit
object-group network WAN
ip address-range 11.11.11.11
exit
nat source
pool WAN
ip address-range 11.11.11.11
exit
ruleset SNAT
to zone public
rule 1
match source-address COMPANY
action source-nat pool WAN
enable
exit
exit
commit
confirm
rtr-br:
config
security zone public
exit
int te1/0/2
security-zone public
exit
object-group network COMPANY
ip address-range 10.0.20.1-10.0.20.254
exit
object-group network WAN
ip address-range 22.22.22.22
exit
nat source
pool WAN
ip address-range 22.22.22.22
exit
ruleset SNAT
to zone public
rule 1
match source-address COMPANY
action source-nat pool WAN
enable
exit
exit
commit
confirm
a) Настройте протокол динамической конфигурации хостов для устройств в подсетях CLI - RTR-HQ
i. Адрес сети – согласно топологии
ii. Адрес шлюза по умолчанию – адрес маршрутизатора RTR-HQ
iii. DNS-суффикс – company.prof
b) Настройте протокол динамической конфигурации хостов для устройств в подсетях CLI RTR-BR
i. Адрес сети – согласно топологии
ii. Адрес шлюза по умолчанию – адрес маршрутизатора RTR-BR
iii. DNS-суффикс – company.prof
ТЫКНИ
DNS-сервер - srv-hq
configure terminal
ip dhcp-server pool COMPANY-HQ
network 10.0.10.32/27
default-lease-time 3:00:00
address-range 10.0.10.33-10.0.10.62
excluded-address-range 10.0.10.33
default-router 10.0.10.33
dns-server 10.0.10.2
domain-name company.prof
exit
Включение DHCP-сервера:
ip dhcp-server
i. Реализуйте основной DNS сервер компании на SRV-HQ
a. Для всех устройств обоих офисов необходимо создать записи A и PTR.
b. Для всех сервисов предприятия необходимо создать записи CNAME.
c. Создайте запись test таким образом, чтобы при разрешении имени из левого офиса имя разрешалось в адрес SRV-HQ, а из правого – в адрес SRV-BR.
d. Сконфигурируйте SRV-BR, как резервный DNS сервер. Загрузка записей с SRV-HQ должна быть разрешена только для SRV-BR.
e. Клиенты предприятия должны быть настроены на использование внутренних DNS серверов
ТЫКНИ
Установка bind и bind-utils:
apt-get update && apt-get install -y bind bind-utils
Конфиг:
nano /etc/bind/options.conf
listen-on { any; };
allow-query { any; };
allow-transfer { 10.0.20.2; };
Включаем resolv:
nano /etc/net/ifaces/ens18/resolv.conf
systemctl restart network
Автозагрузка bind:
systemctl enable --now bind
Создаем прямую и обратные зоны:
nano /etc/bind/local.conf
Копируем дефолты:
cp /etc/bind/zone/{localhost,company.db}
cp /etc/bind/zone/127.in-addr.arpa /etc/bind/zone/10.0.10.in-addr.arpa.db
cp /etc/bind/zone/127.in-addr.arpa /etc/bind/zone/20.0.10.in-addr.arpa.db
Назначаем права:
chown root:named /etc/bind/zone/company.db
chown root:named /etc/bind/zone/10.0.10.in-addr.arpa.db
chown root:named /etc/bind/zone/20.0.10.in-addr.arpa.db
Настраиваем зону прямого просмотра /etc/bind/zone/company.prof
:
Настраиваем зону обратного просмотра /etc/bind/zone/10.0.10.in-addr.arpa.db
:
Настраиваем зону обратного просмотра /etc/bind/zone/20.0.10.in-addr.arpa.db
:
Проверка зон:
named-checkconf -z
Конфиг
vim /etc/bind/options.conf
Добавляем зоны
Резолв /etc/net/ifaces/ens18/resolv.conf
:
search company.prof
nameserver 10.0.10.2
nameserver 10.0.20.2
Перезапуск адаптера:
systemctl restart network
Автозагрузка:
systemctl enable --now bind
SLAVE:
control bind-slave enabled
Разрешение имени хоста test
Копируем дефолт для зоны:
cp /etc/bind/zone/{localdomain,test.company.db}
Задаём права, владельца:
chown root:named /etc/bind/zone/test.company.db
Настраиваем зону:
vim /etc/bind/zone/test.company.db
Перезапускаем:
systemctl restart bind
Добавляем зону /etc/bind/local.conf
:
Задаём права, владельца:
chown root:named /etc/bind/zone/test.company.db
Редактируем зону /etc/bind/zone/test.company.db
:
Перезапускаем:
systemctl restart bind
a) Настройте узел управления на базе SRV-BR
a. Установите Ansible.
b) Сконфигурируйте инвентарь по пути /etc/ansible/inventory. Инвентарь должен содержать три группы устройств:
a. Networking
b. Servers
c. Clients
c) Напишите плейбук в /etc/ansible/gathering.yml для сбора информации об IP адресах и именах всех устройств (и клиенты, и серверы, и роутеры). Отчет должен быть сохранен в /etc/ansible/output.yaml, в формате ПОЛНОЕ_ДОМЕННОЕ_ИМЯ – АДРЕС
ТЫКНИ
Установка:
apt-get install -y ansible sshpass
nano /etc/ansible/inventory.yml
Networking:
hosts:
rtr-hq:
ansible_host: 10.0.10.1
ansible_user: admin
ansible_password: P@ssw0rd
ansible_port: 22
rtr-br:
ansible_host: 10.0.20.1
ansible_user: admin
ansible_password: P@ssw0rd
ansible_port: 22
Servers:
hosts:
srv-hq:
ansible_host: 10.0.10.2
ansible_ssh_private_key_file: ~/.ssh/srv_ssh_key
ansible_user: sshuser
ansible_port: 2023
srv-br:
ansible_host: 10.0.20.2
ansible_ssh_private_key_file: ~/.ssh/srv_ssh_key
ansible_user: sshuser
ansible_port: 22
Clients:
hosts:
cli-hq:
ansible_host: 10.0.10.34
ansible_user: root
ansible_password: P@ssw0rd
ansible_port: 22
cli-br:
ansible_host: 10.0.20.34
ansible_user: root
ansible_password: P@ssw0rd
ansible_port: 22
nano /etc/ansible/ansible.cfg
nano /etc/ansible/gathering.yml
---
- name: show ip and hostname from routers
hosts: Networking
gather_facts: false
tasks:
- name: show ip
esr_command:
commands: show ip interfaces
- name: show ip and fqdn
hosts: Servers, Clients
tasks:
- name: print ip and hostname
debug:
msg: "IP address: {{ ansible_default_ipv4.address }}, Hostname {{ ansible_hostname }}"
- name: create file
copy:
content: ""
dest: /etc/ansible/output.yml
mode: '0644'
- name: save output
copy:
content: "IP address: {{ ansible_default_ipv4.address }}, Hostname {{ ansible_hostname }}"
dest: /etc/ansible/output.yml
cd /etc/ansible
a) Все параметры на усмотрение участника.
b) Используйте парольную аутентификацию.
c) Обеспечьте динамическую маршрутизацию: ресурсы одного офиса должны быть доступны из другого офиса.
d) Для обеспечения динамической маршрутизации используйте протокол OSPF.
https://sysahelper.gitbook.io/sysahelper/main/telecom/main/vesr_greoveripsec
ТЫКНИ
tunnel gre 1
ttl 16
ip firewall disable
local address 11.11.11.11
remote address 22.22.22.22
ip address 172.16.1.1/30
enable
exit
security zone-pair public self
rule 1
description "ICMP"
action permit
match protocol icmp
enable
exit
rule 2
description "GRE"
action permit
match protocol gre
enable
exit
exit
security ike proposal ike_prop1
authentication algorithm md5
encryption algorithm aes128
dh-group 2
exit
security ike policy ike_pol1
pre-shared-key ascii-text P@ssw0rd
proposal ike_prop1
exit
security ike gateway ike_gw1
ike-policy ike_pol1
local address 11.11.11.11
local network 11.11.11.11/32 protocol gre
remote address 22.22.22.22
remote network 22.22.22.22/32 protocol gre
mode policy-based
exit
security ike gateway ike_gw1
ike-policy ike_pol1
local address 22.22.22.22
local network 22.22.22.22/32 protocol gre
remote address 11.11.11.11
remote network 11.11.11.11/32 protocol gre
mode policy-based
exit
security ipsec proposal ipsec_prop1
authentication algorithm md5
encryption algorithm aes128
pfs dh-group 2
exit
security ipsec policy ipsec_pol1
proposal ipsec_prop1
exit
security ipsec vpn ipsec1
ike establish-tunnel route
ike gateway ike_gw1
ike ipsec-policy ipsec_pol1
enable
exit
security zone-pair public self
rule 3
description "ESP"
action permit
match protocol esp
enable
exit
rule 4
description "AH"
action permit
match protocol ah
enable
exit
exit
router ospf 1
area 0.0.0.0
enable
exit
enable
exit
tunnel gre 1
ip ospf instance 1
ip ospf
exit
interface gigabitethernet 1/0/2.100
ip ospf instance 1
ip ospf
exit
interface gigabitethernet 1/0/2.200
ip ospf instance 1
ip ospf
exit
interface gigabitethernet 1/0/2.300
ip ospf instance 1
ip ospf
exit
security zone-pair public self
rule 5
description "OSPF"
action permit
match protocol ospf
enable
exit
exit
Проверка
sh ip ospf neighbors
sh ip route
10. -> На сервере SRV-HQ сконфигурируйте основной доменный контроллер на базе FreeIPA
a) Создайте 30 пользователей user1-user30.
b) Пользователи user1-user10 должны входить в состав группы group1.
c) Пользователи user11-user20 должны входить в состав группы group2.
d) Пользователи user21-user30 должны входить в состав группы group3.
e) Разрешите аутентификацию с использованием доменных учетных данных на ВМ CLI-HQ.
f) Установите сертификат центра сертификации FreeIPA в качестве доверенного на обоих клиентских ПК.
ТЫКНИ
a) Пользователям group1 разрешен доступ на любые сервисы предприятия
b) Пользователям group2 разрешен доступ только к системе мониторинга
c) Пользователям group3 не разрешен доступ никуда, также, как и пользователям, не прошедшим аутентификацию
d) Любым пользователям компьютера CLI-HQ разрешен доступ в сеть Интернет и на все сервисы предприятия, кроме доменов vk.com, mail.yandex.ru и worldskills.org
e) Настройте клиент правого офиса на использование прокси сервера предприятия
f) Авторизация для proxy спрашивается браузером, SSO не ожидается
Запись | Тип записи |
---|---|
rtr-hq.company.prof | A |
rtr-br.company.prof | A |
sw-hq.company.prof | A |
sw-br.company.prof | A |
srv-hq.company.prof | A |
srv-br.company.prof | A |
cli-hq.company.prof | A |
cli-br.company.prof | A |
dbms.company.prof | CNAME |
ТЫКНИ
Установка:
apt-get install alterator-squid
Доступ осуществляется по https://ip-address:8080/
Время на выполнение модуля 5 часов
Данный модуль содержит задачи, основанные на практиках DevOps при разработке и эксплуатации информационных систем в сфере разработки современного программного обеспечения.
Главной задачей данного модуля является создание элементов автоматизированной инфраструктуры с помощью инструментов для работы с облачными средами и управления контейнерами. В рамках задания вам будет предоставлен доступ к инфраструктуре облачного провайдера. В качестве основной задачи необходимо подготовить инструкции для полностью автоматического развёртывания приложения вместе со всеми необходимыми службами в облаке.
Для выполнения задания на ваших локальных компьютерах будет обеспечен доступ к сети Интернет.
ИНСТРУКЦИИ ДЛЯ УЧАСТНИКА
Доступ к облачному провайдеру и авторизацию на сервере выполняет экспертная группа. Главный эксперт сам определяет провайдера облачной инфраструктуры.
Все пункты задания необходимо реализовать на стороне провайдера облачной инфраструктуры. Эксперты будут ожидать наличие работоспособных элементов инфраструктуры согласно заданию.
Пункты задания, касающиеся настройки облака, потребуют от Вас написания автоматизированных сценариев развёртывания инфраструктуры согласно заданию. Конкретные инструменты выбираются на Ваше усмотрение. По завершении выполнения задания, ожидается, что будут полностью удалены автоматически созданные машины, сетевые и другие настройки в облачной инфраструктуре. Эксперты при проверке будут выполнять скрипт и проверять, что за отведённое (20 минут) время вся инфраструктура создаётся и работает должным образом.
Для проверки работоспособности скриптов автоматического развертывания инфраструктуры, эксперты могут проверять их работу в отдельной учётной записи того же облачного провайдера. Вам необходимо предусмотреть возможность указания необходимых параметров для работы скриптов с другой учетной записью облачного провайдера.
Проверка будет выполняться с инстанса ControlVM, вы можете установить все необходимые для вашей работы инструменты на указанную машину.
1. Вся проверка выполнения задания будет проводиться с машины ControlVM.
2. НЕ удаляйте ControlVM по завершении задания.
3. Создайте инстанс с именем ControlVM и подключите его к сети интернет.
1. Тип виртуальной машины: 2 vCPU, Доля vCPU 50%, 2 RAM.
2. Размер диска: 10 ГБ.
3. Тип диска: SSD.
4. Отключите мониторинг и резервное копирование.
5. Операционная система: ALT Linux 10.
6. Разрешите внешние подключения по протоколу SSH.
7. Сохраните ключевую пару для доступа на рабочем столе вашего локального ПК с расширением .pem
4. Настройте внешнее подключение к ControlVM.
1. Установите на локальный ПК клиент SSH PuTTY.
2. Создайте в PuTTY профиль с именем YACloud.
3. Убедитесь в возможности установления соединения с ControlVM с локального ПК с помощью клиента PuTTY без ввода дополнительных параметров.
4. Используйте для подключения имя пользователя altlunxu и загруженную ключевую пару.
Кликни
Буду использовать Mobaxterm, который базирован на putty
Tools - MobaKeyGen
Generate - копируем публичный ключ - Save private key - меняем расширение ключа на pem
sudo -i
apt-get update && apt-get install -y wget unzip
Зеркало Яндекса
wget https://hashicorp-releases.yandexcloud.net/terraform/1.7.2/terraform_1.7.2_linux_amd64.zip
Зеркало VK
wget https://hashicorp-releases.mcs.mail.ru/terraform/1.7.3/terraform_1.7.3_linux_amd64.zip
unzip terraform_1.7.2_linux_amd64.zip -d /usr/local/bin/
- Подготовьте сценарий автоматизации развёртывания облачной инфраструктуры.
1. Виртуальные машины и сети должны быть созданы согласно Топологии.
2. Имена виртуальных машин и сетей должны соответствовать Топологии.
3. Обеспечьте подключение виртуальных машин к соответствующим сетям.
4. В случае предоставления внешнего доступа к созданным виртуальным машинам, он должен быть разрешён только по протоколу ssh.
5. Разрешите трафик по протоколу ICMP.
6. Вы можете назначить глобальные IP адреса для управления созданными виртуальными машинами.
7. Используйте аутентификацию на основе открытых ключей, аутентификация с использованием пароля должна быть отключена для SSH.
8. Создайте балансировщик нагрузки.
1. Сохраните внешний адрес балансировщика нагрузки в файле /home/altlinux/lb.ip.
2. Ограничьте внешний доступ протоколами http и https.
3. Балансировка нагрузки должна использовать алгоритм round robin.
4. При обращении на внешний адрес балансировщика нагрузки должен выводиться ответ от приложения на внутреннем сервере. - Виртуальные машины должны соответствовать следующим характеристикам.
1. Операционная система: ALT Linux 10.
2. Количество vCPU: 1.
3. Объём оперативной памяти: 1024 МБ.
4. Объём диска: 15 ГБ.
5. Тип диска: HDD.
6. Разместите виртуальные машины в регионе Москва.
7. Разместите Web1 в зоне доступности ru-central1-a.
8. Разместите Web2 в зоне доступности ru-central1-b. - На машине ControlVM создайте скрипт cloudinit.sh.
1. В качестве рабочей директории используйте путь /home/altlinux/bin.
2. Используйте файл /home/altlinux/bin/cloud.conf для указания настроек для подключения к облачному провайдеру.
1. При выполнении проверки, эксперты могут изменить настройки только в файле cloud.conf. Другие файлы редактироваться не будут.
2. Вы можете оставить любые понятные комментарии в файле cloud.conf.
3. Скрипт должен выполняться из любой директории без явного указания пути к исполняемому файлу.
4. Выполнение задания ожидается с использованием инструментов Terraform и/или OpenStack CLI. Однако, вы вправе выбрать другие инструменты, не противоречащие условиям задания и правилам соревнования.
- На машине ControlVM.
1. Установите Docker и Docker Compose.
2. Создайте локальный Docker Registry.
3. В домашней директории хоста создайте файл name.txt и запишите в него строку experts.
4. Напишите Dockerfile для приложения HelloFIRPO.
1. В качестве базового образа используйте alpine
2. Сделайте рабочей директорию /hello и скопируйте в неё name.txt
3. Контейнер при запуске должен выполнять команду echo, которая выводит сообщение "Hello, FIRPO! Greetings from " и затем содержимое файла name.txt, после чего завершать свою работу.
5. Соберите образ приложения App и загрузите его в ваш Registry.
1. Используйте номер версии 1.0 для вашего приложения
2. Образ должен быть доступен для скачивания и дальнейшего запуска на локальной машине.
6. Создайте в домашней директории пользователя ubuntu файл wiki.yml для приложения MediaWiki.
1. Средствами docker compose должен создаваться стек контейнеров с приложением MediaWiki и базой данных.
1. Используйте два сервиса
2. Основной контейнер MediaWiki должен называться wiki и использовать образ mediawiki
3. Файл LocalSettings.php с корректными настройками должен находиться в домашней папке пользователя ubuntu и автоматически монтироваться в образ.
4. Контейнер с базой данных должен называться db и использовать образ mysql
5. Он должен создавать базу с названием mediawiki, доступную по стандартному порту, для пользователя wiki с паролем P@ssw0rd
6. База должна храниться в отдельном volume с названием dbvolume
7. База данных должна находиться в одной сети с приложением App2, но не должна быть доступна снаружи.
8. MediaWiki должна быть доступна извне через порт 80.
7. Настройте мониторинг с помощью NodeExporter, Prometheus и Grafana.
1. Создайте в домашней директории пользователя ubuntu файл monitoring.yml для Docker Compose
1. Используйте контейнеры NodeExporter, Prometheus и Grafana для сбора, обработки и отображения метрик.
2. Настройте Dashboard в Grafana, в котором будет отображаться загрузка CPU, объём свободной оперативной памяти и места на диске.
3. Интерфейс Grafana должен быть доступен по внешнему адресу на порту 3000.
- На машине ControlVM создайте скрипт /home/ubuntu/bin/DeployApp.sh.
1. Скрипт должен выполняться из любой директории без явного указания пути к исполняемому файлу. - Подготовьте web-приложение App1
1. Скачайте файлы app1.py и Dockerfile по адресу: https://github.com/auteam-usr/moscow39
2. Соберите образ приложения и загрузите его в любой репозиторий Docker на ваше усмотрение. - Команда DeployApp.sh должна запускать средства автоматизации для настройки операционных систем.
1. Разверните web-приложение App1 из репозитория Docker на виртуальных машинах Web1 и Web2.
2. Обеспечьте балансировку нагрузки между Web1 и Web2.
3. Обеспечьте внешний доступ к web-приложению по протоколу https.
4. При обращении по протоколу http должно выполняться автоматическое перенаправления на протокол https.
5. Обеспечивать доверие сертификату не требуется.
• Высвободите выделенные ресурсы облачного провайдера для автоматически созданных объектов.
• Удалите все автоматически созданные виртуальные машины, сети, объекты, ресурсы.
• НЕ удаляйте ControlVM и необходимые для её работы ресурсы.
Обратите внимание, что при наличии в облачной инфраструктуре существующих объектов, за исключением объектов, необходимых для работы ControlVM, объектов по умолчанию проверка осуществляться не будет.