Безопасник, который не понимает сеть, похож на охранника без плана здания. Тревогу видит, но не знает, откуда пришёл нарушитель.
Закрыть пробел поможет своя лаборатория на обычном компьютере, а собрать её осмысленнее помогут демодоступ к курсам и воркшопы об ИИ от CyberED: от виртуализации и безопасного доступа до ИИ как рабочего инструмента новичка.
Зачем безопаснику своя сеть
Классические сетевые протоколы создавали, когда о безопасности почти не думали: данные шли в открытом виде, устройства доверяли друг другу. Поэтому многие атаки эксплуатируют нормальное поведение сети. Чтобы заметить подмену, нужно сначала увидеть, как выглядит норма.
Второй довод: на стенде можно ломать. Удалите на маршрутизаторе файл операционной системы и перезагрузите его. Устройство загрузится в режим восстановления, интерфейсы перестанут работать, сеть за ним станет недоступна. Для такой диверсии хватает доступа к привилегированному режиму, и после этого опыта требование защищать административный доступ к оборудованию уже не кажется формальностью.
Что понадобится
Минимальный набор программ:
- GNS3. Эмулятор, в котором собирается топология: маршрутизаторы, коммутаторы, хосты и виртуальные машины соединяются виртуальными кабелями.
- VirtualBox или VMware. Здесь живут полноценные рабочие станции. Для начала хватит двух: Windows и Linux, например Debian.
- Cisco Packet Tracer. Учебный симулятор с наглядной картинкой. Подходит для быстрых опытов, но части команд в нём нет, а некоторые показатели далеки от реальности.
- Wireshark. Сетевой анализатор, через который видно, что на самом деле передаётся по проводу.
- draw.io. Редактор схем с библиотеками сетевого оборудования, работает в браузере и как приложение.
Для маршрутизатора в GNS3 понадобится образ его операционной системы. Встроенный движок Dynamips эмулирует только маршрутизаторы Cisco, коммутаторы и другое оборудование запускаются через QEMU.
Как не перегрузить компьютер
Стенд из нескольких виртуальных машин заметно нагружает систему. Несколько правил сэкономят время:
- Включайте устройства по одному. Одновременный запуск всего стенда часто заканчивается зависанием.
- Урежьте память виртуальным машинам. Windows для учебных задач хватает 1 ГБ, Debian без графики запускается на 512 МБ.
- Для маршрутизатора Cisco 7200 в описании образа указан минимум 256 МБ, GNS3 по умолчанию предлагает 512 МБ. С минимальным объёмом сложные сценарии могут сбоить.
- При добавлении маршрутизатора дождитесь расчёта значения Idle-PC и только потом нажимайте Finish. Без этого эмулируемый роутер способен загрузить процессор до 100%.
- QEMU без аппаратного ускорения KVM работает медленно. Если устройство не добавляется и ругается на hardware acceleration, попробуйте снять эту галочку в настройках.
- Не давайте коммутатору лишних портов: каждый порт требует ресурсов, и для 16 или 24 портов придётся увеличить оперативную память.
Первая схема: две сети и маршрутизатор
Начните с минимальной топологии. Слева сеть 10.10.10.0/24, справа 192.168.10.0/24, между ними маршрутизатор. В каждой сети по коммутатору и по два хоста: в левую подключите Debian и легковесный хост VPCS, в правую Windows и ещё один VPCS. VPCS имитирует компьютер с минимальным набором команд, его хватает для пинга.
Адресация простая: интерфейсы маршрутизатора получают адреса .1 в своих сетях, хосты .10 и .20. Сразу включите отображение названий портов на схеме, иначе через неделю никто не вспомнит, какой кабель куда воткнут.
Настраиваем маршрутизатор
В Cisco IOS несколько уровней доступа: пользовательский режим с приглашением > и урезанным набором команд, привилегированный с приглашением # и режим конфигурации. В образе для GNS3 консоль обычно открывается сразу в привилегированном режиме.
Две привычки ускорят работу. Знак ? в любом месте подсказывает возможные команды, а Tab дописывает начатую. Если подсказка показывает <cr>, команду можно отправлять.
Сначала посмотрите состояние интерфейсов:
show ip interface brief
Статус administratively down означает, что интерфейс выключен. Включаем его и назначаем адреса:
configure terminal
interface FastEthernet0/0
ip address 10.10.10.1 255.255.255.0
description LAN-Debian
no shutdown
exit
interface FastEthernet1/0
ip address 192.168.10.1 255.255.255.0
description LAN-Windows
no shutdown
end
Отдельной команды «включить» в IOS нет: почти любую настройку отменяет приставка no. Поэтому no shutdown включает порт, а no hostname возвращает имя по умолчанию.
Заодно задайте имя устройства командой hostname, часовой пояс через clock timezone и время через clock set. Результат покажет show running-config. Это рабочая конфигурация в оперативной памяти, после перезагрузки она пропадёт. Чтобы сохранить её в энергонезависимую память NVRAM, выполните write и сверьте вывод с show startup-config.
Шлюз по умолчанию и первая поломка
Пропишите адреса на хостах. В Debian:
ip link set enp0s3 up
ip addr add 10.10.10.20/24 dev enp0s3
ip -br -4 a
В Windows адрес, маску и основной шлюз 192.168.10.1 удобно задать в свойствах сетевого адаптера, а проверить командой ipconfig /all.
Теперь полезный эксперимент. Пропишите шлюз на Windows, но не на Debian, и запустите с Windows ping 10.10.10.20. Ответов не будет. Запустите Wireshark на линке к Debian и включите фильтр icmp: запросы доходят, ответов нет. Debian видит, что запрос пришёл из чужой сети, и не знает, куда отправить ответ.
Эту задачу решает шлюз по умолчанию. Это адрес маршрутизатора в вашей сети, на который хост отправляет всё, что адресовано в другие сети:
ip route add default via 10.10.10.1 dev enp0s3
ip route show
После этой команды пинг пойдёт, а с Windows откроется веб-сервер на Debian, если он там поднят.
Учтите, что настройки, введённые командами в Linux, хранятся в оперативной памяти и после перезагрузки исчезают. Быстро вернуть их помогает history: она нумерует прошлые команды, а запись вида !24 повторит строку под номером 24.
Что подсмотреть в трафике
Почти любая передача в локальной сети начинается с протокола ARP. Хост знает IP-адрес соседа, но для отправки кадра ему нужен MAC-адрес. Поэтому он рассылает широковещательный запрос на адрес FF:FF:FF:FF:FF:FF с вопросом, у кого такой IP. Владелец отвечает уже адресно, только спросившему. В Wireshark с фильтром arp видна вся пара: request и reply.
Ответ попадает в ARP-таблицу. Посмотреть её можно командами arp -a в Windows, ip neigh show в Linux и show arp на маршрутизаторе. Динамические записи живут около одной-двух минут в зависимости от системы, потом запрос повторяется. В Linux статус REACHABLE означает свежую запись, STALE запись постарше, FAILED неудачный запрос.
Здесь же видна слабость протокола. Хост принимает ответ и записывает его в таблицу, поэтому атакующий может прислать поддельную связку IP и MAC. Такую атаку называют ARP-спуфингом. Статическую запись, добавленную вручную, например через arp -s в Windows, поддельный ответ не перезапишет.
Ещё два опыта на пару минут:
- Назначьте на VPCS адрес, который уже занят. Хост сначала спросит сеть, свободен ли адрес, получит ответ от владельца и откажется его применять. Механизм называется обнаружением дубликатов адресов.
- Узнайте MAC-адрес своей сетевой карты командой
getmacи найдите первые три байта в любом сервисе поиска OUI. Эта часть адреса указывает на производителя, у виртуальных адаптеров VirtualBox и VMware свои диапазоны.
Коммутатор и петли
На коммутаторе выполните show mac address-table. IP-адресов в этой таблице нет: классический коммутатор работает с MAC-адресами. Он запоминает адрес отправителя и порт, на который пришёл кадр, а куда переслать кадр, решает по адресу получателя. Если получатель неизвестен, кадр уходит на все включённые порты.
Широковещательные кадры тоже расходятся по всем портам, и границу им ставит только маршрутизатор. Сеть из десятков коммутаторов без сегментации превращается в один огромный широковещательный домен. Бывают компании, где около тысячи компьютеров сидят в одном таком домене, и сеть тормозит даже при выходе в интернет. Делить такие сети помогают VLAN.
Самый зрелищный опыт: соедините три коммутатора в кольцо. Без защиты один ARP-запрос начнёт размножаться по петле, забьёт канал и загрузит процессоры устройств. Это широковещательный шторм. От него защищает протокол STP: коммутаторы выбирают корневой с наименьшим идентификатором и блокируют лишний линк. Проверьте show spanning-tree, затем на нужном коммутаторе задайте приоритет меньше стандартного 32769 (значение кратно 4096) и понаблюдайте, как сеть перестраивается. Выдерните активный кабель: через какое-то время заблокированный линк включится.
Если два коммутатора соединить двумя кабелями, STP один из них заблокирует. Чтобы работали оба, их объединяют в логический канал по протоколу LACP. Скорость при этом не удваивается: трафик между двумя конкретными узлами всегда идёт по одному физическому кабелю.
Спроектируйте сеть, которую будете защищать
Когда стенд заработает, перенесите его в draw.io и дорисуйте до схемы небольшой компании. Разделите её на зоны: внутренняя сеть (inside), интернет (outside) и демилитаризованная зона (DMZ) для серверов, доступных снаружи, например почтового или веб-сервера. Пользователей подключите через уровень доступа, коммутаторы доступа соедините двумя линками с уровнем распределения, а для крупной сети добавьте ядро.
Проверьте схему вопросами:
- что сломается, если откажет один маршрутизатор, межсетевой экран или кабель;
- каким серверам действительно нужен доступ из интернета, а какие лучше оставить во внутренней серверной;
- где стоит межсетевой экран и какие зоны он разделяет;
- кто и откуда может попасть в привилегированный режим сетевого оборудования.
Куда двигаться дальше
Стенд из двух сетей показывает, как пакет находит адресата и почему одна петля способна остановить офис. Дальше на эту основу ложатся Linux, Windows и средства защиты. Следующий шаг можно сделать в подборке CyberED «Инженерный октябрь»: демодоступ к курсам «Аналитик SOC», «Инженер по информационной безопасности» и «Основы пентеста», воркшопы об ИИ в ИБ и ассессмент навыков «Инцидент в OctoForge».