Добавить в корзинуПозвонить
Найти в Дзене

Развёртывание и настройка центра сертификации и т.д.

В современной корпоративной среде инфраструктура редко ограничивается одним сервером. В типовом сценарии мы имеем маршрутизаторы, DNS-серверы, контроллеры домена, веб-серверы, системы мониторинга, резервное копирование и разграничение прав доступа. Задача администратора — не просто запустить эти службы, а связать их в единую, отказоустойчивую и защищённую экосистему. Особенно остро вопрос встаёт при необходимости внедрения доменной структуры, централизованной аутентификации, разграничения прав пользователей, организации сетевых хранилищ и автоматизации управления конфигурациями. В этой статье мы на практическом примере разберём развёртывание полного цикла корпоративной ИТ-инфраструктуры: от настройки Samba DC как контроллера домена до создания RAID-массива, NFS-шары, системы мониторинга, контейнеризации и защищённых туннелей. Все действия выполняются на операционных системах семейства RedOS (EL-совместимых дистрибутивах). Глава 2 Теперь, когда общая картина корпоративной инфраструктур

В современной корпоративной среде инфраструктура редко ограничивается одним сервером. В типовом сценарии мы имеем маршрутизаторы, DNS-серверы, контроллеры домена, веб-серверы, системы мониторинга, резервное копирование и разграничение прав доступа. Задача администратора — не просто запустить эти службы, а связать их в единую, отказоустойчивую и защищённую экосистему. Особенно остро вопрос встаёт при необходимости внедрения доменной структуры, централизованной аутентификации, разграничения прав пользователей, организации сетевых хранилищ и автоматизации управления конфигурациями. В этой статье мы на практическом примере разберём развёртывание полного цикла корпоративной ИТ-инфраструктуры: от настройки Samba DC как контроллера домена до создания RAID-массива, NFS-шары, системы мониторинга, контейнеризации и защищённых туннелей. Все действия выполняются на операционных системах семейства RedOS (EL-совместимых дистрибутивах).

Глава 2
Теперь, когда общая картина корпоративной инфраструктуры ясна, переходим к непосредственной настройке. Весь дальнейший материал представляет собой пошаговое руководство, разбитое на логические блоки. Мы будем двигаться последовательно: сначала изменим стандартные порты SSH для повышения безопасности, затем настроим DNS-записи для наших будущих веб-сервисов. Далее нас ждёт ключевой этап — поднятие контроллера домена на базе Samba, ввод клиентской машины в домен, настройка Kerberos и SSSD для централизованной аутентификации. После этого мы создадим RAID0 из двух дисков, организуем NFS-экспорт и примонтируем общую папку на клиенте. Отдельное внимание уделим синхронизации времени через собственный NTP-сервер, настройке Ansible для управления всеми хостами, развёртыванию контейнеров с веб-приложением и классическому LAMP-стеку. В конце настроим проброс портов на маршрутизаторах, установим reverse-прокси на ISP и финально проверим доступность всех сервисов.

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

  • Все виртуальные машины имеют сетевую доступность друг к другу согласно схеме;
  • Образ Additional.iso подключён к тем машинам, где это указано;
  • Пользователи sshuser, username, net_admin созданы и имеют пароль P@ssw0rd.

Начинаем с базовых настроек SSH и DNS.

на серверах HQ-SRV и BR- SRV

nano /etc/ssh/sshd_config

меняем Port 2026

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

semanage port -a -t ssh_port_t -p tcp 2026

Перезапускаем ssh

systemctl restart sshd

НА HQ-SRV

cd /opt/dns

nano au-team.irpo

ВОТ ЭТИ СТРОЧКИ ПОМЕНЯЙ НА

wiki CNAME hq-rtr.au-team.irpo.

moodle CNAME hq-rtr.au-team.irpo.

НА ЭТИ СТРОЧКИ

docker A 172.16.2.1

web A 172.16.1.1

ПЕРЕЗАПУСКАЕМ NAMED НА HQ-SRV

systemctl restart named

1) на BR-SRV

