final
dns-nameserver 192.168.10.2 8.8.8.8
Настройка PAT (ISP, HQ-RTR, BR-RTR)
apt install -y iptables-persistent
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
iptables-save > /etc/iptables/rules.v4
sysctl -p
В устройствах, которые будут получать интернет от этого устройства, надо зайти в файл nano /etc/resolv.conf и написать там nameserver 8.8.8.8
Создание локальных учетных записей на серверах (HQ-SRV, BR-SRV) и роутерах (HQ-RTR, BR-RTR) (1.3)
useradd sshuser -m -p $(openssl passwd -6 "P@ssw0rd") -s /bin/bash -u 2014 -G sudo
sshuser ALL=(ALL) NOPASSWD:ALL
useradd -m net_admin && echo "net_admin:P@ssword" | chpasswd
nano /etc/sudoers net_admin ALL=(ALL) NOPASSWD:ALL
VLAN
echo "8021q" >> /etc/modules && modprobe 8021q
Настройка SSH на HQ-SRV и BR-SRV
echo "Authorized access only" > /etc/issue.net
Проверка ssh sshuser@(ip/имя) -p 2014
Туннель GREна HQ-RTRи BR-RTR
/usr/sbin/iptables -A INPUT -p gre -j ACCEPT
Проверка после того как прописала, введи на HQ-RTR: ip a show gre30
Настройка динамической маршрутизации на HQ-RTR и BR-RTR
nano /etc/frr/daemons там ospfd yes
network 192.168.10.0/27 area 0
network 192.168.10.0/28 area 0
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 1
network 192.168.11.0/28 area 0
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 1
DHCP на HQ-RTR
nano /etc/default/isc-dhcp-server
строка INTERFACESv4="" ens37.214
subnet 192.168.10.32 netmask 255.255.255.240 {
range 192.168.10.34 192.168.10.46;
option domain-name-servers 192.168.10.2, 8.8.8.8;
option domain-name "au-team.irpo";
option broadcast-address 192.168.10.47;
Далее запускаем dhcp командой:
systemctl enable isc-dhcp-server
systemctl restart isc-dhcp-server
DNS на HQ-SRV
cp /etc/bind/db.empty /var/lib/bind/db.au-team.irpo
cp /etc/bind/db.127 /var/lib/bind/db.192.168.10
nano /etc/bind/named.conf.options
nano /etc/bind/named.conf.local
file "/var/lib/bind/db.au-team.irpo";
zone "10.168.192.in-addr.arpa" {
file "/var/lib/bind/db.192.168.10";
nano /var/lib/bind/db.au-team.irpo
В файле поменять на hq-srv.au-team.irpo. рядом должно быть root.au-team.irpo.
Снизу все должно выглядеть вот так:
; SRV records for Active Directory Domain Controller
_ldap._tcp IN SRV 0 0 389 hq-srv.au-team.irpo.
_kerberos._tcp IN SRV 0 0 88 hq-srv.au-team.irpo.
_kerberos._udp IN SRV 0 0 88 hq-srv.au-team.irpo.
_kpasswd._tcp IN SRV 0 0 464 hq-srv.au-team.irpo.
_kpasswd._udp IN SRV 0 0 464 hq-srv.au-team.irpo.
_ldap._tcp.dc._msdcs IN SRV 0 0 389 hq-srv.au-team.irpo.
В файле nano /var/lib/bind/db.192.168.10
Меняем на hq-srv.au-team.irpo. рядом должно быть root.au-team.irpo.
34 IN PTR hq-cli.au-team.irpo.
named-checkzone au-team.irpo /var/lib/bind/db.au-team.irpo
показывает точные ошибки: named-checkconf -z
Потом всего этого systemctl restart bind9
Задание 2 RAID на HQ-SRV
Добавить 2 жестких диска по 1 гб
проверка названия дисков lsblk типо просто как называется
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
Если спросит "Continue creating array?", пиши y и жми Enter.
mkfs.ext4 /dev/md0
mkdir /data
mount /dev/md0 /data
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u
/dev/md0 /data ext4 defaults 0 2
Должно быть написано: md0 : active raid1 и две буквы [UU] (значит, оба диска работают).
Задание 3 NFS-сервер на HQ-SRV и автоматическое монтирование на HQ-CLI
apt install nfs-kernel-server -y
mkdir -p /srv/nfs/share
chown nobody:nogroup /srv/nfs/share
chmod 777 /srv/nfs/share
/srv/nfs/share 192.168.10.0/24(rw,sync,no_subtree_check)
exportfs -a
systemctl restart nfs-kernel-server
На HQ-CLI
apt update
apt install nfs-common -y
mkdir -p /mnt/nfs_share
192.168.10.2:/srv/nfs/share /mnt/nfs_share nfs defaults,_netdev 0 0
mount -a
Задание 4 Служба сетевого времени
apt install chrony (HQ-SRV, HQ-CLI, BR-RTR, BRSRV)
nano /etc/chrony/chrony.conf закомментировать строчку с пул
server 127.0.0.1 iburst prefer
На «клиентах» ( HQ-CLI, BR-RTR, BRSRV)
Server 172.16.70.1 iburst prefer ( это айпи асп)
systemctl enable chrony
после чего на isp проверяем клиентов chronyc clients
На клиентах прописываем chronyc sources -v
пункт leap status должен быть normal, время должно быть как на hq-r (время НЕ мск, лондонское)
Задание 5. Ansible на BR-SRV
apt-get install ansible sshpass -y
inventory = /etc/ansible/hosts
# Используем внутренние адреса шлюзов
HQ-RTR ansible_host=192.168.10.1 ansible_user=net_admin
BR-RTR ansible_host=192.168.11.1 ansible_user=net_admin
HQ-SRV ansible_host=192.168.10.2 ansible_user=sshuser
BR-SRV ansible_host=192.168.11.2 ansible_user=sshuser
HQ-CLI ansible_host=192.168.10.34 ansible_user=sshuser
2. Подготовка управляемых узлов (HQ-SRV, HQ-CLI, HQ-RTR, BR-RTR)
apt-get install openssh-server python3 -y
если он не поднял клиента, то на br-rtr
ip route add 192.168.10.0/27 via 10.10.10.1
ip route add 192.168.10.32/28 via 10.10.10.1
ip route add 192.168.11.0/28 via 10.10.10.2
если вдруг он не поднял сервер, то нужно проверить какой порт слушает для этого
далее проверить порт в конфиге ssh и если все четко то systemctl restart ssh
Задание 6. Веб приложение в docker на сервере BR-SRV
curl -fsSL https://get.docker.com -o get-docker.sh
curl -fsSL https://get.docker.com -o get-docker.sh
mount /dev/sr0 /mnt/additional
sudo sh get-docker.sh
docker load -i /mnt/additional/docker/mariadb_latest.tar
docker load -i /mnt/additional/docker/site_latest.tar
MYSQL_ROOT_PASSWORD: P@ssw0rd (6)
docker compose up -d или docker compose -f /opt/testapp/docker-compose.yml up -d
если не вышло docker compose -f /opt/testapp/docker-compose.yml up -d
На клиенте (HQ-CLI) еще раз обнови страницу в браузере или введи curl -v 192.168.11.2:8080
ip route add 192.168.10.0/27 via 10.10.10.1
ip route add 192.168.10.32/28 via 10.10.10.1
2. На HQ-RTR добавьте обратный маршрут к сети BR-SRV:
ip route add 192.168.11.0/28 via 10.10.10.2
3. Проверьте маршруты на BR-RTR:
ip route show | grep 192.168.10
192.168.10.0/27 via 10.10.10.1 dev gre30
192.168.10.32/28 via 10.10.10.1 dev gre30
4. Проверьте маршруты на HQ-RTR:
ip route show | grep 192.168.11
192.168.11.0/28 via 10.10.10.2 dev gre30
5. Теперь с HQ-CLI проверьте доступность BR-SRV:
ping 192.168.11.2
Если пинг пошёл — открывайте в браузере:
http://192.168.11.2:8080
Задание 7. Разверните веб приложение на сервере HQ-SRV:
apt install -y apache2 mariadb-server php libapache2-mod-php php-mysql php-curl php-json
ls -laR /mnt/ ( в случае если дальше будет ошибки, можно проверить путь)
cp /mnt/web/index.php /var/www/html/
cp /mnt/web/logo.png /var/www/html/
chmod 644 /var/www/html/index.php
sudo nano /var/www/html/index.php
CREATE DATABASE IF NOT EXISTS webdb;
DROP USER IF EXISTS 'web'@'localhost';
CREATE USER 'web'@'localhost' IDENTIFIED BY 'P@sswOrd';
GRANT ALL PRIVILEGES ON webdb.* TO 'web'@'localhost';
mysql -u root webdb < /mnt/web/dump.sql
mysql -u root -e "USE webdb; SHOW TABLES;"
Проверка входа пользователя web (опционально):
mysql -u web -p -e "SELECT 1;"
http://IP-адрес-вашего-сервера/index.php
8. Если снова ошибка 500 — смотрите логи:
tail -30 /var/log/apache2/error.log
ALTER USER 'web'@'localhost' IDENTIFIED BY 'P@ssw0rd';
FLUSH PRIVILEGES;
EXIT;
Потом systemctl restart apache2
И на клиенте: http://hq-srv.au-team.irpo
Задание 8 Cтатическую трансляцию портов
iptables -t nat -A PREROUTING -p tcp -d 172.16.70.2 --dport 8080 -j DNAT --to-destination 192.168.10.2:80
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A FORWARD -p tcp -d 192.168.10.2 --dport 80 -j ACCEPT
iptables-save > /etc/iptables/rules.v4
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 8080 -j DNAT --to 192.168.11.2:8080
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 2026 -j DNAT --to 192.168.11.2:2014
iptables -t nat -A POSTROUTING -d 192.168.11.2 -j MASQUERADE
iptables-save > /etc/iptables/rules.v4
Задание 9/10 Настройте веб-сервер nginx как обратный прокси-сервер на ISP и аутентификация на web
sudo apt update
sudo apt install -y nginx apache2-utils
sudo htpasswd -bc /etc/nginx/.htpasswd WEB P@ssw0rd
sudo chmod 640 /etc/nginx/.htpasswd
sudo chown root:www-data /etc/nginx/.htpasswd
sudo rm -f /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/sites-available/proxy.conf
server {listen 80;
server_name web.au-team.irpo;
location / {# Включаем веб-аутентификацию ТОЛЬКО здесь
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
# Проксируем запрос на внешний IP роутера HQ-RTR и порт проброса 8080
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;
}
}
server {listen 80;
server_name docker.au-team.irpo;
location / {# Здесь строк auth_basic НЕТ, сайт откроется свободно
# Проксируем запрос на внешний IP роутера BR-RTR и порт проброса 8080
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;
}
}
sudo ln -sf /etc/nginx/sites-available/proxy.conf /etc/nginx/sites-enabled/
sudo nginx -t
Если команда пишет syntax is ok и test is successful, то перезапускаем веб-
sudo systemctl restart nginx
172.16.70.1 web.au-team.irpo docker.au-team.irpo
🏁 ИТОГОВАЯ ПРОВЕРКА В БРАУЗЕРЕ НА КЛИЕНТЕ
1. Открываешь на Клиенте адрес http://web.au-team.irpo
o Браузер сразу запрашивает логин и пароль.
o Открывается твое приложение с сервера HQ-SRV.
2. Открываешь на Клиенте адрес http://docker.au-team.irpo
Задание 11 Яндекс Браузер
В лисе написать скачать яндексбраузер для дебиан 12, скачаваем, переходим в папку загрузки. Пкм нажимаем открыть с помощью и там будет установка приложений. ВСЕЕЕЕ
3 ЗАДАНИЕ гре с шифрованием HQ-RTR и BR-RTR:
# Удалить Libreswan, если был (конфликтует с StrongSwan)
systemctl stop ipsec 2>/dev/null
apt remove --purge libreswan -y 2>/dev/null
apt install strongswan strongswan-starter libcharon-extra-plugins -y
# Убедиться, что сервис существует
ls /lib/systemd/system/ | grep strongswan
# Должен быть strongswan-starter.service
cat > /etc/ipsec.conf << 'EOF'
На BR-RTR (172.16.80.2) — зеркально
cat > /etc/ipsec.conf << 'EOF'
Шаг 2. Настройка `/etc/ipsec.secrets` (одинаково на обоих)
echo '172.16.1.2 172.16.80.2 : PSK "P@ssw0rd123"' > /etc/ipsec.secrets
systemctl enable strongswan-starter
systemctl restart strongswan-starter
systemctl status strongswan-starter
# На ОДНОМ из роутеров (например, HQ-RTR)
# Статус соединения (должен быть ESTABLISHED)
# Проверить политики шифрования
Security Associations (1 up, 0 connecting):
vtysh -c "show ip ospf neighbor"
Security Associations (1 up, 0 connecting):
gre-psk[1]: ESTABLISHED ... AES_CBC_256/HMAC_SHA2_256_128
Как проверить работу для отчета:
sudo ipsec status
Ты должен увидеть, что соединение gre-tunnel установлено (ESTABLISHED).
1. Зайди в динамическую маршрутизацию:
sudo vtysh -c "show ip ospf neighbor"
ЗАДАНИЕ 5. Настройте принт-сервер cups на сервере HQ-SRV:
sudo cupsctl --share-printers --remote-any
http://192.168.10.2:631 (на этом сайте добавляем любой принтер, там есть пункт разрешить совместный доступ, там ставим галку, после того как добавили в настройках дебиана находим наш принтер и ставим галку "использовать принтер по умолчанию" )
Потом вводим логин/пароль (user/root)
В настройках потом выбираем раздел принтеры
Нажимаем добавить принтер и находим свой
lpstat -d (проверяет какой принтер по умолчанию)
6 задание Настройка центрального сервера логов (rsyslog) HQ-SRV
sudo apt install -y rsyslog logrotate tcpdump
Раскомментируй строки для UDP (ВНИМАНИЕ: UDP, а не TCP!)
input(type="imudp" port="514")
$template RemoteLogs,"/opt/%HOSTNAME%/%PROGRAMNAME%.log"
# Фильтр: логи из сети (не от себя) уровнем warning и выше
if ($fromhost-ip != '127.0.0.1' and $syslogseverity >= 4) then {
action(type="omfile" dynaFile="RemoteLogs")
sudo rsyslogd -f /etc/rsyslog.conf -N1
sudo systemctl restart rsyslog
ШАГ 3. Настройка клиентов (HQ-RTR, BR-RTR, BR-SRV)
sudo systemctl restart rsyslog
Настройка ротации логов на сервере (HQ-SRV)
sudo nano /etc/logrotate.d/remote-logs
/usr/lib/rsyslog/rsyslog-rotate
sudo logrotate -d /etc/logrotate.d/remote-logs
5.1. На клиенте (например, BR-SRV) отправь тест
logger -p daemon.warning "TEST_WARNING_$(date)"
5.2. На сервере проверь результат
find /opt -type f -name "*.log" -exec cat {} \;
## Типичные ошибки и их решение
| Ошибка | Причина | Решение |
|--------|---------|---------|
| `cat: '/opt/BR-SRV/*.log': Нет такого файла` | Логи не пишутся | См. проверки ниже |
| В `ss -tulnp` только `tcp` порт 514 | Включен TCP вместо UDP | Раскомментировать `imudp`, а не `imtcp` |
| `syntax error on token '*'` | Использован `*.warning` в `if` | Заменить на `$syslogseverity >= 4` |
| `tcpdump: command not found` | Не установлен tcpdump | `sudo apt install tcpdump` |
| Пакеты видны в tcpdump, но нет в `/opt/` | Ошибка в конфиге rsyslog | Проверить `sudo rsyslogd -f /etc/rsyslog.conf -N1` |
## Полезные команды диагностики
# Проверка, слушает ли сервер UDP 514
# Просмотр пакетов в реальном времени (на сервере)
sudo tcpdump -i any port 514 -n
# Проверка синтаксиса конфига rsyslog
sudo rsyslogd -f /etc/rsyslog.conf -N1
sudo journalctl -u rsyslog -n 50 --no-pager | grep -i error
# Проверка отправки с клиента напрямую через netcat
echo "TEST" | nc -u <IP_сервера> 514
# 📋 МЕТОДИЧКА: Задание 3.8 — Инвентаризация машин через Ansible
Настроить Ansible на сервере **BR-SRV** для сбора информации (имя хоста и IP-адрес) с машин **HQ-SRV** и **HQ-CLI**. Результат сохраняется в YAML-файлы в директории `/etc/ansible/PC-INFO/`.
### Шаг 1. Убедись, что ты на правильной машине
**Важно!** Все действия выполняются на **BR-SRV**, а не на BR-RTR!
Если ты на BR-RTR — выйди и подключись к BR-SRV:
ssh -p 2014 sshuser@192.168.11.2
### Шаг 2. Проверь / создай файл инвентаря
Если файла нет или он пустой — создай:
192.168.10.2 ansible_user=sshuser
192.168.10.34 ansible_user=sshuser
### Шаг 3. Проверь подключение к хостам
ssh -p 2014 sshuser@192.168.10.34
Если пинг не идёт — добавь маршруты на **BR-RTR**:
ip route add 192.168.10.0/27 via 10.10.10.1
ip route add 192.168.10.32/28 via 10.10.10.1
nano /etc/ansible/get_hostname_address.yml
- name: Инвентаризация машин(0 пробелов)
hosts: HQ-SRV, HQ-CLI(2 пробела)
- name: Получение данных с хоста(4 пробела)
delegate_to: localhost(6 пробелов)
dest: "/etc/ansible/PC-INFO/{{ ansible_hostname }}.yml"(8 пробелов)
Hostname: {{ ansible_hostname }}(10 пробелов)
IP_Address: {{ ansible_default_ipv4_address }}(10 пробелов)```
ansible-playbook get_hostname_address.yml
#### ✅ Ожидаемый успешный вывод:
PLAY [Инвентаризация машин] ****************************************************
TASK [Gathering Facts] *********************************************************
TASK [Получение данных с хоста] ************************************************
changed: [HQ-SRV -> localhost]
changed: [HQ-CLI -> localhost]
PLAY RECAP *********************************************************************
HQ-CLI : ok=2 changed=1 unreachable=0 failed=0
HQ-SRV : ok=2 changed=1 unreachable=0 failed=0
cat /etc/ansible/PC-INFO/hq-srv.yml
cat /etc/ansible/PC-INFO/hq-cli.yml
Хорошо, давай настроим **Fail2Ban** на **HQ-SRV** под твои параметры, согласно требованию задания 9 из 3 модуля.
## Настройка Fail2Ban на HQ-SRV
apt install fail2ban iptables -y
2. Создай конфигурационный файл
nano /etc/fail2ban/jail.d/sshd.local
3. Вставь содержимое (с учётом порта 2014):
| `- File list: /var/log/auth.log
6. Проверь, что Fail2Ban слушает порт 2014
### 7. Проверка работы (тест блокировки)
С **другого устройства** (например, с HQ-CLI или BR-SRV) выполни несколько неправильных SSH-подключений:
# 4 раза с неправильным паролем
ssh -p 2014 sshuser@192.168.10.2
# Введи неправильный пароль 4 раза
После 3 неудачных попыток проверить на HQ-SRV
fail2ban-client set sshd unbanip 192.168.x.x