Модуль 3. Эксплуатация инфраструктуры¶
Исходное состояние — снимок module3-start комплекта 201–206. Команды внутри ВМ выполняются от root. Сначала проверьте доменный вход, DNS, время и межофисную связь по руководству модуля 2.
Статус: инфраструктура, ГОСТ HTTPS от доменного пользователя, вход irpoadmin, копирование и восстановление проверены после выключения всего комплекта. Кибер Бэкап 18 активирован, Active Protection включён. Создан согласованный module3-complete. Границы проверки — в приёмке, актуальные результаты — в журнале.
1. Импорт пользователей: BR-SRV¶
ISO уже подключён к виртуальному CD-ROM, но монтирование вручную не сохраняется после перезагрузки:
mkdir -p /mnt/additional
mountpoint -q /mnt/additional || mount -o ro /dev/sr0 /mnt/additional
ls /mnt/additional
Фактическое имя — Users.csv, кодировка cp1252, разделитель ;. В файле 300 записей и пять OU. Логин формируется как firstname.lastname в нижнем регистре; коллизий в этом файле нет.
Перенесите на BR-SRV файл module3-import-users.py, изучите его и выполните:
python3 /root/module3-import-users.py
samba-tool ou list
samba-tool user show malachi.alexander
Скрипт создаёт OU, затем пользователей через samba-tool user create, сохраняет пароль из CSV, имя, фамилию, должность, телефон и адресные атрибуты. ldbmodify дополняет адрес; base64 в LDIF позволяет корректно передавать специальные символы. Повторный запуск пропускает создание уже существующих объектов. Он не сбрасывает пароли существующих пользователей.
На HQ-CLI:
id malachi.alexander
ssh malachi.alexander@127.0.0.1
Введите P@ssw0rd1 из CSV. Внутри сеанса выполните id и hostname -f. Проверка id сама по себе подтверждает только поиск учётной записи; успешная аутентификация нужна отдельно. Для графического входа завершите сеанс и выберите другого пользователя на экране входа.
2. Центр сертификации и ГОСТ HTTPS¶
2.1. Выпуск сертификатов: HQ-SRV¶
apt-get update
apt-get install -y openssl openssl-gost-engine
control openssl-gost enabled
openssl list -public-key-algorithms | grep -i gost
В выбранном серверном образе пакет называется openssl-gost-engine. На рабочей станции после обновления OpenSSL поддержка уже присутствовала; наличие проверяйте командами control openssl-gost и openssl ciphers -v ALL, а не только именем пакета.
Создайте УЦ один раз, не заменяя ключи действующего УЦ:
umask 077
mkdir -p /root/exam-ca
cd /root/exam-ca
test ! -e ca.key || { echo 'УЦ уже существует'; exit 1; }
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key
openssl req -new -x509 -key ca.key -md_gost12_256 -days 30 \
-subj '/C=RU/O=AU-TEAM/CN=AU-TEAM Training GOST CA' \
-addext 'basicConstraints=critical,CA:TRUE' \
-addext 'keyUsage=critical,keyCertSign,cRLSign' -out ca.crt
for name in web docker; do
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out "$name.key"
openssl req -new -key "$name.key" -md_gost12_256 \
-subj "/C=RU/O=AU-TEAM/CN=$name.au-team.irpo" -out "$name.csr"
cat > "$name.ext" <<EOF
basicConstraints=critical,CA:FALSE
keyUsage=critical,digitalSignature,keyEncipherment,keyAgreement
extendedKeyUsage=serverAuth
subjectAltName=DNS:$name.au-team.irpo
EOF
openssl x509 -req -in "$name.csr" -CA ca.crt -CAkey ca.key -CAcreateserial \
-days 30 -md_gost12_256 -extfile "$name.ext" -out "$name.crt"
done
chmod 600 *.key
Полученные файлы:
| Файл | Назначение |
|---|---|
ca.key, ca.crt |
Закрытый ключ и открытый сертификат учебного УЦ |
web.key, web.crt |
Сервер web.au-team.irpo |
docker.key, docker.crt |
Сервер docker.au-team.irpo |
Алгоритм подписи — ГОСТ Р 34.10-2012, ключ 256 бит; хеш — ГОСТ Р 34.11-2012. В серверных сертификатах есть SAN с полным DNS-именем, EKU serverAuth, срок — 30 дней. Ключ УЦ остаётся на HQ-SRV.
cd /root/exam-ca
openssl verify -CAfile ca.crt web.crt docker.crt
openssl x509 -in web.crt -noout -dates -subject -ext subjectAltName
Ожидается OK для обоих сертификатов. Эталонные сертификаты выпущены 02.10.2026 и истекают 01.11.2026. При новом проведении выпускайте новые сертификаты с актуальным сроком.
2.2. nginx: ISP¶
Передайте на ISP только web.key, web.crt, docker.key, docker.crt и публичный ca.crt. Разместите в /etc/nginx/tls; каталог — 0700, ключи — 0600. Для преподавателя передача через Guest Agent автоматизирована в module3-deploy-tls.py.
control openssl-gost enabled
В каждом существующем блоке server замените listen 80; на listen 443 ssl; и добавьте, например для web:
ssl_certificate /etc/nginx/tls/web.crt;
ssl_certificate_key /etc/nginx/tls/web.key;
ssl_protocols TLSv1.2;
ssl_ciphers GOST2012-KUZNYECHIK-KUZNYECHIKOMAC:GOST2012-MAGMA-MAGMAOMAC;
Для docker используйте его пару файлов. Сохраните прежние proxy_pass и Basic Auth для web. Добавьте один HTTP-блок перенаправления:
server {
listen 80;
server_name web.au-team.irpo docker.au-team.irpo;
return 301 https://$host$request_uri;
}
nginx -t
systemctl restart nginx
TLS завершается на ISP: именно он предъявляет браузеру серверный сертификат. Соединения ISP → серверы продолжают использовать настроенные в модуле 2 HTTP-backend.
2.3. Доверие и проверка: HQ-CLI¶
Скопируйте публичный ca.crt и выполните:
install -m 644 ca.crt /etc/pki/ca-trust/source/anchors/au-team-gost.crt
update-ca-trust
control openssl-gost enabled
openssl s_client -connect web.au-team.irpo:443 \
-servername web.au-team.irpo \
-CAfile /etc/pki/ca-trust/source/anchors/au-team-gost.crt \
-verify_return_error </dev/null
Ожидается Verify return code: 0 (ok) и ГОСТ-набор шифров. Повторите для docker.au-team.irpo. На эталоне согласован GOST2012-MAGMA-MAGMAOMAC.
КриптоПро на HQ-CLI. Используйте предоставленный владельцем linux-amd64.tgz (CSP 5.0.13820). Под root:
tar -xzf linux-amd64.tgz
cd linux-amd64
./install.sh kc1 lsb-cprocsp-pkcs11 cprocsp-rdr-gui-gtk
/opt/cprocsp/sbin/amd64/cpconfig -license -view
/opt/cprocsp/bin/amd64/certmgr -inst -store mRoot \
-file /etc/pki/ca-trust/source/anchors/au-team-gost.crt
Импортируется только ваш учебный УЦ; перед подтверждением сверяйте отпечаток с CA на HQ-SRV. Для текущего УЦ SHA1: 857D3332623BB1546123495FDB75CC21FBAAB088. Установка доверия только в OpenSSL недостаточна. КриптоПро установился в демонстрационном режиме; срок проверяйте командой выше, для нового проведения соблюдайте условия лицензии.
Запустите Яндекс Браузер в обычном, не приватном профиле. В «Настройки → Системные → Сеть» должна быть включена поддержка ГОСТ. Откройте оба HTTPS-сайта; при первом запросе на передачу соединения КриптоПро нажмите «Продолжить» (Proceed). Это согласие на ГОСТ, а не обход ошибки доверия. Для web введите WEB / P@ssw0rd. Проверены HTTP 200, содержимое DemoTest/Exam1 и TLS 1.2 с издателем AU-TEAM Training GOST CA, без ignore_https_errors. Скриншоты сохранены в evidence/module3/. Проверка повторена после перезапуска в браузере от доменного hquser1 (обычный профиль, виртуальный X-сеанс).
Не считайте curl -k, отключение проверки сертификатов или успешный OpenSSL-handshake подтверждением выполнения браузерного пункта задания. На эталоне оба сайта проверены также браузером, запущенным от доменного hquser1.
3. GRE поверх IPsec: HQ-RTR и BR-RTR¶
Выбрана связка strongSwan + IKEv2, так как она доступна в Альт и шифрует существующий GRE без изменения адресов OSPF. Режим IPsec — transport: защищается GRE между провайдерскими адресами маршрутизаторов.
apt-get install -y strongswan
На HQ-RTR используйте left=172.16.1.2, right=172.16.2.2; на BR-RTR поменяйте их местами. Создайте /etc/strongswan/ipsec.conf:
config setup
uniqueids=yes
conn gre-office
type=transport
reqid=1
keyexchange=ikev2
authby=psk
left=172.16.1.2
right=172.16.2.2
leftprotoport=gre
rightprotoport=gre
ike=aes256-sha256-modp2048!
esp=aes256-sha256!
dpdaction=restart
dpddelay=30s
auto=start
В /etc/strongswan/ipsec.secrets на обоих маршрутизаторах:
172.16.1.2 172.16.2.2 : PSK "Exam-IPsec-2026-SharedKey"
chmod 600 /etc/strongswan/ipsec.secrets
На обоих концах запишите mtu 1400 в /etc/net/ifaces/gre1/iplink. В этой версии etcnet параметр MTU=1400 в options не применялся после загрузки; iplink — штатный файл команд настройки канала. Затем:
ip link set gre1 mtu 1400
systemctl enable --now strongswan-starter
systemctl restart strongswan-starter
strongswan statusall
vtysh -c 'show ip ospf neighbor'
В Альт команда называется strongswan, а не ipsec. Дождитесь ESTABLISHED и INSTALLED, TRANSPORT, reqid 1. OSPF должен оставаться Full; MD5-аутентификация, router-id и area 0 сохраняются. MTU уменьшен для служебных заголовков GRE/ESP.
С HQ-SRV выполните ping 192.168.0.2. На ISP, через который проходит зашифрованный трафик:
tcpdump -ni eth1 'host 172.16.1.2 and host 172.16.2.2 and (ip proto 50 or ip proto 47)'
При передаче трафика должны быть видны ESP-пакеты; открытый GRE на провайдерском участке появляться не должен. Параметры и обоснование выбора внесите в отчёт.
4. Межсетевой экран¶
На двух офисных маршрутизаторах создайте /etc/nftables/exam-filter.nft. Ниже пример HQ-RTR; на BR-RTR замените 172.16.2.2 на 172.16.1.2:
table inet exam_filter {
chain input {
type filter hook input priority filter; policy accept;
iifname "eth0" ip saddr 172.16.2.2 ip protocol gre ipsec in reqid 1 accept
iifname "eth0" ip protocol gre counter drop
ct state established,related accept
iifname "eth0" ip saddr 172.16.2.2 udp dport {500,4500} accept
iifname "eth0" ip saddr 172.16.2.2 ip protocol esp accept
iifname "eth0" ip protocol icmp accept
iifname "eth0" counter drop
}
chain forward {
type filter hook forward priority filter; policy accept;
ct state established,related accept
iifname "eth0" ct status dnat tcp dport {80,8080,2026} accept
iifname "eth0" ip protocol icmp accept
iifname "eth0" counter drop
}
}
Подключите include "/etc/nftables/exam-filter.nft" к существующему /etc/nftables/nftables.nft после таблицы NAT и flush ruleset, не удаляя DNAT/NAT модуля 2.
Правила применяются к входу с eth0, то есть от ISP:
- Разрешается GRE только после IPsec-дешифрования с
reqid 1; прочий GRE отбрасывается до проверки established. - Разрешаются ответы на установленные соединения и связанные ICMP-ошибки.
- От соседа разрешаются IKE UDP 500/4500 и ESP; разрешается ICMP.
- В
forwardразрешаются только опубликованные DNAT-порты HTTP-приложений и SSH 2026, ответы на соединения и ICMP. - Остальной вход из ISP отбрасывается. Исходящие HTTP/HTTPS/DNS/NTP работают с ответами через conntrack.
nft -c -f /etc/nftables/nftables.nft
systemctl reload nftables
nft list table inet exam_filter
Проверьте с ISP: 172.16.1.2:8080, 172.16.2.2:8080 и SSH DNAT доступны; новые подключения к портам 22 и 9100 офисных маршрутизаторов блокируются. Проверьте выход клиента в Интернет и сохранность OSPF.
5. Виртуальный PDF-принтер¶
На HQ-SRV:
apt-get install -y cups cups-pdf
systemctl enable --now cups
cupsctl --share-printers
lpinfo -m | grep -i pdf
lpadmin -p ExamPDF -E -v cups-pdf:/ -m CUPS-PDF.ppd
lpadmin -p ExamPDF -o printer-is-shared=true
В /etc/cups/cupsd.conf в существующий <Location /> после Allow @LOCAL добавьте:
Allow 192.168.200.0/255.255.255.224
HQ-CLI находится в другой подсети, поэтому одного @LOCAL недостаточно. В проверенной сборке используйте полный вид маски, как выше. Перезапустите cups.
На HQ-CLI:
systemctl enable --now cups
lpadmin -p ExamPDF -E -v ipp://192.168.100.2/printers/ExamPDF -m everywhere
lpadmin -d ExamPDF
lpstat -d
echo 'Exam PDF print check' | lp
На сервере проверьте lpstat -W completed и появление PDF в /var/spool/cups-pdf/ANONYMOUS/. Задание из сеанса пользователя также должно завершаться. При No IPP attributes сначала проверьте HTTP-код доступа к http://192.168.100.2:631/printers/ExamPDF: код 403 означает ошибку ACL CUPS.
6. Централизованные журналы¶
На HQ-SRV установите rsyslog. Конфигурация /etc/rsyslog.d/20-exam.conf:
module(load="imtcp")
template(name="ExamRemote" type="string" string="/opt/%HOSTNAME%/messages.log")
ruleset(name="ExamRemoteRules") {
if $syslogseverity <= 4 then {
action(type="omfile" dynaFile="ExamRemote" createDirs="on" dirCreateMode="0750" fileCreateMode="0640")
}
stop
}
input(type="imtcp" port="514" ruleset="ExamRemoteRules")
Чем меньше числовое значение severity, тем серьёзнее событие: warning=4, err=3. Условие <=4 включает warning и более серьёзные сообщения. HQ-SRV только принимает их, не пересылает самому себе.
На HQ-RTR, BR-RTR, BR-SRV:
apt-get install -y rsyslog rsyslog-journal
Пакет rsyslog-journal сам добавляет загрузку imjournal; повторно объявлять модуль не нужно. Без него rsyslog запустится, но не будет получать локальные сообщения journald.
В /etc/rsyslog.d/20-exam.conf на клиентах:
*.warning action(type="omfwd" target="192.168.100.2" port="514" protocol="tcp" action.resumeRetryCount="-1" action.resumeInterval="5" queue.type="LinkedList" queue.size="10000")
Только на BR-RTR добавьте в действие Device="gre1". При загрузке OSPF ещё может не установить маршрут к HQ-SRV: без привязки клиент открывает соединение с исходным адресом внешнего интерфейса, обратный трафик попадает под NAT и доставка зависает. Привязка к GRE не позволяет использовать обходной путь через ISP; очередь и повторные попытки дождутся маршрута OSPF.
На всех четырёх машинах:
rsyslogd -N1
systemctl enable --now rsyslog
systemctl restart rsyslog
Отправьте с каждого клиента logger -p user.warning exam-warning и logger -p user.info exam-info. На HQ-SRV должны появиться /opt/hq-rtr/messages.log, /opt/br-rtr/messages.log, /opt/br-srv/messages.log с warning; info в этих журналах быть не должно.
Создайте /etc/logrotate.d/exam-remote:
/opt/*.log /opt/*/*.log /opt/*/*/*.log {
weekly
minsize 10M
rotate 4
compress
missingok
notifempty
sharedscripts
postrotate
/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
endscript
}
Эти маски покрывают все каталоги журналов данного стенда (один уровень устройств); при добавлении более глубокой структуры расширьте их. minsize требует одновременно недельного срока и минимального размера; size 10M заменил бы временное условие.
logrotate -d /etc/logrotate.d/exam-remote
7. Мониторинг: Prometheus, node_exporter, Grafana¶
На HQ-SRV установите prometheus prometheus-node_exporter grafana; на BR-SRV — prometheus-node_exporter. Запустите exporter на обоих серверах:
systemctl enable --now prometheus-node_exporter
curl -fs http://127.0.0.1:9100/metrics | head
На HQ-SRV /etc/prometheus/prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
- job_name: servers
static_configs:
- targets: ['192.168.100.2:9100']
labels: {host: hq-srv}
- targets: ['192.168.0.2:9100']
labels: {host: br-srv}
Для воспроизводимой панели перенесите module3-monitoring.sh на HQ-SRV как /root/module3-monitoring.sh, изучите и выполните bash /root/module3-monitoring.sh. Скрипт полностью входит в комплект руководства, не обращается к Proxmox и создаёт provisioning Grafana, панель из трёх запросов ниже и виртуальный хост Apache. Файлы YAML/JSON — 0644, каталог панели — 0755. Не запускайте его вместо установки пакетов выше.
| Компонент | Адрес/порт | Назначение |
|---|---|---|
| node_exporter | серверы:9100 | Метрики Linux |
| Prometheus | 127.0.0.1:9090 | Сбор каждые 15 секунд |
| Grafana | 127.0.0.1:3000 | Панель и аутентификация |
| Apache | HQ-SRV:80, Host mon.au-team.irpo |
Прокси к Grafana, ACL для сетей HQ |
Grafana: admin / P@ssw0rd. DNS HQ-SRV получает address=/mon.au-team.irpo/192.168.100.2. Apache сохраняет приложение HQ-SRV виртуальным хостом по умолчанию, чтобы не нарушить обращение от ISP.
admin_password в grafana.ini действует при первом создании базы, а не при каждом запуске. Если пакет уже создал базу, установите учебный пароль штатной CLI, указав тот же каталог данных, что и служба:
runuser -u grafana -- grafana cli --homepath /usr/share/grafana --config /etc/grafana/grafana.ini \
--configOverrides 'cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana' \
admin reset-admin-password 'P@ssw0rd'
Команда также включена в provisioning-скрипт. Prometheus должен слушать 127.0.0.1:9090 (параметр --web.listen-address в /etc/sysconfig/prometheus), а не все интерфейсы.
Панель HQ and BR servers показывает:
- ЦП:
100 * (1 - avg by(host) (rate(node_cpu_seconds_total{mode="idle"}[2m]))); - занятую ОП:
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes; - занятое место корневой ФС:
node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_avail_bytes{mountpoint="/"}.
curl -fs http://127.0.0.1:9090/api/v1/targets
systemctl is-active prometheus grafana-server httpd2
Оба target должны иметь health: up. На HQ-CLI откройте http://mon.au-team.irpo, войдите и откройте панель. Графики ЦП появятся после накопления как минимум двух выборок. С BR-SRV и ISP HTTP-запрос с Host mon.au-team.irpo должен получать 403. Порты 3000/9090 не слушают внешние адреса.
Выбор ПО обоснован доступностью в репозитории Альт, готовым exporter для Linux и воспроизводимым provisioning панели. Запишите компоненты, порты, интервал сбора и ограничения доступа в отчёт.
8. Инвентаризация через Ansible: BR-SRV¶
Исходный файл в /mnt/additional/playbook/ содержит задачу copy, записывающую текст в /tmp удалённого компьютера. Для задания её нужно оформить как playbook и перенести запись на управляющий BR-SRV.
Создайте /etc/ansible/PC-INFO и /etc/ansible/get_hostname_address.yml:
---
- name: Inventory HQ computers
hosts: hq-srv:hq-cli
gather_facts: true
tasks:
- name: Save computer identity on BR-SRV
ansible.builtin.copy:
dest: "/etc/ansible/PC-INFO/{{ ansible_facts.hostname }}.yml"
content: "{{ {'hostname': ansible_facts.hostname, 'ip_address': ansible_facts.default_ipv4.address} | to_nice_yaml }}"
mode: '0644'
delegate_to: localhost
gather_facts получает фактические параметры клиента; delegate_to: localhost сохраняет файл на BR-SRV. Фильтр to_nice_yaml формирует корректный YAML.
cd /etc/ansible
LC_ALL=C.UTF-8 ansible-playbook get_hostname_address.yml
cat PC-INFO/*.yml
Два файла: hq-srv.yml с 192.168.100.2, hq-cli.yml с 192.168.200.10.
9. Защита SSH: HQ-SRV¶
apt-get install -y fail2ban python3-module-systemd
В /etc/fail2ban/jail.d/exam-sshd.local:
[sshd]
enabled = true
port = 2026
backend = systemd
maxretry = 3
findtime = 600
bantime = 60
banaction = nftables-multiport
systemctl enable --now fail2ban
systemctl restart fail2ban
fail2ban-client status sshd
Пакет Python для systemd обязателен: иначе журнал содержит No module named 'systemd'. Для проверки сделайте с HQ-CLI три SSH-подключения на порт 2026 с ошибочным паролем, по одной попытке в соединении (NumberOfPasswordPrompts=1). На сервере ожидается Currently banned: 1 и адрес 192.168.200.10; через минуту — 0. Управлять сервером во время проверки удобно через консоль Proxmox.
10. Резервное копирование¶
Установка и управление¶
Используется Кибер Бэкап 18.5.40801: для полностью Linux-стенда версия 17.4 не обеспечивает Active Protection. Установщик и контрольная сумма указаны в материалах. Начинайте с чистой установки 18.5. Перед установкой на HQ-SRV:
apt-get install -y gcc make kernel-headers-modules-6.12
useradd -m irpoadmin
passwd irpoadmin
usermod -aG wheel irpoadmin
chmod 700 /root/CyberBackup_18.5_64-bit.x86_64
/root/CyberBackup_18.5_64-bit.x86_64 -a \
-i AcronisCentralizedManagementServer,BackupAndRecoveryAgent,MySQLAgentFeature
Пароль irpoadmin — P@ssw0rd. Заголовки должны соответствовать текущему ядру (uname -r). На HQ-SRV модули собраны; проверяйте lsmod | grep -E 'snapapi26|file_protector', dkms status и systemctl is-active active-protection. Не обновляйте ядро вслепую перед экзаменом.
На HQ-CLI создайте mkdir -p /backup, установите BackupAndRecoveryAgent,StorageServer тем же дистрибутивом:
chmod 700 /root/CyberBackup_18.5_64-bit.x86_64
/root/CyberBackup_18.5_64-bit.x86_64 -a -i BackupAndRecoveryAgent,StorageServer
Регистрацию выполните после активации сервера и добавления irpoadmin в UI и PAM (ниже). Для роли узла хранения дисковые снимки самого HQ-CLI не используются; предупреждения о SnapAPI/FileProtector HQ-CLI не означают отказ файлового хранения.
В Яндекс Браузере на HQ-CLI откройте http://192.168.100.2:9877:
- Войдите локальным
rootсервера управления. - В «Настройки → Лицензии» нажмите «Запустить пробную версию» и подтвердите. Ожидается «Кибер Бэкап 18 Расширенный», а не 17. На эталоне срок до 02.11.2026; новый период определяется датой штатной активации и условиями производителя.
- В «Настройки → Учётные записи» переименуйте организацию в
irpo. - «Добавить учётную запись → Локальная машина»: найдите
irpoadmin, нажмите плюс в строке, выберите «Администратор», затем «Добавить». Выделение строки само по себе пользователя не добавляет.
На Альт PAM Кибер Бэкап дополнительно разрешает вход только пользователям из /etc/security/acronisagent.conf. После добавления роли под root разрешите требуемую учётную запись, не отключая фильтрацию:
grep -qxF irpoadmin /etc/security/acronisagent.conf || echo irpoadmin >> /etc/security/acronisagent.conf
chmod 644 /etc/security/acronisagent.conf
Выйдите из консоли и войдите как irpoadmin. На эталоне проверены вход с чистыми cookies и доступ к административному управлению учётными записями. На HQ-CLI зарегистрируйте обе службы (пароль будет виден в командной строке, это допустимо только для изолированного учебного стенда):
for service in mms asn; do
/usr/lib/Acronis/RegisterAgentTool/RegisterAgent -o register \
-a 192.168.100.2 -u irpoadmin -p 'P@ssw0rd' -s "$service"
done
Ожидается Success, HTTP 200. В «Настройки → Узлы хранения» выберите HQ-CLI, «Добавить хранилище»: имя irpo-backup, путь /backup.
План /etc¶
«Устройства → HQ-SRV → Включить защиту»: выберите «Файлы/папки», в источнике отметьте флажок каталога /etc со всеми подкаталогами. Назначение — irpo-backup; при запросе учётных данных укажите локального администратора HQ-CLI. Сохраните план и запустите полное копирование.
Проверка на HQ-SRV:
acrocmd list plans --output=raw
acrocmd list tasks --output=raw
acrocmd list archives --loc=bsp://hq-cli.au-team.irpo/irpo-backup \
--credentials=root,P@ssw0rd --output=raw
Статус задания должен быть succeeded. Восстановите /etc/hostname из полученного архива в отдельный каталог /root/restore-check; сравните с оригиналом. На эталоне такая проверка выполнена успешно.
Историческая диагностика нативного MySQL/MariaDB (не обязательный шаг)¶
У 17.4 есть существенная особенность: штатное копирование MySQL/MariaDB выполняется в составе всей машины с поддержкой приложений. Восстановление MySQL из управляемого хранилища не поддерживается (документация производителя).
Для диагностики на том же HQ-CLI был выделен /backup/mysql, опубликованный по NFS только для HQ-SRV, и смонтирован в /mnt/mysql-backup. Для нового прохождения не создавайте этот обратный NFS: оба действующих плана используют управляемое irpo-backup.
Нативный тестовый план использовал «Вся машина», переключатель MySQL/MariaDB и /mnt/mysql-backup. Дисковое задание завершилось успешно, но база не появилась в вариантах восстановления. Установленная MariaDB — 12.3.3, её поддержку выбранным агентом не удалось подтвердить.
Особенность Альт: MariaDB исходно работает в chroot, сообщая агенту пути /db/, /mysql.sock. Для корректного представления путей вне chroot выполнена настройка module3-mysql-compat.sh: предварительный SQL-дамп, control mysqld-chroot disabled, перезапуск и проверка приложения. Физический каталог данных остаётся /var/lib/mysql/db.
Проверенный вариант: логическое копирование webdb¶
На HQ-SRV создайте предварительную команду:
install -d -m 700 /var/backups/webdb
cat > /usr/local/sbin/exam-backup-webdb <<'EOF'
#!/bin/bash
set -euo pipefail
unset LD_LIBRARY_PATH LD_PRELOAD
export PATH=/usr/sbin:/usr/bin:/sbin:/bin HOME=/root
umask 077
tmp=$(mktemp /var/backups/webdb/webdb.sql.XXXXXX)
trap 'rm -f "$tmp"' EXIT
mariadb-dump --single-transaction --routines --events --triggers --hex-blob webdb > "$tmp"
test -s "$tmp"
mv "$tmp" /var/backups/webdb/webdb.sql
EOF
chmod 700 /usr/local/sbin/exam-backup-webdb
/usr/local/sbin/exam-backup-webdb
Согласованный SQL-дамп записывается атомарно. Каталог — 0700, файл — 0600. В данном приложении таблица InnoDB; при наличии MyISAM требуется дополнительное обеспечение согласованности.
В плане HQ-SRV MySQL webdb выберите «Файлы/папки» → /var/backups/webdb/, назначение irpo-backup. В «Параметры резервного копирования → Команды до или после» включите команду до:
- программа
/usr/local/sbin/exam-backup-webdb; - рабочий каталог
/root; - прерывать копирование при ошибке команды.
Скрипт очищает LD_LIBRARY_PATH и LD_PRELOAD: иначе агент передаёт свои устаревшие библиотеки, и mariadb-dump выдаёт ошибку GLIBCXX_3.4.29 not found. Сохраните план, запустите полную копию и дождитесь succeeded.
Из полученного файлового архива восстановите /var/backups/webdb/webdb.sql в /root/restore-webdb, а не поверх рабочей базы:
acrocmd list archives --loc=bsp://hq-cli.au-team.irpo/irpo-backup \
--credentials=root,P@ssw0rd --output=raw
read -r -p 'Имя архива плана webdb из списка: ' ARCHIVE
mkdir -p /root/restore-webdb
acrocmd recover file --loc=bsp://hq-cli.au-team.irpo/irpo-backup \
--credentials=root,P@ssw0rd --arc="$ARCHIVE" \
--file=/var/backups/webdb/webdb.sql --target=/root/restore-webdb --overwrite=never
cmp /var/backups/webdb/webdb.sql /root/restore-webdb/webdb.sql
mariadb -e 'CREATE DATABASE webdb_restore_check'
mariadb webdb_restore_check < /root/restore-webdb/webdb.sql
mariadb -N -e 'SELECT * FROM webdb_restore_check.employees'
На эталоне дамп совпал побайтово, таблица восстановилась с записью DemoTest. Это логическое копирование MySQL, не нативное восстановление средствами MySQL-агента; способ явно укажите в отчёте и согласуйте для экзамена. Старый дисковый архив и тестовый NFS-каталог сохранены для диагностики.
Имя архива определяйте по сведениям плана/точки восстановления в консоли: время создания архива может остаться старым после новых копий, а похожие имена принадлежат разным планам. Для повторного теста используйте новый каталог и новое имя БД; overwrite=never намеренно не заменяет уже восстановленные файлы. После изменения рабочей базы сравнивайте её состояние на момент копии, а не произвольно более поздние данные.
Защита от шифровальщиков и версия 18¶
Документация 17.4 ограничивает Active Protection ОС Windows. Для стенда полностью на Альт используется версия 18: драйвер file_protector на HQ-SRV с ядром 6.12 успешно собрался. После тестового обновления 17 → 18 пробная лицензия 17 сохранилась, но не разрешила новые операции версии 18. Поэтому инструкция выше начинается с чистой установки.
Владелец предоставил официальный дистрибутив 18.5.40801 из личного кабинета. Чистая установка сервера управления показала «Запустить пробную версию»: штатно активирована «Кибер Бэкап 18 Расширенный» до 02.11.2026, отдельный ключ не нужен. Начинать новый стенд следует сразу с 18.5, а не с обновления пробной версии 17.
В «Планы → Создать план» добавьте HQ-SRV, включите Active Protection с действием «Отменить изменения, используя кэш». Для отдельного плана защиты отключите резервное копирование. Сохраните как HQ-SRV Active Protection; два плана копирования остаются отдельными. На эталоне подтверждены применённая enabled-политика, RansomwareProtectionEnabled=true, действие AlertTerminateRecover, загруженный file_protector и работающая active-protection.service. Разрушительный тест шифровальщика не выполнялся.
После чистой установки заново добавьте irpoadmin, переименуйте организацию и зарегистрируйте HQ-CLI. Агент/узел хранения регистрируется штатной утилитой /usr/lib/Acronis/RegisterAgentTool/RegisterAgent с -o register -a 192.168.100.2, отдельно с -s mms и -s asn; используйте действующую административную учётную запись. Ранее созданный узел сохранил управляемое хранилище и архивы: не создавайте второе хранилище поверх того же /backup, если консоль сообщает, что оно уже подключено.
Планы версии 17 после чистой установки 18 в эталоне воссозданы через интерфейс. Экспорт acrocmd export plan не подошёл для импорта в новую консоль; предварительные снимки и архив настроек сохранены. Оба новых задания проверены: succeeded, hostname и SQL-дамп восстановлены с совпадающим содержимым, база webdb_restore18_check содержит исходную запись DemoTest.
Приёмка резервного копирования¶
- Две зарегистрированные машины, организация
irpo, администраторirpoadmin. - Два плана, успешные задания, файлы на HQ-CLI.
- Восстановление
/etc/hostnameв отдельный каталог с совпадающим содержимым. - Восстановление
webdbпод другим именем с проверкой таблицыemployees. - Проверка фактической доступности Active Protection на выбранной версии/ОС: наличие продукта само по себе не означает включённую защиту от шифровальщиков.
11. Завершение и отчёт¶
Запишите параметры IPsec и мониторинга, добавьте подтверждения из графического сеанса и результаты остальных проверок. Имя файла: ФамилияУчастникаМодуль3. Правила оформления и состав разделов — в подготовке отчёта.
Перед выключением комплекта остановите задания резервного копирования и размонтируйте /mnt/mysql-backup на HQ-SRV: теперь HQ-SRV также является NFS-клиентом HQ-CLI. Затем выключайте HQ-CLI перед HQ-SRV, чтобы корректно завершить исходное NFS-монтирование /mnt/nfs.
После запуска повторите проверки. Снимок module3-complete создаётся только после закрытия всех незавершённых пунктов.