dnf install samba* krb5* docker-ce docker-compose -y

dnf install -y samba* krb5* -y

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

mv /etc/krb5.conf /etc/krb5.conf.bak

nano /etc/krb5.conf.d/crypto-policies

Изменяем файл следующим образом: ставим курсор на существующую строчку permitted_enctypes,

нажимаем CTRL+K и три раза CTRL+U

ТАК БУДЕТ ВЫГЛЯДЕТ ПРИМЕРНО

default_tgs_enctypes

default_tkt_enctypes

permitted_enctypes

samba-tool domain provision --use-rfc2307 --interactive

Жмём Enter 3 раза ENTER. Далее на моменте DNS backend пишем “NONE”. Затем указываем

пароль администратора: P@ssw0rd

BACKEND NONE

P@ssw0rd

cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

nano /etc/krb5.conf

В realms добавляем kdc:

после default_domain

kdc = br-srv.au-team.irpo

ПОСЛЕ В DOMAIN_REALM:

br-srv = AU-TEAM.IRPO

systemctl enable --now samba

ЭТО ТОЖЕ НА BR-SRV

kinit administrator@AU-TEAM.IRPO

ПАРОЛЬ ВВОДИМ P@ssw0rd

Переходим на HQ-CLI

sudo -i

ПАРОЛЬ ВВОДИМ

echo "172.30.100.2 au-team.irpo" >> /etc/hosts

realm join -U -v Administrator@AU-TEAM.IRPO ( если не работает systemctl restart sssd НА HQ-CLI)

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

на BR-SRV

samba-tool group add hq

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

Проверяем:

samba-tool group listmembers hq

на HQ-CLI

sudo -i

nano /etc/sssd/sssd.conf

Меняем значение ad_server 2 СТРОЧКА ПОСЛЕ [domain/]на br-srv.au-team.irpo

systemctl restart sssd

nano /etc/krb5.conf

Приводим файл к следующему виду:

В [realms] ниже закоменченных строк добавляем

AU-TEAM.IRPO = {

kdc = br-srv.au-team.irpo

admin_server = br-srv.au-team.irpo

}

В [domain_realm]

.au-team.irpo = AU-TEAM.IRPO

au-team.irpo = AU-TEAM.IRPO

Далее переходим в «Настройки» - «Сетевые учетные записи».

Выбираем Kerberos 2 пункт, вводим administrator@AU-TEAM.IRPO и P@ssw0rd.

ИЛИ В КОНСОЛИ ПИШЕМ kinit administrator@AU-TEAM.IRPO и пароль

sss_cache -E

visudo

ВТАВЛЯЕМ В ПЕРВУЮ ПУСТУЮ СТРОКУ

%hq@au-team.irpo ALL=(ALL) /bin/cat, /bin/grep, /bin/id

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

id hquser1@AU-TEAM.IRPO

su - hquser1@AU-TEAM.IRPO

sudo cat /etc/hosts | grep au-team

ПАРОЛЬ ВВОДИМ

id

exit

2) на HQ-SRV

Тип диска - SATA СОЗДАТЬ В НАСТРОЙКАХ МАШИНЫ, “Create a new virtual disk”, Maximum disk size - 1. В

имени диска меняем цифру на конце на 10, 11 соответственно для 2 дисков.

ПРИМЕР: HQ-SRV-11.vmdk

Нажимаем Finish.

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

lsblk

fdisk /dev/sdb уже потом sdc

g

n

Жмем Enter 3 раза

W

mdadm --create /dev/md0 --level=0 --raid-device=2 /dev/sdb1 /dev/sdc1

Далее проверяем, у md0 в типе должно быть написано raid0

lsblk

mdadm --detail --scan --verbose >> /etc/mdadm.conf

mkfs.ext4 /dev/md0

mkdir /raid

nano /etc/fstab

В конец добавляем следующую строчку: не обяз ее ровнять

/dev/md0 /raid ext4 defaults 0 0

systemctl daemon-reload

mount -a

df -h

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

3) на HQ-SRV dnf install nfs4-acl-tools -y

