Будущих студентов курса "Administrator Linux.Basic" и всех интересующихся приглашаем на открытый урок по теме "Bash. Написание простых скриптов". Автор статьи: эксперт OTUS - Александр Колесников.   Цель этой статьи — показать, как можно настроить на обычном ноутбуке стенд, который может помочь в изучении различных подсистем любой операционной системы. Целью этой статьи станет операционная система Linux, но на этом же стенде могут быть развернуты любые операционные системы. В статье основной фокус будет сделан на использование Linux для работы с сетевыми интерфейсами для доступа в сети, где используется VLAN.     Стенд для тестирования подсистем ОС будет состоять из: Средства виртуализации VirtualBox Операционной системы Windows 8 Операционной системы Kali Linux (Debian) Виртуальной машины GNS3, которая будет использоваться для эмуляции оборудования для настройки VLAN. Все используемые инструменты являются свободно распространяемым программным обеспечением, поэтому полностью бесплатны. Для построения сети будем использовать следующую схему: Для нормальной работы GNS3 необходимо использовать VM, которую можно скачать на официальном сайте. Именно на ней будут эмулироваться устройства, которые могут быть развернуты из официальных образов операционных систем устройств, например CISCO. Основные проблемы с конфигурации стенда проводятся в системе GNS3. Следующие этапы стоит произвести перед началом работы: Открыть “Настройки” и перейти в раздел Server: Красным выделены те опции, которые нужно изменить  проставить включение сервера и выбрать сетевой интерфейс, который будет использоваться GNS VM. Очень важно, чтобы сервер GNS3 и виртуальная машина была в одной сети. В противном случае, вы не сможете соединить устройства на схеме сети. 2. На вкладке VirtualBox, через опцию new необходимо добавить виртуальные машины, которые будут использоваться для стенда: 3. Необходимо добавить прошивку устройства, найти тестовые прошивки можно в сети. Добавить в интерфейс их можно через раздел “IOS Routers”. 4. Отключить все виртуальные машины и выбрать опцию “Not Attached” для сетевого интерфейса. 5. Создаем схему сети, как указано в разделе “Описание стенда”. Последующие этапы настройки касаются настройки операционных систем и устройств, которые используются в сети. Для начала этого процесса необходимо запустить схему. Сделать это можно из меню управления.  Важное замечание: будьте внимательны к тому сколько оперативной памяти вы выделили под каждую виртуальную машину, может случиться так, что не хватит ресурсов. Экстренная перезагрузка может повредить данные.  Для настройки устройств необходимо ввести следующие команды: Операционная система Windows: 1.Запустить операционную систему 2.Установить через любой удобный интерфейс ip адрес — 10.0.20.3 Операционная система Kali Linux: 1.Запустить операционную систему, установить ip адрес — 10.0.3.5 EtherSwitch1:     - vlan database     - vlan 20     - exit     - conf t     -(int fa0/0) порт Kali     - no shut     - exit     - int fa0/1     - switchport mode trunk     - no shut     - exit     - exit     -write EtherSwitch2:     - vlan database     - vlan 20     - exit     - conf t      - int fa0/0 (порт между свичами)     - switchport mode trunk     - no shut     - exit     - int fa0/1(порт для Windows 8)     - switchport mode access     - switchport access vlan 20     - no shut     - exit     - exit     - write Запустить команду Ping 10.0.20.3 из операционной системы Kali Linux. Необходимый результат показан на снимке ниже: Почему нет ответа от целевого хоста? Причины как минимум две: 1.Нет маршрута до сети, где находится хост. 2.Сеть использует VLAN, что накладывает специальные условия на разметку трафика. По умолчанию, они не работают для отправляемых данных. Можно ли отправлять пакеты в соседние VLAN с использованием подсистем, которые есть по умолчанию в операционной системе Linux, в данном случае Debian? Спойлер — можно. Для дальнейшего проведения тестирования воспользуемся инструментом, который называется yersinia. Базово, этот инструмент используется для работы с протоколами сети. Его используют для тестирования неверной конфигурации устройств. Мы воспользуемся его функционалом по отправке пакетов с дополнительными тегами для VLAN сетей. Для его запуска придется установить его в операционную систему Kali Linux. Для установки достаточно набрать в терминале: apt-get update && apt-get install yersinia Наша импровизированная сеть использует в качестве протокола для VLAN - 802.1q. Этот протокол предполагает, что в заголовке пакетов будет указан специальный Тег, который будет использоваться для маршрутизации. Попробуем имитировать поведение протокола, если бы мы были клиентом целевой виртуальной сети. Для этого запустим команду: К сожалению, выловить это сообщение мы не сможем на оконечном хосте. Для этого необходимо прослушать трафик между хостами в сети. Это очень просто сделать, если вызвать контекстное меню в GNS3, кликнув на соединение, вот так: В результате выбора откроется WireShark: И можно будет увидеть весь трафик на любом отрезке сети. Кстати, вот и наш payload: Изначально при конфигурации сети была допущена ошибка, которая позволяет отправлять данные всех сетей через Native VLAN. Значит можно попробовать отправить данные стандартными средствами ОС. Для этого выполним следующие команды в терминале: modprobe 8021q — Загрузить модуль ядра для работы с инкапсуляцией vconfig add eth0 1 — добавить виртуальный интерфейс ifconfig eth0.1 up vconfig add eth0.1 20 — добавить еще один виртуальный интерфейс ifconfig eth0.1.20 10.0.20.6 netmask 255.255.255.0 up ip route add 10.0.20.0/24 via 10.0.20.6 dev eth0.1.20 — сконфигурировать маршрут до целевой сети arp -s 10.0.20.3 FF:FF:FF:FF:FF:FF -i eth0.1.20 — небольшой лайфхак, чтобы ОС посчитала, что у нее есть информация об удаленной машине. Стоит упомянуть, что подобное взаимодействие в реальных условиях возможно только в UDP формате. Для TCP нужно будет угадывать идентификаторы, которые используются для проведения handshake процедуры. Попробуем провести отправку чего-то осмысленного на целевой хост. Для этого на хосте развернем netcat: А с машины Kali Linux посредством инструмента для работы с сетевыми пакетами — Scapy. Отправим UDP сообщение: LINUXOTUSNC: Просмотрим данные, которые передавались в трафике: Что в итоге отобразилось на целевой машине: В результате мы смогли стандартными инструментами операционной системы наладить сетевое взаимодействие между хостами, которые были разделены VLAN. Эксперимент показал, что операционная система Linux обладает поразительной гибкостью прямо из коробки и дает возможность работать с особенностями сетевых протоколов используя только несколько команд. Таким функционалом может похвастаться далеко не все операционные системы, большинству пришлось бы устанавливать дополнительный софт, который скорее всего стоил дополнительных денег. Узнать подробнее о курсе "Administrator Linux.Basic" Записаться на открытый урок по теме "Bash. Написание простых скриптов".  Редактор