Модуль 1
ISP:
1. Назначение имени компьютера (Hostname)
# Имя хоста
# https://www.altlinux.org/Настройка_сети
hostnamectl set-hostname isp.au-team.irpo; exec bash
# Интерфейсы
Это первая и очень важная строка, которая идентифицирует машину в сети.
- hostnamectl: Утилита из набора systemd, которая управляет именем хоста в современных дистрибутивах Linux. Она записывает красивое (pretty), статическое и transient-имена.
- set-hostname isp.au-team.irpo: Устанавливает полное доменное имя (FQDN). Расшифровка имени, вероятно, соответствует заданию (ISP = провайдер, AU-TEAM — команда/организация, IRPO — полигон/домен).
- exec bash: Эта часть хитрая. hostnamectl меняет имя системы, но текущая сессия терминала «помнит» старое имя в приглашении командной строки. Команда exec bash заменяет текущий процесс оболочки новым, мгновенно обновляя приглашение без необходимости перезаходить в систему.
Настройка сетевых интерфейсов в ALT Linux
В ALT Linux сетевая конфигурация классически хранится не в одном файле, а в директориях для каждого интерфейса внутри /etc/net/ifaces/.
cd /etc/net/ifaces
mkdir enp7s2 enp7s3
echo TYPE=eth > enp7s2/options
echo TYPE=eth > enp7s3/options
echo 172.16.1.1/28 > enp7s2/ipv4address #ip по заданию
echo 172.16.2.1/28 > enp7s3/ipv4address
systemctl restart network
- mkdir enp7s2 enp7s3: Создаются папки с именами, соответствующими сетевым адаптерам (enp7s2 и enp7s3). Названия вида enpXsY означают расположение устройства на шине PCI (Slot 7, Functions 2 и 3).
- options: В файле указывается тип интерфейса. TYPE=eth означает Ethernet.
- ipv4address: Файл содержит статический IP-адрес с префиксом маски подсети.
172.16.1.1/28: Маска /28 означает 255.255.255.240. Это дает 14 полезных адресов для хостов. Адрес 1 назначен шлюзу.
172.16.2.1/28: Аналогично для второй подсети. - systemctl restart network: Перезапуск сетевой службы, чтобы применить новые настройки (поднимет созданные интерфейсы).
Настройка трансляции адресов (NAT) и Firewall
Это самый критичный блок. Он позволяет внутренней сети с "серыми" адресами (172.16.x.x) выходить в интернет через внешний интерфейс.
# NAT
# https://habr.com/ru/sandbox/274318/
nano /etc/net/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p /etc/net/sysctl.conf
iptables -t nat -A POSTROUTING -o enp7s1 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables
systemctl enable --now iptables
- net.ipv4.ip_forward = 1: По умолчанию ядро Linux, получив пакет, предназначенный не ему, отбрасывает его. Параметр ip_forward превращает машину в маршрутизатор. Пакет, пришедший на enp7s2 и адресованный в интернет, будет отправлен на дальнейшую обработку, а не в корзину.
- iptables -t nat -A POSTROUTING -o enp7s1 -j MASQUERADE: Главное правило жизни сети.
-t nat: Работаем с таблицей трансляции адресов.
-A POSTROUTING: Добавляем правило в цепочку, которая обрабатывает пакеты непосредственно перед выходом из сетевой карты.
-o enp7s1: Применяем правило только к пакетам, выходящим через интерфейс enp7s1 (вероятно, это внешний порт, смотрящий в сторону провайдера).
-j MASQUERADE (Маскарадинг): Заменяет исходный IP-адрес пакета (например, 172.16.1.10) на адрес внешнего интерфейса шлюза (enp7s1). Когда ответ придет обратно, шлюз вспомнит, какому внутреннему компьютеру его переслать. - iptables-save > /etc/sysconfig/iptables: Сохраняет все текущие правила файрвола в файл. Без этого после перезагрузки правило маскарадинга пропадет.
- systemctl enable --now iptables: Включает службу iptables в автозагрузку и запускает её прямо сейчас. Служба при старте как раз восстанавливает правила из сохраненного файла.
Зачем это нужно: Обеспечить доступ в интернет для компьютеров из подсетей 172.16.1.0/28 и 172.16.2.0/28, не имея "белых" IP-адресов на каждом из них.
4. Установка часового пояса
# Часовой пояс
apt-get install tzdata -y
timedatectl set-timezone Europe/Moscow
timedatectl status
Зачем это нужно: Чтобы логи записывались с правильным местным временем. Если время на сервере будет неверным, можно пропустить инцидент безопасности или запутаться при анализе логов (например, в 3 часа ночи по UTC, когда в Москве уже 6 утра).
HQ-RTR:
1. Имя хоста
# Имя хоста:
hostnamectl hostname hq-rtr.au-team.irpo; exec bash
# Интерфейсы:
2. Сетевые интерфейсы и VLAN
Это ключевой раздел, реализующий сегментацию сети.
cd /etc/net/ifaces
mkdir enp7s2 enp7s2.100 enp7s2.200 enp7s2.999 gre1 #vlan по заданию
- enp7s2: Базовый физический интерфейс (trunk-порт).
- enp7s2.100: Суб-интерфейс для VLAN 100 (сеть управления).
- enp7s2.200: Суб-интерфейс для VLAN 200 (пользовательская сеть).
- enp7s2.999: Суб-интерфейс для VLAN 999 (служебная сеть, часто для телефонии или WiFi).
- gre1: Интерфейс для туннеля GRE.
Конфигурация интерфейсов:
echo TYPE=eth > enp7s1/options
echo TYPE=eth > enp7s2/options
echo TYPE=vlan HOST=enp7s2 VID=100 > enp7s2.100/options
echo TYPE=vlan HOST=enp7s2 VID=200 > enp7s2.200/options
echo TYPE=vlan HOST=enp7s2 VID=999 > enp7s2.999/options
- TYPE=vlan: Указывает, что это виртуальный VLAN-интерфейс.
- HOST=enp7s2: Привязка к родительскому физическому интерфейсу.
- VID=100/200/999: Идентификатор VLAN (тег 802.1Q).
- Замечание: В выводе ошибка — enp7s1/options создается для уже существующего интерфейса, но это не страшно.
Назначение IP-адресов:
echo 172.16.1.2/28 > enp7s1/ipv4address
echo 192.168.100.1/29 > enp7s2.100/ipv4address #маски по заданию
echo 192.168.200.1/24 > enp7s2.200/ipv4address
echo 192.168.99.1/29 > enp7s2.999/ipv4address
Маршрут по умолчанию и DNS:
echo default via 172.16.1.1 > enp7s1/ipv4route
echo nameserver 8.8.8.8 > enp7s1/resolv.conf
- Весь трафик во внешние сети отправляется через шлюз провайдера 172.16.1.1 (ISP).
- Временно используется публичный DNS Google 8.8.8.8, пока не поднимется локальный сервер
3. GRE-туннель (HQ-RTR ↔ BR-RTR)
# GRE-туннель
https://www.altlinux.org/Strongswan#Создание_GRE-интерфейса_(RTR-1)
echo "TYPE=iptun
TUNTYPE=gre
TUNLOCAL=172.16.1.2
TUNREMOTE=172.16.2.2
TUNTTL=64
TUNOPTIONS='ttl 64'" > gre1/options
echo 192.168.255.1/30 > gre1/ipv4address
systemctl restart network
Разбор параметров:
- TYPE=iptun: IP-туннель.
- TUNTYPE=gre: Generic Routing Encapsulation — простой протокол туннелирования (без шифрования).
- TUNLOCAL=172.16.1.2: Локальная конечная точка туннеля (WAN-адрес HQ-RTR).
- TUNREMOTE=172.16.2.2: Удаленная конечная точка (WAN-адрес роутера в филиале — BR-RTR).
- TUNTTL=64: Time To Live для пакетов внутри туннеля.
- 192.168.255.1/30: Адрес на туннельном интерфейсе (маска /30 дает 2 хоста: .1 для HQ-RTR, .2 для BR-RTR).
Зачем это нужно: GRE-туннель соединяет главный офис и филиал через "интернет", создавая виртуальную выделенную линию (VPN без шифрования). Поверх него будет работать OSPF.
4. NAT и пересылка пакетов
# Настройка NAT
nano /etc/net/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p /etc/net/sysctl.conf
iptables -t nat -A POSTROUTING -o enp7s1 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables
systemctl enable --now iptables
Абсолютно идентично настройке на ISP. HQ-RTR также выпускает свои локальные сети (VLAN 100, 200, 999) в интернет через NAT.
5. Создание пользователя-администратора
# Пользователь net_admin
# https://stepik.org/lesson/2000243/step/1?unit=2028373
useradd -m net_admin #имя и пароль по заданию
passwd net_admin
usermod -aG wheel net_admin
echo "net_admin ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
- useradd -m: Создает пользователя и его домашнюю директорию /home/net_admin.
- passwd: Задает пароль (интерактивно).
- wheel: Группа администраторов в ALT Linux (аналог sudo).
- NOPASSWD:ALL: Разрешает выполнять любые команды через sudo без запроса пароля (это удобно для скриптов, но менее безопасно).
6. SSH-сервер
# SSH-сервер
apt-get install -y openssh-server
systemctl enable --now sshd
Установка и немедленный запуск OpenSSH-сервера для удаленного управления.
7. DHCP-сервер (ISC DHCP)
# DHCP-сервер
# https://www.altlinux.org/DhcpBinda
cd /etc/dhcp
cp dhcpd.conf.sample dhcpd.conf
nano dhcpd.conf
Анализ конфигурации:
ddns-update-style none;
subnet 192.168.200.0 netmask 255.255.255.0 {
option routers 192.168.200.1;
option subnet-mask 255.255.255.0;
option nis-domain "au-team.irpo";
option domain-name "au-team.irpo";
option domain-name-servers 192.168.100.2;
range dynamic-bootp 192.168.200.2 192.168.200.2;
default-lease-time 21600;
max-lease-time 43200;
}
Принимаем изменения
systemctl enable --now dhcpd
- Важная особенность: Диапазон 192.168.200.2 — 192.168.200.2. Это пул ровно на один адрес. По заданию, вероятно, требуется выдать адрес конкретной машине (например, для тестового клиента).
- DNS-сервер находится в VLAN 100 (192.168.100.2).
8. Часовой пояс
# Часовой пояс
apt-get install -y tzdata
timedatectl set-timezone Europe/Moscow
timedatectl status
Синхронизация времени с Москвой (UTC+3).
9. Динамическая маршрутизация (FRRouting / OSPF)
Это "мозг" сети. Вместо ручной прописывать статические маршруты в филиалы, HQ-RTR будет обмениваться маршрутами с другими роутерами автоматически.
# Динамическая маршрутизация OSPF
nano /etc/frr/daemons
ospfd=yes
systemctl enable --now frr
vtysh
Заходим в консоль управления FRR (аналог Cisco IOS):
conf t
router ospf
passive-interface default
network 192.168.100.0/29 area 0
network 192.168.200.0/24 area 0
network 192.168.99.0/29 area 0
network 192.168.255.0/30 area 0
exit
Также прописываем
interface gre1
no ip ospf passive
ip ospf authentication-key 1234
end
wr mem
exit
Разбор логики:
- passive-interface default: Мера безопасности. OSPF-приветствия не улетят в пользовательские порты, где могут сидеть посторонние.
- network: Говорим OSPF, какие сети анонсировать соседям.
- interface gre1: Включаем OSPF именно на туннеле в филиал.
- authentication-key 1234: Простой пароль, чтобы с нами по OSPF не подружился левый роутер.
10. Замена DNS на локальный
# Замена адреса DNS на локальный
cd /etc/net/ifaces
echo nameserver 192.168.100.2 > enp7s1/resolv.conf
echo nameserver 192.168.100.2 > enp7s2.100/resolv.conf
echo nameserver 192.168.100.2 > enp7s2.200/resolv.conf
echo nameserver 192.168.100.2 > enp7s2.999/resolv.conf
systemctl restart network
Перенаправляем все DNS-запросы с публичного 8.8.8.8 на внутренний сервер 192.168.100.2 (вероятно, это SRV-DNS в сети управления). После перезапуска сети роутер сам начнет ходить в локальный DNS.
HQ-SRV:
Это третья часть настройки сетевой инфраструктуры. Теперь мы конфигурируем HQ-SRV — центральный сервер штаб-квартиры, который будет выполнять роль DNS-сервера для всей организации.
Ниже — подробный разбор каждого блока команд.
# Имя хоста:
hostnamectl hostname hq-srv.au-team.irpo
exec bash
- hq-srv: Headquarters Server — сервер главного офиса.
- au-team.irpo: Домен организации.
- exec bash: Обновляет приглашение командной строки.
2. Сетевые интерфейсы
# Интерфейсы:
cd /etc/net/ifaces
mkdir enp7s1 enp7s1.100
echo TYPE=eth > enp7s1/options
echo TYPE=vlan HOST=enp7s1 VID=100 > enp7s1.100/options
echo 192.168.100.2/29 > enp7s1.100/ipv4address
echo default via 192.168.100.1 > enp7s1.100/ipv4route
echo nameserver 8.8.8.8 > enp7s1.100/resolv.conf
systemctl restart network
Разбор конфигурации:
- mkdir enp7s1 enp7s1.100: Создаются две директории:
enp7s1 — физический интерфейс.
enp7s1.100 — виртуальный VLAN-интерфейс с тегом 100. - TYPE=eth: Физический интерфейс работает как обычный Ethernet (trunk-порт).
- TYPE=vlan HOST=enp7s1 VID=100: Суб-интерфейс принадлежит VLAN 100 (сеть управления).
- 192.168.100.2/29: IP-адрес сервера в сети управления.
Маска /29 (255.255.255.248) — доступно 6 адресов для хостов.
.1 — шлюз (HQ-RTR).
.2 — этот сервер (HQ-SRV).
.3-.6 — резерв для других устройств управления. - default via 192.168.100.1: Весь трафик во внешние сети идет через HQ-RTR.
- nameserver 8.8.8.8: Временно используется Google DNS (пока свой DNS-сервер не настроен).
Зачем серверу VLAN: Сервер находится в изолированной сети управления (VLAN 100), отдельно от пользователей (VLAN 200) и служебных устройств (VLAN 999). Это повышает безопасность.
3. Настройка DNS-сервера (Dnsmasq)
Вместо тяжелого BIND используется легковесный Dnsmasq — идеальный выбор для небольшой организации.
# DNS-сервер
# https://www.altlinux.org/DhcpBind
nano /etc/dnsmasq.conf
Прописываем
listen-address=192.168.100.2
server=8.8.8.8
# HQ-RTR
address=/hq-rtr.au-team.irpo/172.16.1.2
ptr-record=2.1.16.172.in-addr.arpa,hq-rtr.au-team.irpo
# BR-RTR
address=/br-rtr.au-team.irpo/172.16.2.2
# HQ-SRV
address=/hq-srv.au-team.irpo/192.168.100.2
ptr-record=2.100.168.192.in-addr.arpa,hq-srv.au-team.irpo
# HQ-CLI
address=/hq-cli.au-team.irpo/192.168.200.2
ptr-record=2.200.168.192.in-addr.arpa,hq-cli.au-team.irpo
# BR-SRV
address=/br-srv.au-team.irpo/192.168.3.2
# ISP
address=/docker.au-team.irpo/172.16.1.1
address=/web.au-team.irpo/172.16.2.1
После настройки:
systemctl enable --now dnsmasq
systemctl restart network
1. Создание пользователя sshuser
# Пользователь sshuser
# https://stepik.org/lesson/2000243/step/1?unit=2028373
useradd -u 2026 -m sshuser #имя и пароль по заданию
passwd sshuser
usermod -aG wheel sshuser
echo "sshuser ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
Разбор каждой команды:
- useradd -u 2026 -m sshuser:
-u 2026: Принудительно устанавливает UID (User ID) равным 2026. Обычно UID присваиваются автоматически по порядку (1000, 1001...), но конкретное значение часто требуется заданием для унификации на всех хостах. В ALT Linux первая тысяча ID зарезервирована за системными пользователями.
-m: Создать домашнюю директорию /home/sshuser и скопировать туда шаблонные файлы окружения из /etc/skel/ (например, .bashrc, .profile).
sshuser: Логин, под которым администратор будет заходить удаленно. - passwd sshuser: Задание пароля. Команда выполнится интерактивно и попросит ввести пароль дважды. Важно не перепутать раскладку клавиатуры.
- usermod -aG wheel sshuser:
-aG wheel: Добавляет (append) пользователя в группу wheel, не удаляя его из основных групп. В ALT Linux группа wheel по умолчанию имеет право выполнять команды через sudo (это прописано в /etc/sudoers). - echo "sshuser ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers:
sshuser: Правило действует на этого пользователя.
ALL=(ALL:ALL): Может выполнять команды от любого пользователя и любой группы.
NOPASSWD:ALL: Самое главное — не будет запрашивать пароль при использовании sudo. Это удобно для скриптов автоматизации, но снижает безопасность (если злоумышленник попадет в sshuser, он сразу получит root).
2. Усиление безопасности SSH (Hardening)
Чтобы сервер не взломали подбором паролей, настройки OpenSSH меняются с дефолтных на более строгие.
# SSH-сервер
nano /etc/openssh/sshd_config
Прописываем
Port 2026
AllowUsers sshuser
MaxAuthTries 2
Banner /etc/openssh/banner.txt
3. Создание баннера
echo Authorized access only > /etc/openssh/banner.txt
systemctl enable --now sshd
Это юридическое предостережение. При попытке подключения злоумышленник увидит:
Authorized access only
С юридической точки зрения, после этого сообщения злоумышленник не может сказать "я не знал, что сюда нельзя". Дальнейшие попытки подбора пароля трактуются как несанкционированный доступ.
5. Часовой пояс
# Часовой пояс
timedatectl set-timezone Europe/Moscow
timedatectl status
Повторная проверка и установка часового пояса (стандартно для всех машин). Логи SSH будут писаться с правильной временной меткой.
Итоговая конфигурация безопасности HQ-SRV
ПараметрЗначениеЦельSSH Port2026Скрыться от массовых сканеровРазрешенный пользовательsshuser (UID 2026)Только одна точка входаПопыток входа2Защита от подбора пароляПароль sudoОтключенУдобство администрированияБаннерAuthorized access onlyЮридическая защита
Теперь HQ-SRV полностью настроен: находится в сети управления (VLAN 100), обслуживает DNS-запросы и готов принимать безопасные подключения от администратора.
HQ-CLI:
Это пятая часть настройки инфраструктуры. Теперь мы конфигурируем HQ-CLI — клиентскую машину штаб-квартиры, которая находится в пользовательской сети (VLAN 200) и получает настройки автоматически.
1. Имя хоста
# Имя хоста:
hostnamectl hostname hq-cli.au-team.irpo; exec bash
# Интерфейсы:
2. Настройка сетевых интерфейсов через графический интерфейс
Сетевые подключения –> параметры подключений –> Добавить –> Тип «VLAN»
- Родительский интерфейс enp7s1
- Идентификатор VLAN 200
- Имя интерфейса enp7s1.200
Выключить / включить поддержку сети
3. Настройка часового пояса
# Часовой пояс
apt-get install tzdata -y
timedatectl set-timezone Europe/Moscow
timedatectl status
Стандартный блок синхронизации времени с Москвой (UTC+3), идентичный на всех хостах. На клиенте это особенно важно для корректного отображения времени в трее и правильных меток у создаваемых документов.
BR-RTR:
Это шестая часть настройки — конфигурируем BR-RTR (Branch Router), маршрутизатор удаленного филиала. Этот сервер является "близнецом" HQ-RTR, но находится в другой площадке и соединяется с главным офисом через GRE-туннель.
1. Имя хоста
# Имя хоста
hostnamectl hostname br-rtr.au-team.irpo; exec bash
2. Сетевые интерфейсы
# Интерфейсы
cd /etc/net/ifaces
mkdir enp7s1 enp7s2
echo TYPE=eth > enp7s1/options
echo TYPE=eth > enp7s2/options
echo 172.16.2.2/28 > enp7s1/ipv4address
echo 192.168.3.1/29 > enp7s2/ipv4address
echo default via 172.16.2.1 > enp7s1/ipv4route
echo nameserver 8.8.8.8 > enp7s1/resolv.conf
echo nameserver 8.8.8.8 > enp7s2/resolv.conf
systemctl restart network
Архитектура интерфейсов филиала:
ИнтерфейсIP-адресНазначениеenp7s1172.16.2.2/28WAN — связь с ISP (через подсеть 172.16.2.0/28)enp7s2192.168.3.1/29LAN — локальная сеть филиала
Разбор параметров:
- 172.16.2.2/28: WAN-адрес филиала.
На ISP ранее был настроен интерфейс enp7s3 с адресом 172.16.2.1/28.
Таким образом, ISP является шлюзом по умолчанию для BR-RTR. - 192.168.3.1/29: Локальная сеть филиала.
Маска /29 (255.255.255.248) дает 6 адресов для хостов (.2 — .6).
Адрес .1 занят маршрутизатором. - default via 172.16.2.1: Весь внешний трафик уходит на ISP.
- nameserver 8.8.8.8: Временно Google DNS (позже будет заменен на центральный 192.168.100.2).
3. Настройка NAT
# Настройка NAT
nano /etc/net/sysctl.conf
Прописываем
net.ipv4.ip_forward = 1
Далее
sysctl -p /etc/net/sysctl.conf
iptables -t nat -A POSTROUTING -o enp7s1 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables
systemctl enable --now iptables
Зачем нужен NAT в филиале:
- Локальная сеть 192.168.3.0/29 имеет "серые" адреса.
- Для выхода в интернет (напрямую, а не через туннель) нужен маскарадинг.
- Трафик от 192.168.3.x будет выходить в WAN с подменой на 172.16.2.2.
Важное замечание по маршрутизации:
- Если трафик идет в главный офис (сети 192.168.100.0/29, 192.168.200.0/24, 192.168.99.0/29), он НЕ должен проходить через NAT.
- OSPF (настроенный позже) автоматически направит такой трафик через GRE-туннель, минуя NAT.
- Правило MASQUERADE применяется только к пакетам, уходящим через физический WAN-интерфейс (enp7s1), что корректно.
4. Пользователь net_admin
# Пользователь net_admin
# https://stepik.org/lesson/2000243/step/1?unit=2028373
useradd -m net_admin
passwd net_admin
usermod -aG wheel net_admin
echo "net_admin ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
Создание административной учетной записи, идентичной той, что была создана на HQ-RTR:
- -m: Создает домашнюю директорию /home/net_admin.
- wheel: Группа администраторов с правами sudo.
- NOPASSWD:ALL: Выполнение команд без пароля.
Зачем одинаковый пользователь: Унификация учетных записей в организации. Администратор использует один логин/пароль для доступа ко всем роутерам.
5. SSH-сервер
# SSH-сервер
apt-get install -y openssh-server
systemctl enable --now sshd
Стандартная установка SSH-сервера для удаленного управления. В отличие от HQ-SRV, здесь не применяется hardening (порт по умолчанию 22, нет ограничения AllowUsers). В реальной среде следовало бы применить те же настройки безопасности.
6. Часовой пояс
# Часовой пояс
apt-get update
apt-get install tzdata -y
timedatectl set-timezone Europe/Moscow
timedatectl status
Синхронизация времени. Единый часовой пояс критически важен для:
- Корректной работы логов на всех устройствах.
- Работы OSPF (расхождения во времени могут вызвать проблемы с аутентификацией).
- Анализа инцидентов безопасности (четкая хронология).
7. GRE-туннель (BR-RTR → HQ-RTR)
# GRE-туннель
https://www.altlinux.org/Strongswan#Создание_GRE-интерфейса_(RTR-1)
cd /etc/net/ifaces
mkdir gre1
echo "TYPE=iptun
TUNTYPE=gre
TUNLOCAL=172.16.2.2
TUNREMOTE=172.16.1.2
TUNTTL=64
TUNOPTIONS='ttl 64'" > gre1/options
echo "192.168.255.2/30" > gre1/ipv4address
systemctl restart network
Как работает GRE:
- Пакет из локальной сети BR (192.168.3.x) хочет попасть в сеть HQ (192.168.200.x).
- Маршрутизатор BR "заворачивает" этот пакет в GRE-заголовок.
- Снаружи ставится обычный IP-заголовок: От: 172.16.2.2 → Кому: 172.16.1.2.
- Пакет летит через ISP как обычный интернет-трафик.
- HQ-RTR "разворачивает" GRE и достает оригинальный пакет.
Важно: GRE не шифрует трафик. Для защиты данных в реальной среде используют IPsec поверх GRE.
8. Динамическая маршрутизация OSPF
# Динамическая маршрутизация OSPF
apt-get install frr -y
nano /etc/frr/daemons
Прописываем
ospfd=yes
Далее
systemctl enable --now frr.service
vtysh
Далее
conf t
router ospf
passive-interface default
network 192.168.3.0/29 area 0
network 192.168.255.0/30 area 0
exit
И в конце
interface gre1
no ip ospf passive
ip ospf authentication-key 1234
end
wr mem
exit
9. Замена DNS на центральный
# Замена адреса DNS на локальный
cd /etc/net/ifaces
echo nameserver 192.168.100.2 > enp7s1/resolv.conf
echo nameserver 192.168.100.2 > enp7s2/resolv.conf
systemctl restart network
Маршрут до центрального DNS:
- BR-RTR отправляет DNS-запрос к 192.168.100.2.
- Таблица маршрутизации (благодаря OSPF) знает, что 192.168.100.0/29 доступна через GRE-туннель.
- Пакет уходит в туннель, доходит до HQ-RTR, а оттуда — в VLAN 100 к HQ-SRV.
- HQ-SRV (dnsmasq) отвечает.
Преимущества центрального DNS:
- Единая точка управления именами.
- BR-RTR может разрешать имена hq-srv.au-team.irpo, hq-rtr.au-team.irpo и другие.
- Кэширование ускоряет работу.
BR-SRV:
Это седьмая часть настройки корпоративной сети. Конфигурируем BR-SRV — сервер филиала, который является "близнецом" HQ-SRV, но с упрощенной ролью (без DNS-сервера, только как целевой сервер для проверки связности и удаленного управления).
1. Имя хоста
# Имя хоста
hostnamectl hostname br-srv.au-team.irpo; exec bash
# Интерфейсы
2. Сетевые интерфейсы
cd /etc/net/ifaces
echo TYPE=eth > enp7s1/options
echo 192.168.3.2/29 > enp7s1/ipv4address
echo default via 192.168.3.1 > enp7s1/ipv4route
echo nameserver 8.8.8.8 > enp7s1/resolv.conf
systemctl restart network
Почему без VLAN: В небольших филиалах часто используют плоскую сеть (одна подсеть для всех устройств), в то время как в главном офисе сети сегментированы по назначению.
3. Пользователь sshuser
# Пользователь sshuser
# https://stepik.org/lesson/2000243/step/1?unit=2028373
useradd -u 2026 -m sshuser
passwd sshuser
usermod -aG wheel sshuser
echo "sshuser ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
Зеркальная настройка с HQ-SRV:
- -u 2026: Тот же UID, что и на HQ-SRV. Это важно для:
Унификации прав доступа.
Корректной работы NFS (если будет настроен).
Синхронизации при миграции данных. - sshuser: Единая учетная запись администратора для всех серверов организации.
- wheel: Группа администраторов.
- NOPASSWD:ALL: Выполнение sudo без пароля.
4. SSH-сервер с hardening
# SSH-сервер
apt-get install -y openssh-server
nano /etc/openssh/sshd_config
Параметры безопасности (аналогично HQ-SRV):
Port 2026
AllowUsers sshuser
MaxAuthTries 2
Banner /etc/openssh/banner.txt
Детальный разбор hardening'а:
- Port 2026: Нестандартный порт.
Снижает количество автоматических атак.
Совпадает с UID пользователя (2026) — легко запомнить. - AllowUsers sshuser: Белый список.
Только sshuser может подключиться по SSH.
Пользователь net_admin (созданный на BR-RTR) не сможет подключиться к BR-SRV. - MaxAuthTries 2: Максимум 2 попытки ввода пароля.
Защита от brute-force атак. - Banner /etc/openssh/banner.txt: Юридическое предупреждение.
Создание баннера и запуск служб:
echo Authorized access only > /etc/openssh/banner.txt
systemctl enable --now sshd
5. Часовой пояс
# Часовой пояс
apt-get install tzdata -y
timedatectl set-timezone Europe/Moscow
timedatectl status
Стандартная синхронизация времени с Москвой (UTC+3). Единый часовой пояс критичен для:
- Корректного логирования событий.
- Синхронизации логов между площадками.
- Работы служб, чувствительных ко времени.
6. Замена DNS на центральный
# Замена адреса DNS на локальный
cd /etc/net/ifaces
echo nameserver 192.168.100.2 > enp7s1/resolv.conf
systemctl restart network
Модуль 2
ISP:
1. NTP-сервер времени (Chrony)
# NTP сервер времени
nano /etc/chrony.conf
Конфигурация:
pool ru.pool.ntp.org iburst
allow all
local stratum 5
Уровни стратума (stratum):
- Stratum 0: Атомные часы, GPS-приемники (источник времени).
- Stratum 1: Серверы, напрямую подключенные к Stratum 0.
- Stratum 5: Локальный сервер, раздающий время внутри организации.
Запуск службы:
systemctl enable --now chronyd
systemctl restart chronyd
2. Обратный прокси-сервер (Nginx Reverse Proxy)
# Обратный прокси
# https://www.8host.com/blog/nastrojka-obratnogo-proksi-nginx-v-ubuntu/
nano /etc/nginx/sites-available.d/web.conf
Начальная конфигурация:
server {
$$$$listen 80;
$$$$server_name web.au-team.irpo;
$$$$location / {
$$$$$$$$proxy_pass http://172.16.1.10:8080;
$$$$}
}
Server {
$$$$listen 80;
$$$$server_name docker.au-team.irpo;
$$$$location / {
$$$$$$$$proxy_pass http://172.16.2.10:8080;
$$$$}
}
Активация конфигурации:
ln -s /etc/nginx/sites-available.d/web.conf /etc/nginx/sites-enabled.d/
systemctl enable --now nginx
3. Web-based аутентификация
# Настройка web-based аутентификации
# https://www.8host.com/blog/nastrojka-parolnoj-autentifikacii-cherez-nginx/
apt-get install htpasswd -y
mini_htpasswd -c /etc/nginx/.htpasswd WEB
После выполнения команды будет запрошен пароль для пользователя WEB.
Обновленная конфигурация Nginx:
nano /etc/nginx/sites-available.d/web.conf
Прописываем
server {
$$$$listen 80;
$$$$server_name$web.au-team.irpo;
$$$$location / {
$$$$$$$$proxy_pass http://172.16.1.10:8080;
$$$$$$$$auth_basic "Restricted Content";
$$$$$$$$auth_basic_user_file /etc/nginx/.htpasswd;
$$$$}
}
Перезапуск Nginx:
systemctl restart nginx
Как это работает:
- Пользователь заходит на http://web.au-team.irpo.
- Браузер показывает диалог: "Restricted Content" с полями логин/пароль.
- Пользователь вводит: WEB / P@ssw0rd (пароль, заданный при создании).
- Nginx сверяет хэш пароля с файлом .htpasswd.
- Если совпало — проксирует запрос на внутренний сервер.
- Если нет — возвращает ошибку 401 Unauthorized.
HQ-RTR:
1. SSH-сервер
# SSH сервер
systemctl enable --now sshd
Разбор команды:
- enable: Добавляет службу SSH в автозагрузку (запустится при старте системы).
- --now: Немедленно запускает службу, не дожидаясь перезагрузки.
Зачем SSH на маршрутизаторе:
- Удаленное администрирование без физического доступа к консоли.
- Пользователь net_admin (созданный ранее) может управлять роутером удаленно.
- Возможность настройки без прерывания работы сети.
2. Проброс портов (DNAT — Destination NAT)
# Проброс портов
# https://losst.pro/probros-portov-iptables-v-linux
iptables -t nat -A PREROUTING -d 172.16.1.10 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
iptables -t nat -A PREROUTING -d 172.16.1.10 -p tcp --dport 2026 -j DNAT --to-destination 192.168.1.10:2026
iptables-save > /etc/sysconfig/iptables
systemctl enable --now iptables
HQ-SRV:
# NTP сервер времени
echo server 172.16.1.1 iburst > /etc/chrony.conf
systemctl enable --now chronyd
systemctl restart chronyd
# SSH сервер
systemctl enable --now sshd
# RAID 0
lsblk
mdadm --create --level=0 --raid-devices=2 /dev/md/md0 /dev/sdb /dev/sdc
mkfs.ext4 /dev/md/md0
mkdir /raid
blkid /dev/md/md0
скопировать UUID
nano /etc/fstab
UUID=d3fbac4b-46fb-4514-9d22-c4cf6874307e /raid ext4 defaults 0 0
mount -a
lsblk
NFS Сервер
# NFS файловый сервер
# https://www.altlinux.org/NFS_start
mkdir /raid/nfs
nano /etc/exports
Создаёте каталог для экспорта. Убедитесь, что он существует, а главное — что /raid смонтирован (видимо, это тот самый RAID-массив, который мы обсуждали ранее — /dev/md/md0).
Прописываем
/raid/nfs 192.168.2.0/28 -rw,no_subtree_check
Всё верно. Экспортируете каталог для подсети 192.168.2.0/28 (маска 255.255.255.240, диапазон адресов .1 – .14).
Далее
systemctl enable --now nfs
systemctl enable --now nfs-server.service
touch /raid/nfs/123
Замечание: Служба может называться nfs-server или nfs-kernel-server в зависимости от дистрибутива. Второй вызов nfs-server.service — правильный. Первый nfs может не сработать, это нормально.
2. Веб-сервер (LAMP)
# Веб-сервер
apt-get install lamp-server -y
systemctl enable --now mariadb
systemctl enable --now httpd2
mount /dev/cdrom /mnt
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 = "webc";
$password = "P@ssw0rd";
$dbname = "webdb";
Далее
mariadb
create database webdb;
create user 'webc'@'localhost' identified by 'P@ssw0rd';
grant all privileges on webdb.* to 'webc'@'localhost' with grant option;
exit
Далее
mariadb -D webdb < /mnt/web/dump.sql
С машины HQ-CLI открыть 192.168.1.10
BR-RTR:
1. NTP-клиент (синхронизация времени)
# NTP сервер времени
echo server 172.16.1.1 iburst > /etc/chrony.conf
systemctl enable --now chronyd
systemctl restart chronyd
chronyc sources -v
2. SSH-сервер
# SSH сервер
systemctl enable --now sshd
Запуск SSH для удаленного управления. На HQ-SRV ранее уже был настроен SSH с hardening (порт 2026, AllowUsers sshuser). Эта команда либо запускает его, либо выдает ошибку, если он уже работает.
# Проброс портов
# https://losst.pro/probros-portov-iptables-v-linux
iptables -t nat -A PREROUTING -d 172.16.2.10 -p tcp --dport 8080 -j DNAT --to-destination 192.168.3.10:8080
iptables -t nat -A PREROUTING -d 172.16.2.10 -p tcp --dport 2026 -j DNAT --to-destination 192.168.3.10:2026
iptables-save > /etc/sysconfig/iptables
systemctl enable --now iptables
BR-SRV:
# NTP сервер времени
echo server 172.16.1.1 iburst > /etc/chrony.conf
systemctl enable --now chronyd
systemctl restart chronyd
chronyc sources -v
# Samba
nano /etc/net/ifaces/enp7s1/resolv.conf
Прописываем
nameserver 127.0.0.1
search au-team.irpo
systemctl restart network
cd /etc/samba/
mv smb.conf smb.conf.bak
samba-tool domain provision
DNS forwarder IP address: 192.168.1.10
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
systemctl enable --now samba
kinit administrator@AU-TEAM.IRPO
samba-tool group add hq #имена по заданию
samba-tool user add hquser1 P@ssw0rd
samba-tool user add hquser2 P@ssw0rd
samba-tool user add hquser3 P@ssw0rd
samba-tool user add hquser4 P@ssw0rd
samba-tool user add hquser5 P@ssw0rd
samba-tool group addmembers "hq" hquser1
samba-tool group addmembers "hq" hquser2
samba-tool group addmembers "hq" hquser3
samba-tool group addmembers "hq" hquser4
samba-tool group addmembers "hq" hquser5
samba-tool dns add br-srv au-team.irpo docker A 172.16.1.1
samba-tool dns add br-srv au-team.irpo web A 172.16.2.1
samba-tool dns add br-srv au-team.irpo hq-rtr A 172.16.1.10
samba-tool dns add br-srv au-team.irpo br-rtr A 172.16.2.10
samba-tool dns add br-srv au-team.irpo hq-srv A 192.168.1.10
samba-tool dns add br-srv au-team.irpo hq-cli A 192.168.2.10
# Ansible
ssh-keygen -t rsa
ssh-copy-id -p 22 user@hq-cli.au-team.irpo
ssh-copy-id -p 22 net_admin@hq-rtr.au-team.irpo
ssh-copy-id -p 22 net_admin@br-rtr.au-team.irpo
ssh-copy-id -p 2026 sshuser@hq-srv.au-team.irpo
Далее
nano /etc/ansible/ansible.cfg
Прописываем
[defaults]
interpreter_python = auto_silent
host_key_checking = False
nano /etc/ansible/hosts
[cli:vars]
ansible_user=user
ansible_password=resu
ansible_port=22
[srv:vars]
ansible_user=sshuser
ansible_password=P@ssw0rd
ansible_port=2026
[rtr:vars]
ansible_user=net_admin
ansible_password=P@ssw0rd
ansible_port=22
[cli]
hq-cli.au-team.irpo
[srv]
hq-srv.au-team.irpo
[rtr]
hq-rtr.au-team.irpo
br-rtr.au-team.irpo
Пингуем машины
ansible -m ping all
# Веб-приложение Docker
systemctl enable --now docker
mount /dev/cdrom /mnt
docker load -i /mnt/docker/site_latest.tar
docker load -i /mnt/docker/mariadb_latest.tar
docker image ls
cd
nano docker-compose.yaml
Прописываем
services:
$$db:
$$$$container_name: db
$$$$image: mariadb:10.11
$$$$environment:
$$$$$$MARIADB_DATABASE: "testdb"
$$$$$$MARIADB_USER: "test"
$$$$$$MARIADB_PASSWORD: "P@ssw0rd"
$$$$$$MARIADB_ROOT_PASSWORD: "toor"
$$app:
$$$$container_name: tespapp
$$$$image: site:latest
$$$$restart: always
$$$$ports:
$$$$$$- "8080:8000"
$$$$depends_on:
$$$$$$- db
$$$$environment:
$$$$$$DB_TYPE: "maria"
$$$$$$DB_HOST: "db"
$$$$$$DB_NAME: "testdb"
$$$$$$DB_PORT: "3306"
$$$$$$DB_USER: "test"
$$$$$$DB_PASS: "P@ssw0rd"
Далее
docker compose up -d
На HQ-CLI открыть http://br-srv.au-team.irpo:8080
HQ-CLI:
1. NTP-клиент (синхронизация времени)
# NTP сервер времени
apt-get update
apt-get install nano chrony -y
echo server 172.16.1.1 iburst > /etc/chrony.conf
systemctl enable --now chronyd
systemctl restart chronyd
chronyc sources -v
# SSH сервер
apt-get install openssh-server -y
systemctl enable --now sshd
# Яндекс Браузер
apt-get install yandex-browser -y
# Ввод в домен
apt-get install task-auth-ad-sssd -y
Графический интерфейс:
Настройки сети:
Метод статический
IP 192.168.2.10
Маска 28
Шлюз 192.168.2.1
DNS 192.168.3.10
Поисковый домен au-team.irpo
su -
acc
Пользователи >> Аутентификация
Выбрать точку напротив «Домен Active Directory»
Домен: AU-TEAM.IRPO
Рабочая группа: AU-TEAM
Имя компьютера: HQ-CLI
reboot
su -
roleadd hq wheel
nano /etc/sudoers
Прописываем
%wheel ALL=(ALL:ALL) /bin/cat, /bin/grep, /usr/bin/id
Залогиниться под hquser1 P@ssw0rd
sudo id
Должно сработать
# Монтирование сетевой папки от hq-srv
systemctl enable --now rpcbind
systemctl enable --now nfs-blkmap.service
systemctl enable --now nfs-client.target
mkdir /mnt/nfs
nano /etc/fstab
Прописываем
192.168.1.10:/raid/nfs /mnt/nfs nfs defaults 0 0
Далее
mount -a
ls /mnt/nfs/