dnf install nfs4-acl-tools mariadb-server httpd php php-mysqlnd php-cli -y

ЕСЛИ ВЫХОДИТ ХРЕНЬ с PID И НОМЕР ТО ПИШЕМ

kill -9 и этот номер и снова скачиваем

mkdir /raid/nfs

chown nobody:nobody /raid/nfs

chmod 777 /raid/nfs

nano /etc/exports

Добавляем в него следующую строчку

/raid/nfs 192.168.200.0/28 (rw)

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

exportfs -a

systemctl enable --now nfs-server

На HQ-CLI: если ты не вышел с hquser1 выйди в root

mkdir /mnt/nfs

nano /etc/fstab

Добавляем следующую строчку: можно не ровнять

192.168.100.2:/raid/nfs /mnt/nfs nfs auto 0 0

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

systemctl daemon-reload

mount -a

df -h должна была появиться запись

4) На ISP

nano /etc/chrony.conf

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

local stratum 5

allow 0/0

hwtimestamp *

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

systemctl restart chronyd

chronyc sources

На HQ-SRV, HQ-CLI, BR-RTR, BR-SRV:

nano /etc/chrony.conf

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

server 172.16.1.1 iburst prefer

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

systemctl restart chronyd

chronyc sources

5) На BR-SRV:

nano /etc/ansible/demo.ini

[all]

hq-srv ansible_host=192.168.100.2 ansible_user=sshuser ansible_port=2026

hq-cli ansible_host=192.168.200.2 ansible_user=username

hq-rtr ansible_host=192.168.100.1 ansible_user=net_admin

br-rtr ansible_host=172.30.100.1 ansible_user=net_admin

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

ssh-keygen -t rsa

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

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

все пароли – P@ssw0rd

ЭТО ДЕЛАЕМ ТУТ ЖЕ В ТЕРМИНАЛЕ

ssh-copy-id -p 2026 sshuser@192.168.100.2

ssh-copy-id username@192.168.200.2

ssh-copy-id net_admin@192.168.100.1

ssh-copy-id net_admin@172.30.100.1

nano /etc/ansible/ansible.cfg

[defaults]

Inventory = /etc/ansible/demo.ini

ask_pass = False

host_ket_cheking = False

interpreter_python=/usr/bin/python

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

ansible -m ping all

6) На BR-SRV:

Перед развертыванием выполняем монтирование ISO образа с необходимыми Docker-образами.

Для этого переходим через VMWare WorkStation в настройки виртуальной машины.

Там выбираем CD/DVD driver 1 > Use ISO image file > Browse > Additional.iso > Open > OK.

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

На BR-SRV:

mount /dev/cdrom /mnt

dnf install docker-ce docker-compose -y

systemctl enable --now docker

docker --version

docker load < /mnt/docker/site_latest.tar

docker load < /mnt/docker/mariadb_latest.tar

Проверка:

docker images

nano site.yml

ВСТАВЛЯЕМ ЭТО:

services:

db:

image: mariadb:10.11

container_name: db

environment:

MARIADB_DATABASE: testdb

MARIADB_USER: test

MARIADB_PASSWORD: Passw0rd

MARIADB_ROOT_PASSWORD: Passw0rd

volumes:

- db_data:/var/lib/mysql

restart: unless-stopped

testapp:

image: site

container_name: testapp

environment:

DB_TYPE: maria

DB_HOST: db

DB_NAME: testdb

DB_USER: test

DB_PASS: Passw0rd

DB_PORT: 3306

ports:

- "8080:8000"

depends_on:

- db

restart: unless-stopped

volumes:

db_data:

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

docker-compose -f site.yml up -d

На HQ-CLI:

Открываем браузер и заходим на 172.30.100.2:8080

7) На HQ-SRV:
Перед развертыванием выполняем монтирование ISO образа с необходимыми Docker-образами.

Для этого переходим через VMWare WorkStation в настройки виртуальной машины.

Там выбираем CD/DVD driver 1 > Use ISO image file > Browse > Additional.iso > Open < OK.

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

mount /dev/cdrom /mnt

dnf install mariadb-server httpd php php-mysqlnd php-cli -y

systemctl enable --now mariadb httpd

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

mysql_secure_installation

P@ssw0rd

n

n

y

y

y

y

mysql -u root -p

P@ssw0rd

CREATE USER 'web'@'localhost' IDENTIFIED BY 'P@ssw0rd';

CREATE DATABASE webdb DEFAULT CHARACTER SET utf8;

GRANT ALL PRIVILEGES ON webdb.* TO 'web'@'localhost';

flush privileges;

\q

mysql -u root -p webdb < /mnt/web/dump.sql

P@ssw0rd

cp /mnt/web/index.php /var/www/html

cp /mnt/web/logo.png /var/www/html

nano /var/www/html/index.php

Меняем значения:

$servername = “localhost”; также ост

$username = “web”; меняем

$password = “P@ssw0rd”; меняем

$dbname = “webdb”; меняем

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

systemctl restart httpd

На hq-cli снова открываем в браузере 192.168.100.2

8) На BR-RTR:

firewall-cmd --zone=trusted --add-rich-rule='rule family="ipv4" destination address="172.16.2.2" forward-port port="2026" protocol="tcp" to-port="2026" to-addr="172.30.100.2"' --permanent

firewall-cmd --zone=trusted --add-rich-rule='rule family="ipv4" destination address="172.16.2.2" forward-port port="8080" protocol="tcp" to-port="8080" to-addr="172.30.100.2"' --permanent

firewall-cmd --reload

systemctl restart firewalld

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

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

ssh sshuser@172.16.2.2 -p 2026

На HQ-RTR:

firewall-cmd --zone=trusted --add-rich-rule='rule family="ipv4" destination address="172.16.1.2" forward-port port="2026" protocol="tcp" to-port="2026" to-addr="192.168.100.2"' --permanent

firewall-cmd --zone=trusted --add-rich-rule='rule family="ipv4" destination address="172.16.1.2" forward-port port="8080" protocol="tcp" to-port="80" to-addr="192.168.100.2"' --permanent

firewall-cmd --reload

systemctl restart firewalld

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

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

ssh sshuser@172.16.1.2 -p 2026

9) На ISP:

dnf install nginx httpd-tools -y

dnf install nginx -y

systemctl enable --now nginx

htpasswd -c /etc/nginx/.htpasswd WEB

P@ssw0rd

P@ssw0rd

nano /etc/nginx/nginx.conf

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

в него 2 других сервера:

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

}

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

}

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

}

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

}

systemctl restart nginx

nano /etc/selinux/config

Меняем параметр SELINUX на disabled

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

Открываем http://web.au-team.irpo, там сайт из задания 7.

10) на ISP:

dnf install httpd-tools -y

htpasswd -c /etc/nginx/.htpasswd WEB

P@ssw0rd

P@ssw0rd

nano /etc/nginx/nginx.conf

Добавляем строчки auth_basic на 2 сервере ПОСЛЕ Location и перед proxy_pass
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;

Проверяем:

nginx -t

systemctl restart nginx

На hq-cli в браузере открываем web.au-team.irpo

логин - WEB, пароль - P@ssw0rd. Должен открыться сайт из задания 7.

11) Установка Яндекс Браузера:

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

Переходим на вторую страницу и запускаем браузер. это не надо

На HQ-CLI:

sudo -i

dnf install yandex-browser-stable

ГЛАВА 3

Безопасность корпоративной сети — это не только межсетевые экраны и сложные пароли. Ключевым элементом защиты является шифрование трафика и управление цифровыми сертификатами. В изолированных или гибридных инфраструктурах использование публичных удостоверяющих центров часто невозможно или экономически нецелесообразно. На помощь приходит собственный центр сертификации (CA), который позволяет выпускать сертификаты для внутренних веб-серверов, почтовых систем и VPN-шлюзов. Но создание CA — лишь половина дела. Сертификаты нужно правильно применить: настроить веб-серверы на HTTPS, защитить IP-туннели с помощью IPsec, разграничить трафик межсетевым экраном, организовать централизованный сбор логов и мониторинг, а также защитить SSH от брутфорса с помощью fail2ban. В этой статье мы на реальных примерах разберём полный цикл: от импорта пользователей в домен до настройки защищённого веб-доступа, шифрованных туннелей, логирования, мониторинга и инвентаризации через Ansible.

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

Что мы сделаем:

  1. Импортируем пользователей из CSV-файла в домен au-team.irpo с помощью bash-скрипта;
  2. Развернём центр сертификации на базе OpenSSL с поддержкой российских криптоалгоритмов ГОСТ;
  3. Настроим веб-сервер Nginx на использование выпущенных сертификатов для HTTPS;
  4. Установим и настроим КриптоПро на клиентской машине для доверия к нашему CA;
  5. Перенастроим IP-туннель с базового на шифрованный с использованием StrongSwan (IPsec);
  6. Настроим межсетевой экран (firewalld) на маршрутизаторах с зонами internal/external;
  7. Организуем централизованный сбор логов всех устройств на сервер через rsyslog с ротацией через logrotate;
  8. Развернём систему мониторинга Prometheus + Grafana и подключим к ней узлы;
  9. Реализуем инвентаризацию машин через Ansible и защиту SSH с помощью fail2ban.

Перед началом выполнения команд убедитесь, что:

  • Образ Additional.iso подключён к BR-SRV и HQ-CLI;
  • Все хосты имеют корректные IP-адреса из задания;
  • На HQ-SRV уже установлен и настроен DNS-сервер.

Начнём с импорта пользователей в домен. Открываем терминал на BR-SRV.

1) Выполните импорт пользователей в домен au-team.irpo:

на BR-SRV:

Монтируем образ Additional.iso

mount /dev/cdrom /mnt

cat /mnt/Users.csv

nano import.sh

пишем скрипт

#!/bin/bash

tail -n +2 /mnt/Users.csv | while IFS=';' read -r firstName lastName _ _ ou _ _ _ _ password

do

if ! samba-tool ou list | grep -q "OU=$ou"; then

samba-tool ou create "OU=$ou"

fi

samba-tool user create "${firstName}${lastName}" "$password" \

--userou="OU=$ou"

done

chmod +x import.sh

./import.sh

samba-tool user setpassword MalachiAlexander

На HQ-CLI попробовать зайти по данным:

Логин: MalachiAlexander@au-team.irpo

Пароль: P@ssw0rd1

2) Выполните настройку центра сертификации на базе HQ-SRV:

на HQ-SRV

dnf install openssl-gost-engine

openssl-switch-config gost

update-crypto-policies --set GOST-ONLY:GOST

update-crypto-policies --show

openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out CA.key

openssl req -new -x509 -md_gost12_256 -days 365 -key CA.key -out CA.crt -subj "/C=RU/ST=Russia/L=Kazan/O=MCK-KTITS/OU=MCK-KTITS CA/CN=MCK-KTITS CA Root"

openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out au-team.irpo.key

nano au-team.irpo.ext

И добавляем туда следующее:

authorityKeyIdentifier=keyid,issuer

basicConstraints=CA:FALSE

keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

subjectAltName = @alt_names

[alt_names]

DNS.1 = au-team.irpo

DNS.2 = docker.au-team.irpo

DNS.3 = web.au-team.irpo

IP.1 = 172.16.1.2

IP.2 = 172.16.2.2

openssl req -new -md_gost12_256 -key au-team.irpo.key -out au-team.irpo.csr -subj "/C=RU/L=Kazan/O=AU-TEAM Site GOST/CN=*.au-team.irpo"

openssl x509 -req -in au-team.irpo.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out au-team.irpo.crt -days 30 -extfile au-team.irpo.ext

cat au-team.irpo.crt CA.crt > fullchain.crt

openssl-switch-config default

update-crypto-policies --set DEFAULT

mkdir -p /home/sshuser/certs

cp fullchain.crt /home/sshuser/certs

cp au-team.irpo.key /home/sshuser/certs

cp CA.crt /home/sshuser/certs

chmod 755 -R /home/sshuser/certs

на ISP

dnf install openssl-gost-engine -y

openssl-switch-config gost

update-crypto-policies --set GOST-ONLY:GOST

update-crypto-policies --show

mkdir -p /etc/ssl/site

scp -P 2026 sshuser@172.16.1.2:/home/sshuser/certs/* /etc/ssl/site

nano /etc/nginx/nginx.conf

добавляем серверы https после http

серверов:

server {

listen 443 ssl;

server_name docker.au-team.irpo;

ssl_certificate /etc/ssl/site/fullchain.crt;

ssl_certificate_key /etc/ssl/site/au-team.irpo.key;

ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH:MEDIUM;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

location / {

proxy_pass http://172.16.2.2:8080;

}

}

server {

listen 443 ssl;

server_name web.au-team.irpo;

ssl_certificate /etc/ssl/site/fullchain.crt;

ssl_certificate_key /etc/ssl/site/au-team.irpo.key;

ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH:MEDIUM;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

location / {

auth_basic "Restricted Content";

auth_basic_user_file /etc/nginx/.htpasswd;

proxy_pass http://172.16.1.2:8080;

}

}

nginx -t

systemctl restart nginx

на HQ-CLI:

Монтируем Additional.iso:

mount /dev/cdrom /mnt

cp -r /mnt/cryptopro/linux-amd64/ .

scp -P 2026 sshuser@192.168.100.2:/home/sshuser/certs/CA.crt /home/username

chmod +x linux-amd64/*.sh

./linux-amd64/install_gui.sh

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

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

нажимаем далее:

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

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

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

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

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

После открытия приложения необходимо перемещать мышь в окне

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

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

хранилище сертификатов «Доверенные корневые центры сертификации»

и «Устанавливаем сертификат».

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

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

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

Запускаем браузер Яндекс.Браузер и проверяем сайты

https://web.au-team.irpo и https://docker.au-team.irpo, что подключения защищены:

3) Перенастройте ip-туннель с базового до уровня туннеля,

обеспечивающего шифрование трафика

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

dnf install strongswan -y

systemctl enable --now strongswan

на HQ-RTR:

nano /etc/strongswan/swanctl/conf.d/swanctl.conf

Добавляем конфигурацию IPSec:

connections {

my-tunnel {

local_addrs = 172.16.1.2

remote_addrs = 172.16.2.2

local {

auth = psk

}

remote {

auth = psk

}

children {

net {

mode = transport

esp_proposals = aes256-sha256

}

}

}

}

secrets {

ike-1 {

secret = "P@ssw0rd"

}

}

systemctl restart strongswan

на BR-RTR

nano /etc/strongswan/swanctl/conf.d/swanctl.conf

Добавляем конфигурацию IPSec:

connections {

my-tunnel {

local_addrs = 172.16.2.2

remote_addrs = 172.16.1.2

local {

auth = psk

}

remote {

auth = psk

}

children {

net {

mode = transport

esp_proposals = aes256-sha256

}

}

}

}

secrets {

ike-1 {

secret = "P@ssw0rd"

}

}

systemctl restart strongswan

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

swanctl --initiate --child net

swanctl --list-conns

с HQ-RTR:

tcpdump -i ens33 -n host 172.16.2.2

4) Настройте межсетевой экран на маршрутизаторах HQ-RTR и

BR-RTR на сеть в сторону ISP

На HQ-RTR:

firewall-cmd --permanent --zone=external --change-interface=ens33

firewall-cmd --permanent --zone=internal --change-interface=ens34

firewall-cmd --permanent --zone=internal --change-interface=ens34.100

firewall-cmd --permanent --zone=internal --change-interface=ens34.200

firewall-cmd --permanent --zone=internal --add-interface=tun0

firewall-cmd --permanent --new-policy int-to-ext

firewall-cmd --permanent --policy int-to-ext --add-ingress-zone=internal

firewall-cmd --permanent --policy int-to-ext --add-egress-zone=external

firewall-cmd --permanent --policy int-to-ext --set-target=ACCEPT

firewall-cmd --permanent --zone=external --add-service=http

firewall-cmd --permanent --zone=external --add-service=https

firewall-cmd --permanent --zone=external --add-service=dns

firewall-cmd --permanent --zone=external --add-service=ntp

firewall-cmd --permanent --zone=external --add-port=2026/tcp

firewall-cmd --permanent --zone=external --add-port=8080/tcp

firewall-cmd --permanent --zone=external --add-protocol=gre

firewall-cmd --permanent --zone=external --add-port=500/udp

firewall-cmd --permanent --zone=external --add-port=4500/udp

firewall-cmd --permanent --zone=external --add-protocol=esp

firewall-cmd --permanent --zone=external --add-protocol=ah

firewall-cmd --permanent --zone=internal --add-protocol=ospf

firewall-cmd --permanent --zone=external --add-forward-port=port=2026:proto=tcp:toport=2026:toaddr=192.168.100.2

firewall-cmd --permanent --zone=external --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.100.2

firewall-cmd --permanent --direct --add-passthrough ipv4 -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

firewall-cmd --reload

На BR-RTR:

firewall-cmd --permanent --zone=external --change-interface=ens33

firewall-cmd --permanent --zone=internal --change-interface=ens34

firewall-cmd --permanent --zone=internal --add-interface=tun0

firewall-cmd --permanent --new-policy int-to-ext

firewall-cmd --permanent --policy int-to-ext --add-ingress-zone=internal

firewall-cmd --permanent --policy int-to-ext --add-egress-zone=external

firewall-cmd --permanent --policy int-to-ext --set-target=ACCEPT

firewall-cmd --permanent --zone=external --add-service=http

firewall-cmd --permanent --zone=external --add-service=https

firewall-cmd --permanent --zone=external --add-service=dns

firewall-cmd --permanent --zone=external --add-service=ntp

firewall-cmd --permanent --zone=external --add-port=2026/tcp

firewall-cmd --permanent --zone=external --add-port=8080/tcp

firewall-cmd --permanent --zone=external --add-protocol=gre

firewall-cmd --permanent --zone=external --add-port=500/udp

firewall-cmd --permanent --zone=external --add-port=4500/udp

firewall-cmd --permanent --zone=external --add-protocol=esp

firewall-cmd --permanent --zone=external --add-protocol=ah

firewall-cmd --permanent --zone=internal --add-protocol=ospf

firewall-cmd --permanent --zone=external --add-forward-port=port=2026:proto=tcp:toport=2026:toaddr=172.30.100.2

firewall-cmd --permanent --zone=external --add-forward-port=port=8080:proto=tcp:toport=8080:toaddr=172.30.100.2

firewall-cmd --permanent --direct --add-passthrough ipv4 -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

firewall-cmd --reload

5) Настройте принт-сервер cups на сервере HQ-SRV

на HQ-SRV:

dnf install cups cups-pdf -y --nogpgcheck

systemctl enable --now cups

nano /etc/cups/cupsd.conf

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

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

добавляем строки Allow all после deny:

#Restrict access to the server

#Restrict access to the admin pages

systemctl restart cups

на HQ-SRV:

lpadmin -x Virtual_PDF

lpadmin -p PDF -E -v cups-pdf:/ -m "CUPS-PDF_noopt.ppd"

lpstat -p

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

сначала необходимо разблокировать доступ к добавлению и изменению

настроек:

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

После

добавления принтера, настраиваем принтер для

использования по умолчанию, необходимо, что появилась галочка у пункта

«Использовать по умолчанию».

После этого, дополнительно проверяем, выбрав пункт «Сведения о

принтере», что принтер действительно с HQ-SRV. Должен быть IP HQ-SRV.

6) Реализуйте логирование при помощи rsyslog на устройствах HQRTR, BR-RTR, BR-SRV:

на HQ-SRV:

nano /etc/rsyslog.conf

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

input):

В конце добавляем шаблон для записи логов с удаленных серверов

в /opt и исключения hq-srv из записи в папку /opt:

$template RemoteLogs,"/opt/%HOSTNAME%/%HOSTNAME%.log"

if $hostname != 'hq-srv' then {

*.warning ?RemoteLogs

& stop

}

На клиентах HQ-RTR, BR-RTR, BR-SRV в файле /etc/rsyslog.conf

добавляем запись, для отправки логов на сервер логов (можно также в

конце):

nano /etc/rsyslog.conf

*.warning @192.168.100.2:514

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

systemctl restart rsyslog

На HQ-SRV

nano /etc/logrotate.d/remote_logs

/opt/*/*.log {

weekly

rotate 4

compress

minsize 10M

missingok

notifempty

sharedscripts

postrotate

/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true

endscript

}

На HQ-RTR, BR-RTR, BR-SRV, HQ-SRV

systemctl restart logrotate

7) На сервере HQ-SRV реализуйте мониторинг устройств с

помощью открытого программного обеспечения

на сервере HQ-SRV

dnf install -y grafana prometheus prometheus-node_exporter --nogpgcheck

nano /etc/prometheus/prometheus.yml

Редактируем там строчку, добавив адреса 192.168.100.2:9100 и

172.30.100.2:9100:

static_configs: - targets: ["localhost:9090","192.168.100.2:9100","172.30.100.2:9100"]

systemctl enable --now grafana-server

systemctl enable --now prometheus

systemctl enable --now node_exporter

на BR-SRV

dnf install -y prometheus-node_exporter

systemctl enable --now node_exporter

Переходим на HQ-CLI для настройки Grafana. Открываем браузер и

переходим по адресу http://192.168.100.2:3000

admin:admin

Задаём новый пароль P@ssw0rd

Добавляем подключение к Prometheus. Для этого переходим во

вкладку Connections и добавляем новое подключение через «Add new

connection»

Находим в DataSources Prometheus

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

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

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

дашборд «Create Dashboard»

Импортируем Dashboard, выбрав «Import Dashboard» dashboard 11074 и загружаем его «Load» снизу выбираем прометеус и import

на HQ-SRV

nano /opt/dns/au-team.irpo

mon A 192.168.100.2

systemctl restart named

Теперь открываем мониторинг на HQ-CLI через адрес http://mon.au-team.irpo:3000

8) Реализуйте механизм инвентаризации машин HQ-SRV и HQCLI через Ansible на BR-SRV:

Монтируем образ Additional.iso:

mount /dev/cdrom /mnt

на BR-SRV

cp /mnt/playbook/get_hostname_address.yml /etc/ansible

nano /etc/ansible/demo.ini

[inventory]

hq-cli ansible_host=192.168.200.2 ansible_user=username

hq-srv ansible_host=192.168.100.2 ansible_port=2026 ansible_user=sshuser

nano /etc/ansible/get_hostname_address.yml

---

- name: Inventory of HQ-SRV and HQ-CLI

hosts: inventory

gather_facts: yes

tasks:

- name: получение данных с хоста

copy:

dest: /etc/ansible/PC-INFO/{{ ansible_hostname }}.yml

content: |

Hostname: {{ ansible_hostname }}

IP_Address: {{ ansible_default_ipv4.address }}

delegate_to: localhost

mkdir -p /etc/ansible/PC-INFO

cd /etc/ansible

ansible-playbook get_hostname_address.yml -i demo.ini

ls /etc/ansible/PC-INFO

cat /etc/ansible/PC-INFO/hq-cli.yml

cat /etc/ansible/PC-INFO/hq-srv.yml

9) На HQ-SRV настройте программное обеспечение fail2ban для

защиты ssh

на HQ-SRV

dnf install fail2ban -y --nogpgcheck

nano /etc/fail2ban/jail.local

[sshd]

enabled = true

port = 2026

filter = sshd

maxretry = 3

bantime = 60

findtime = 120

systemctl restart fail2ban

systemctl enable --now fail2ban

fail2ban-client status sshd

* systemctl restart chronyd