Протокол STP. Методы сетевых атак и защиты

 

Введение


Протокол STP (SpanningTreeProtocol) - сетевой протокол второго уровня, данная технология изобретена Радьей Перельманом. Данный протокол используется при соединении между собой двух и более коммутаторов дублирующими соединениями или при построении сети по топологии «mesh» (связь всех со всеми). Протокол STP позволяет анализировать сеть и устранять петли (forwardingloops) между коммутаторами, создавая граф передачи пакетов между коммутаторами. При нормальном функционировании сети Ethernet, между двумя коммутаторами может быть активно лишь одно соединение, другие не будут использоваться. Т.к. несколько активных соединений между коммутаторами, создают петлю, STP блокирует одно или несколько таких соединений. Для обеспечения возможности резервирования соединений, протокол STP определяет граф (дерево) из сетевых коммутаторов. Протокол STP, вычислив дублирующиеся пути для данных, блокирует их, переводя в режим ожидания. В случае, если сегмент сети становится недоступным, или меняется вес пути графа STP (например, при изменении скорости соединения), алгоритм STP перестраивает дерево и если требуется, активирует резервные соединения. Работа протокола STP незаметна для оконечных узлов в сети, и неважно, подключены ли они к одному сегменту LAN <#"justify">Глава 1. Алгоритмы работы протокола STP


.1 Протокол STP


Основная задача STP - предотвратить появление петель на втором уровне. Протокол убирает все избыточные пути, пока они не понадобятся. Действия протокола:

определение наиболее эффективного пути и отключение избыточных;

определение работоспособности пути и необходимости включения запасного;

поиск сетевых петель.


1.2 Алгоритмы работы протокола STP

использует алгоритм STA (SpanningTreeAlgorithm), результатом работы которого является граф в виде дерева (связный и без простых циклов). Для обмена информацией между собой коммутаторы используют специальные пакеты - BPDU (Bridge Protocol DataUnits). BPDU бывают двух видов: конфигурационные (ConfigurationBPDU) и TCN (TopologyChangeNotificationBPDU) которые извещают все устройства в сети о том, что топология поменялась. Первые регулярно рассылаются корневым коммутатором (и ретранслируются остальными) и используются для построения топологии, вторые отсылаются в случае изменения топологии сети (при подключении\отключении коммутатора). Конфигурационные BPDU содержат несколько полей:

идентификатор отправителя (Bridge ID),

идентификатор корневого коммутатора (Root Bridge ID),

идентификатор порта, из которого отправлен данный пакет (Port ID),

стоимость маршрута до корневого коммутатора (Root PathCost).

Так как устройства не знают своих соседей, никаких отношений (смежности/соседства) они друг с другом не устанавливают. Они шлют BPDU из всех работающих портов на мульти кастовый Ethernet-адрес 01-80-c2-00-00-00 (по умолчанию каждые 2 секунды), который прослушивают все коммутаторы с включенным STP.

Формирование топологии без петель.

Для устранения петель в сети выбирается корневой мост/коммутатор(root bridge). Это устройство, которое STP считается точкой отсчета, центром сети; все дерево STP сходится к нему. Выбор базируется на таком понятии, как идентификатор коммутатора (Bridge ID). Bridge ID это число длиной 8 байт, которое состоит из Bridge Priority (приоритет, от 0 до 65535, по умолчанию 32768+номер Vlan или Instants MSTP, в зависимости от реализации протокола), и MAC-адреса устройства. В начале выборов каждый коммутатор считает себя корневым, о чем и заявляет всем остальным с помощью BPDU, в котором представляет свой идентификатор как ID корневого коммутатора. При этом, если он получает BPDU с меньшим Bridge ID, он начинает анонсировать полученный Bridge ID в качестве корневого. В итоге, корневым оказывается тот коммутатор, чей Bridge ID меньше всех.

Такой подход таит в себе довольно серьезную проблему. При равных значениях Priority (а они равные, если не менять ничего) корневым выбирается самый старый коммутатор, так как мак адреса прописываются на производстве последовательно, соответственно, чем MAC-адрес меньше, тем устройство старше (если у нас все оборудование одного производителя). Это может привести к падению производительности сети, так как старое устройство, как правило, имеет худшие характеристики. Подобное поведение протокола можно изменить, выставляя значение приоритета на желаемом корневом коммутаторе вручную.

Статусы портов в протоколе SpanningTree

Когда топология сети еще не определена и сеть находится в неопределенном статусе, порт коммутатора, передавая данные, создает временные петли пакетов. Порты коммутаторов должны подождать некоторое время, пока не получат информацию о топологии сети, чтобы начать передавать пакеты по сети LAN. Также, они должны подождать, пока не истечет время жизни пакетов старой топологии.

Каждый порт коммутатора, который использует протокол STP, может находиться в одном из пяти состояний:- Порт находится в заблокированном состоянии. В данном состоянии, порт не передает пакеты, но получает и отвечает на служебные сообщения.Порт сканирует сеть. В данном состоянии, порт не имеет MAC адреса и не передает других MAC адресов, порт принимает и передает пакеты BPDU, а также получает и отвечает на служебные сообщения.Порт изучает топологию сети. В данном состоянии, порт не передает никаких пакетов, кроме пакетов BPDU. Порт находится в режиме заполнения таблицы MAC адресов, и готовится к началу передачи данных, а также он получает и отвечает на служебные сообщения.- Порт находится в режиме передачи. В данном состоянии, порт принимает и передает все пакеты сети.- (Выключен - обычно переведен в такое состоянии вручную). Отключенный порт не принимает и получает никаких типов пакетов в сети.

После перезагрузки коммутатора или изменения топологии сети, порт, использующий STP, четырежды меняет свое состояния.Коммутаторы с резервными соединениями, и правильно настроенные коммутаторы, также могут иметь порты в статусах blocking или Forwarding.

Этапы инициализации порта:

С initializing в blocking.

С blocking в listening.

С listening в learning.

С learning в forwarding.

СForwarding в disabled (при ручной настройке) - не является обязательным шагом.

Порядок перечисления состояний не случаен: при включении (а также при включении нового устройства), все порты на устройстве с STP проходят вышеприведенные состояния именно в таком порядке (за исключением disabled-портов). Возникает закономерный вопрос: а зачем такие сложности? STP осторожничает. Ведь на другом конце провода, который только что воткнули в порт, может быть коммутатор, а это потенциальная петля. Поэтому порт сначала 15 секунд (по умолчанию) пребывает в состоянии прослушивания - он смотрит BPDU, попадающие в него, выясняет свое положение в сети. Потом переходит к обучению еще на 15 секунд - пытается выяснить, какие mac-адреса используются на подключенном проводе, и потом, убедившись, что ничего он не поломает, начинает уже свою работу. Итого, мы имеем целых 30 секунд простоя, прежде чем подключенное устройство сможет обмениваться информацией со своими соседями. Современные компьютеры грузятся быстрее, чем за 30 секунд. Вот комп загрузился, пытается выйти в сеть, пытается обратиться к DHCP-серверу для получения IP-адреса, и, не получив искомого проставляет у себя IP-адрес авто настройки. Получив адрес вида 169.254.x.x компьютер никуда уже выйти не сможет. Для того что бы избежать подобных ситуаций используют режим порта - PortFast.

Режим порта PortFast

Для таких случаев используется особый режим порта - PortFast. При подключении устройства к такому порту, он, минуя промежуточные стадии, сразу переходит к Forwarding-состоянию. Само собой, PortFast следует включать только на интерфейсах, ведущих к конечным устройствам (рабочим станциям, серверам, телефонам и т.д.), но не к другим коммутаторам.

Есть очень удобная команда режима конфигурации интерфейса для включения нужных настроек на порту, в который будут включаться конечные устройства: switchporthost. Эта команда разом включает PortFast, переводит порт в режим access (аналогично switchportmodeaccess), и отключает протокол.


1.3 Пакеты BPDU


Пакеты BPDU регулярно посылаются по сети (по умолчанию, каждые 2 секунды), что позволяет коммутаторам постоянно отслеживать изменения в сети и немедленно на них реагировать.

Стабильность работы активной сетевой конфигурации, определяется следующими факторами:

Уникальный идентификатор коммутатора (MAC адрес), ассоциируется с каждым коммутатором.

Вес пути до корневого коммутатора, присваивается каждому порту.

Идентификатор порта (MAC адрес), ассоциируется с каждым портом коммутатора.

Каждый конфигурационный BPDU пакет содержит следующую информацию:

Уникальный идентификатор коммутатора (MAC адрес), который переправляется корневому коммутатору.

Вес пути до корневого коммутатора от отправившего пакет порта.

Идентификатор порта (MAC адрес), отправившего пакет.

Обмен пакетами BPDU приводит к следующим результатам:

Выбирается единственный корневой коммутатор. Если такой коммутатор не настроен вручную, то корневым выбирается коммутатор, с наименьшим MAC адресом.

Высчитывается кратчайшее расстояние, от корневого коммутатора, до каждого коммутатора сети.

Также определяются коммутаторы, расположенные близ корневого, они будут переправлять пакеты на корневой коммутатор.

Выбираются порты коммутаторов, которые менее всего удалены от корневого коммутатора. Если есть несколько эквивалентных путей, то будет выбран порт с наименьшим MAC адресом.

Выбираются порты, отключенные протоколом STP.

Если все коммутаторы сети настроены по умолчанию, то корневым коммутатором будет выбран коммутатор с наименьшим MAC адресом (ID шлюза). Однако, в зависимости от топологии сети, количества портов, типов и скоростей соединений, автоматический выбор корневого коммутатора по наименьшему MAC адресу, не всегда является оптимальным. Можно запустить перерасчет топологии STP заново, чтобы выбрать более подходящий корневой коммутатор, путем повышения его приоритета в сети.

На Рисунке 1 отображен формат пакета BPDU.


Рисунок 1 - Формат пакета BPDU


Таймеры протокола SpanningTree

Таймеры в протоколе SpanningTree, используются для обеспечения стабильности собранной топологии сети, а также для устранения дублирующихся пакетов в сети, перед началом передачи данных по сети. Существует несколько видов таймеров:- Это время, между отправками на порт пакетов BPDU. По умолчанию, установлен интервал в 2 секунды, но на коммутаторе можно установить значение от 1 до 10 секунд.delay - Это время, в течение которого порт коммутатора будет находиться в состояниях listening и leaning. По умолчанию, установлено значение в 15 секунд, но на коммутаторе можно установить значение от 4 до 30 секунд.Таймер, контролирующий период времени, через которое порт сохраняет свою конфигурацию BPDU. По умолчанию, установлен интервал в 20 секунд, но на коммутаторе можно установить значение от 6 до 40 секунд.

По умолчанию, значения таймеров, используемые в протоколе SpanningTree, достаточно велики для современных сетей. Например, посчитаем время инициализации порта коммутатора:


20 секунд для Max age + 2 x forward delay (15 секунд на listening/learning) = 50 секунд.


ВеспутивSpanningTree

Вес пути напрямую зависит от скорости соединения. Коммутаторы используют путь с наименьшим весом, как основной путь передачи данных. Если существует дублирующий путь, с более высоким весом, то путь не будет использоваться, до тех пор, пока путь с меньшим весом остается доступным. На таблице 1 показано соответствие скорости соединения и веса пути интерфейса.


Таблица 1 - Соответствие скорости соединения и веса пути интерфейса

Скорость передачиВес пути (802.1D)10 Mb/s100100 Mb/s191 Gb/s410 Gb/s2

Оборудование, работающее на втором уровне модели OSI (коммутатор), должно выполнять 3 функции: запоминание адресов, перенаправление (коммутация) пакетов, защита от петель в сети. Разберем по пунктам каждую функцию.

Запоминание адресов и перенаправление пакетов: у каждого коммутатора есть таблица сопоставления MAC-адресов и портов (aka CAM-table- ContentAdresstableMemoryTable). Когда устройство, подключенное к коммутатору, посылает кадр в сеть, коммутаторсмотрит MAC-адрес отправителя и порт, откуда получен кадр, и добавляет эту информацию в свою таблицу. Далее он должен передать кадр получателю, адрес которого указан в кадре. Информацию о порте, куда нужно отправить кадр, он берёт из этой же CAM-таблицы. Но, предположим, что коммутатортолько что включили (таблица пуста), и он понятия не имеет, в какой из его портов подключен получатель. В этом случае он отправляет полученный кадр во все свои порты, кроме того, откуда он был принят. Все конечные устройства, получив этот кадр, смотрят MAC-адрес получателя, и, если он адресован не им, отбрасывают его. Устройство-получатель отвечает отправителю, а в поле отправителя ставит свой адрес, и теперькоммутатор уже знает, что такой-то адрес находится на таком-то порту (вносит запись в таблицу), и в следующий раз уже будет переправлять кадры, адресованные этому устройству, только в этот порт. Чтобы посмотреть содержимое CAM-таблицы, используется команда showmacaddress-table. Однажды попав в таблицу, информация не остаётся там пожизненно, содержимое постоянно обновляется и если к определенному mac-адресу не обращались 300 секунд (по умолчанию), запись о нем удаляется.


Глава 2. Виды протоколов STP


.1 Виды и описание протоколов


.1.1 Протокол CST

STP довольно старый протокол, он создавался для работы в одном LAN-сегменте. А что делать, если мы хотим внедрить его в нашей сети, которая имеет несколько VLAN?

Стандарт 802.1Q, каким образом VLAN передаются внутри канала. Кроме того, он определяет один процесс STP для всех VLAN. BPDU по каналам передаются не тегированными (в native VLAN). Этот вариант STP известен как CST (CommonSpanningTree). Наличие только одного процесса для всех VLAN очень облегчает работу по настройке и разгружает процессор коммутатора, но, с другой стороны, CST имеет недостатки: избыточные связи между коммутаторами блокируются во всех VLAN, что не всегда приемлемо и не дает возможности использовать их для балансировки нагрузки.имеет свой взгляд на STP, и свою проприетарную реализацию протокола - PVST (Per-VLAN SpanningTree) - которая предназначена для работы в сети с несколькими VLAN. В PVST для каждого VLAN-а существует свой процесс STP, что позволяет независимую и гибкую настройку под потребности каждого VLAN-а, но самое главное, позволяет использовать балансировку нагрузки за счет того, что конкретная физическая связь может быть заблокирован в одном VLAN-е, но работать в другом. Минусом этой реализации является, конечно, проприетарность: для функционирования PVST требуется проприетарный же ISL канал между коммутаторами.

Также существует вторая версия этой реализации - PVST+, которая позволяет наладить связь между коммутаторами с CST и PVST, и работает как с ISL- каналами, так и с 802.1q. PVST+ это протокол по умолчанию на коммутаторах Cisco.


2.1.2 Протокол RSTP

В 1990 году реализация STP была включена в стандарт IEEE 802.1D. Тогда время текло медленнее, и перестройка топологии STP, занимающая 30-50 секунд, всех устраивала. Но времена меняются, и через десять лет, в 2001 году, IEEE представляет новый стандарт RSTP (он же 802.1w, он же Rapid Spanning Tree Protocol, или Быстрый STP). Различия между STP (802.1d) и RSTP (802.1w):


Таблица 2 - Различия между STP (802.1d) и RSTP (802.1w)

STP (802.1d)RSTP (802.1w)В уже сложившейся топологии только корневой коммутатор шлет BPDU, остальные ретранслируютВсе коммутаторы шлют BPDU в соответствиисhello-таймером (2 секунды по умолчанию)Состояния портов- блокировка (blocking) - прослушивание (listening) - обучение (learning) - перенаправление\пересылка (forwarding) - отключен (disabled)- отбрасывание(discarding), заменяет disabled, blocking и listening - learning - forwardingРоли портов- корневой (root), участвует в пересылке данных, ведет к корневому мосту - назначенный (designated), тоже работает, ведет от корневого коммутатора - неназначенный (non-designated), не участвует в пересылке данных- корневой (root), участвует в пересылке данных - назначенный (designated), тоже работает - дополнительный (Alternate), не участвует в пересылке данных - резервный (backup), тоже не участвуетМеханизмы работыИспользует таймеры: Hello (2 секунды) MaxAge (20 секунд) Forward delay timer (15 секунд)Использует процесс proposal and agreement (предложение и соглашение)

В RSTP остались такие роли портов, как корневой и назначенный, а роль заблокированного разделили на две новых роли: Alternate и Backup. Alternate - это резервный корневой порт, а backup - резервный назначенный порт. Как раз в этой концепции резервных портов и кроется одна из причин быстрого переключения в случае отказа. Это меняет поведение системы в целом: вместо реактивной (которая начинает искать решение проблемы только после того, как она случилась) система становится проактивной, заранее просчитывающей «пути отхода» еще до появления проблемы. Смысл простой: для того, чтобы в случае отказа основного пути переключится на резервную связь, RSTP не нужно заново просчитывать топологию, он просто переключится на запасной, заранее просчитанный.

Ранее, для того, чтобы убедиться, что порт может участвовать в передаче данных, требовались таймеры, т.е. коммутатор пассивно ждал в течение назначенного времени, слушая BPDU. Ключевой особенностью RSTP стало введение концепции типов портов, основанных на режиме работы связи - fullduplex или half duplex (типы портов p2p или shared, соответственно), а также понятия пограничный порт (тип edge p2p), для конечных устройств. Пограничные порты назначаются, как и раньше, командой Spanning-TreePortFast, и с ними все понятно- при включении провода сразу переходим к Forwarding-состоянию и работаем. Shared-порты работают по старой схеме с прохождением через состояния BLK - LIS - LRN - FWD, а на p2p-портах RSTP использует процесс предложения и соглашения (proposal and agreement). Его можно описать так: коммутатор справедливо считает, что если канал работает в режиме полного дуплекса, и он не обозначен, как пограничный, значит, на нем только два устройства- он и другой коммутатор. Вместо того, чтобы ждать входящих BPDU, он сам пытается связаться скоммутатором на том конце провода с помощью специальных proposal BPDU, в которых, конечно, есть информация о стоимости маршрута к корневому мосту. Второй коммутатор сравнивает полученную информацию со своей текущей, и принимает решение, о чем извещает первый коммутатор посредством agreement BPDU. Так как весь этот процесс теперь не привязан к таймерам, происходит он очень быстро- только подключили новый коммутатор - и он практически сразу вписался в общую топологию и приступил к работе. В CiscoRSTP называется PVRST (Per-Vlan Rapid Spanning Tree).


2.1.3 Протокол MSTP

Чуть выше, мы упоминали о PVST, в котором для каждого VLAN-а существует свой процесс STP. VLAN-ы это довольно удобный инструмент для многих целей, и поэтому, их может быть достаточно много даже в некрупной организации. И в случае PVST, для каждого будет рассчитываться своя топология, тратиться процессорное время и память коммутаторов. А нужно ли нам рассчитывать STP для всех 500 VLAN-ов, когда единственное место, где он нам нужен- это резервный канал между двумя коммутаторами? Тут нас выручает MSTP. В нем каждый VLAN не обязан иметь собственный процесс STP, их можно объединять. Вот у нас есть, например, 500 VLAN-ов, и мы хотим балансировать нагрузку так, чтобы половина из них работала по одному каналу (второй при этом блокируется и стоит в резерве), а вторая- по другому. Это можно сделать с помощью обычного STP, назначив один корневой коммутатор в диапазоне VLAN-ов от 1-250, а другой- в диапазоне 250-500. Но процессы будут работать для каждого из пятисот VLAN-ов по отдельности (хотя действовать будут совершенно одинаково для каждой половины). MSTP позволяет создавать столько процессов STP, сколько у нас логических топологий, и распределять по ним VLAN-ы.


2.2 Агрегация каналов


Какой бы вариант STP не использовался, все равно существует так или иначе неработающий канал связи. Возникает вопрос - возможно ли задействовать параллельные каналы связи пополной и при этом избежать петель? Да, такая возможность есть, используя функции EtherChannelна Cisco. Иначе это называется linkaggregation, linkbundling, NICteaming, porttrunking.

Технологии агрегации (объединения) каналов выполняют 2 функции: с одной стороны, это объединение пропускной способности нескольких физических связей, а с другой - обеспечение отказоустойчивости соединения (в случае падения одного канала нагрузка переносится на оставшиеся). Объединение канало связи можно выполнить как вручную (статическое агрегирование), так и с помощью специальных протоколов: LACP (Link Aggregation Control Protocol) и PAgP (Port Aggregation Protocol). LACP, определяемых стандартом IEEE 802.3ad, является открытым стандартом, то есть от производителя оборудования не зависит. Соответственно, PAgP - проприетарная разработка Cisco.В один такой канал можно объединить до восьми портов. Алгоритм балансировки нагрузки основан на таких параметрах, как IP/MAC-адреса получателей и отправителей, и порты.


Глава 3. Схемы возможных атак, способы их обнаружения и защиты


Идея первой группы атак лежит практически на поверхности. Суть заключается в том, что сам принцип функционирования STP позволяет легко организовать отказ в обслуживании. Действительно, в соответствии со спецификацией протокола, во время реконфигурации SpanningTreeпорты задействованных устройств не передают пользовательские кадры. Таким образом, для приведения сети (или, по крайней мере, одного из ее сегментов) в неработоспособное состояние достаточно заставить STP-совместимое оборудование постоянно находиться в режиме реконфигурации. Это может быть инициализация выборов, например, главного корня, назначенного моста или корневого порта, т. е. любого из выборных объектов. При этом отсутствие в STP каких-либо механизмов аутентификации позволяет злоумышленнику относительно легко добиться своей цели путем посылки пакетов BPDU.

Программу, генерирующую BPDU, можно реализовать на любом из языков высокого уровня, если он позволяет работать с сокетами (raw-socket). Другой вариант - использование стандартных утилит для управления SpanningTree, например из проекта Linux Bridge Project. Однако в последнем случае невозможна манипуляция параметрами STP со значениями, выходящими за пределы спецификации.


3.1 Основные методы атаки на протокол STP


.1.1 Вечные выборы

Атакующий производит мониторинг сети при помощи сетевого анализатора и дожидается прохождения очередного конфигурационного BPDU от корневого моста, из которого он узнает его идентификатор. После этого он посылает в сеть пакет с идентификатором моста на единицу меньшим, чем у текущего корневого моста, тем самым заявляя о желании стать корневым мостом и инициируя выборы. Затем он вновь уменьшает на единицу значение идентификатора моста и посылает новый пакет, заставляя сеть перейти к новой волне выборов. По достижении минимального значения идентификатора, злоумышленник вновь переходит к значению, с которого он начал. Таким образом, сеть постоянно будет находиться в состоянии выборов корневого моста, и порты STP-совместимых устройств никогда не перейдут в состояние пересылки пакетов в течение этой атаки.


3.1.2 Исчезновение корня

В этой атаке злоумышленнику нет необходимости выяснять идентификатор текущего корневого моста. Он сразу устанавливает в отсылаемых пакетах минимально возможное значение, что, как мы помним, означает наивысший приоритет. По окончании выборов злоумышленник перестает передавать конфигурационные BPDU, что через промежуток времени MaxAgeTime приводит к повторным выборам, в которых он также участвует (и побеждает). Задав минимально возможное значение MaxAgeTime, он может добиться ситуации, когда сеть большую часть времени будет находиться в состоянии реконфигурации (данный тезис в равной степени относится и к предыдущей схеме атаки, а именно к той ее стадии, когда злоумышленник возвращается от минимального возможного значения идентификатора моста к начальному). Такая атака может показаться менее эффективной, однако она проще в реализации. Кроме того, в зависимости от масштабов сети и еще ряда условий (в частности, значения задержки пересылки Forward Delay, определяющего скорость перехода портов в состояние пересылки), порты STP-совместимых устройств, при этой атаке могут никогда не приступать к пересылке обычных пакетов, что делает угрозу ее применения не менее опасной.


3.1.3 Слияние-расхождение деревьев

В сети с поддержкой VLAN возможно проведение модификации только что описанной атаки. Если злоумышленник подключит свою рабочую станцию, оснащенную двумя сетевыми интерфейсами, к портам коммутаторов, относящимся к разным VLAN, и начнет осуществлять пересылку BPDU из одной VLAN в другую, то в результате деревья STP обеих VLAN "увидят" друг друга, что приведет к перевыборам корня. По окончании выборов злоумышленник разрывает связь между VLAN, что по истечении MaxAgeTime снова вызывает реконфигурацию. Такие действия можно реализовать практически вручную, замыкая порты с помощью кроссировочного кабеля. Естественно, эта атака эффективна только в сетях с поддержкой отдельного дерева STP на каждую VLAN и организации VLAN на базе портов. К счастью, в крупных организациях доступ к портам оборудования ограничен.


3.1.4 Локализованный отказ в обслуживании

Злоумышленник может вызвать отказ в обслуживании не во всей сети, а лишь на одном из ее участков. Поводов для этого у него может быть много: например, для проведения атаки "ложный сервер" он может захотеть изолировать клиента-жертву от настоящего сервера. Реализацию данного вида атаки лучше рассмотреть на примере. В изображенной на Рисунке 2 сети серверы подключены непосредственно или через концентраторы к одному коммутатору, а клиенты - к другому.

протокол сниффинг канал атака

Рисунок 2 - Сервер и клиенты подключены к разным компьютерам


Злоумышленнику (на рисунке - атакующий), находящемуся в одном сегменте с клиентом, для "выключения" из работы одного из участников соединения (в данном случае - сервера) необходимо убедить ближайший к себе коммутатор, что он имеет лучший путь до второго коммутатора, к которому подключен сервер. В терминах STP, злоумышленник должен инициировать и выиграть выборы назначенного моста для "серверного" сегмента. В результате коммутаторы "отключат" использующийся в настоящий момент канал, переведя соответствующие порты в блокированное состояние, и связь между сегментами нарушится. После этого злоумышленник может выдавать себя за сервер или просто злорадствовать, если отказ в обслуживании был основной целью атаки.


3.1.5 Фильтр BPDU

Основное назначение STP состоит в предотвращении образования колец. Очевидный метод атаки заключается в образовании кольца, наличие которого будет невозможно отследить средствами STP. Этого можно добиться, организовав физическое кольцо с фильтрацией на нем всех BPDU. Такая атака приведет к частичному отказу в обслуживании или, когда у образующих кольцо каналов разные скорости, к существенной деградации пропускной способности. Действительно, если замкнуть в кольцо два концентратора и пустить запрос ping между двумя рабочими станциями, через некоторое время хождение пакетов прекратится - образовавшееся кольцо приведет к постоянной регенерации кадров.


3.1.6 Незаконный посредник (man in the middle)

Эта и следующая атаки имеют принципиальное отличие от рассмотренных выше, так как они направлены не на достижение отказа в обслуживании, а ставят своей целью обеспечение перехвата информации, который при обычном функционировании сети невозможен.

Суть данной атаки с использованием STP заключается в изменении логической структуры сети таким образом, чтобы интересующий трафик шел через станцию атакующего. Снова обратимся к Рисунку 2. В отличие от рассмотренного выше частичного отказа в обслуживании, представим, что станция злоумышленника оснащена двумя сетевыми интерфейсами, один из которых подключен к клиентскому сегменту, а другой - к серверному. Посылая соответствующие BPDU, атакующий инициирует выборы назначенного моста для обоих сегментов и выигрывает их. Существующий канал между коммутаторами выключается, и весь межсегментный трафик направляется через станцию атакующего. В случае отсутствия намерения попутно устроить отказ в обслуживании для других станций и серверов, он должен обеспечить пересылку трафика. Причем если целью является простое прослушивание и модификация проходящего трафика не требуется, то реализация этой функции в виде программного модуля тривиальна; более того, любая ОС с поддержкой функций моста и STP, например Linux Bridge Project, представляет уже готовое решение. Конечно, следует учитывать тот факт, что связь между коммутаторами может осуществляться со скоростью 100 Мбит/с, а "пользовательские" порты способны работать со скоростью 10 Мбит/с - тогда межсегментное соединение превратится в узкое место с неизбежной потерей пакетов. Ситуация может усугубиться, если часть трафика необходимо каким-либо образом изменить - злоумышленнику понадобится более мощная рабочая станция.

К счастью, эта атака невозможна в сети с единственным коммутатором (тогда это будет уже частичный DoS), и ее реализация тривиальна только в том случае, когда злоумышленник подключен одновременно к двум соседним коммутаторам. Если же он связан с коммутаторами, между которыми нет прямого соединения, ему придется подбирать, как минимум, один идентификатор моста, так как STP-совместимые устройства не передают дальше полученные BPDU, а лишь генерируют на их основе собственные.

3.1.7 Спровоцированный сниффинг

Сниффингом (sniffing) принято называть прослушивание сетевого трафика путем перевода сетевого интерфейса в режим приема всех пакетов (promiscuousmode или promiscmode - «неразборчивый» режим, в котором сетевая плата <http://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BB%D0%B0%D1%82%D0%B0> позволяет принимать все пакеты независимо от того, кому они адресованы, возможность обычно используется в сетевых <http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0> анализаторах трафика), а не только адресованных ему или широковещательных. Очевидно, что в сети, построенной на базе коммутаторов, злоумышленник не имеет возможности перехватить пакеты, если они адресованы не ему, так как пакет направляется не во все порты (как на концентраторе), а лишь в тот, к которому присоединен получатель. Традиционно злоумышленники обходили данную проблему путем генерации шторма пакетов с различными MAC-адресами источника. Это приводило к переполнению таблицы коммутации (где хранятся соответствия между MAC-адресами и портами) вследствие ее конечного размера и, фактически, к переводу коммутатора в режим концентратора.

Аналогичных результатов злоумышленник может добиться и с использованием STP. Дело в том, что, в соответствии со спецификацией, после изменения дерева STP (например, после перевыборов назначенного моста) STP-совместимое устройство должно удалить из своей таблицы коммутации записи (за исключением статически заданных администратором значений), "возраст" которых больше, чем время, проведенное в состояниях прослушивания и обучения. Вследствие этого коммутатор кратковременно перейдет в режим концентратора, пока он не "обучится" и не заполнит таблицу вновь.

Внимательный читатель, конечно, уже заметил слабое место в этой теории: коммутатор обучается слишком быстро, после получения первого же пакета от "жертвы" он заносит данные об адресе в таблицу коммутации и перестает посылать следующие пакеты на все порты. Однако данную атаку не стоит игнорировать; это связано с внесением производителями сетевого оборудования расширений STP в свои изделия. Сразу после выборов STP сеть недоступна. Чтобы сократить время, на портах, к которым подключены серверы и рабочие станции, в коммутаторах многих производителей (Cisco, Avaya, 3Com, HP и др.) введена возможность пропуска состояний прослушивания и обучения, т. е. перехода из "блокирован" в "передает" и наоборот. У различных производителей такая возможность называется по-разному: например, у Cisco -SpanningTreePortfast, а у 3Com - STP FastStart. Если данный режим включен, то постоянная инициализация выборов приведет не к отказу в обслуживании, а к постоянной очистке таблицы коммутации, т. е. переводу коммутатора в режим концентратора. Надо заметить, что эта функция не должна включаться на транковых портах, иначе сходимость STP (переход в устойчивое состояние или прекращение перевыборов) не гарантирована. К счастью, для успешной реализации описанной атаки, злоумышленнику надо добиваться очистки таблицы коммутации, по крайней мере, вдвое чаще, чем приходят интересующие его пакеты, а на практике это зачастую невозможно.

Перехват трафика (а именно эту цель ставят перед собой две последние атаки) в сети на базе коммутаторов возможно осуществить и при помощи широко известной технологии arp-poisoning, суть которой заключается в дистанционной модификации ("отравлении") таблиц arpжертв путем посылки ложных пакетов arp-reply. В результате оба участника соединения считают, что IP-адресу корреспондента соответствует MAC-адрес злоумышленника, и последний может просматривать весь трафик между ними. Впрочем, данная атака эффективна лишь для перехвата IP-трафика и только между двумя IP-адресами. Атака же с использованием STP позволяет перехватывать весь трафик, так как осуществляется на канальном уровне OSI и изменяет маршрут движения всех кадров, несущих различные протоколы (IPX, NETBEUI), а не только IP.


3.2 Другие возможные атаки


.2.1 Атака STP на соседнюю VLAN из собственной VLAN

В числе непроверенных, но потенциально возможных атак стоит отметить - атаку STP на соседнюю VLAN из собственной VLAN.

Согласно 802.1Q, мост с поддержкой VLAN может по данному каналу принимать либо все кадры, либо только кадры с выставленными соответствующими тегами. Поскольку в сетях с VLAN на транковых портах STP будет передаваться в кадрах с выставленными тегами, то атаковать VLAN возможно путем отправки пакетов STP в кадрах с выставленными тегами порту, на котором не предусмотрена поддержка тегов. В 802.1Q предусмотрена возможность фильтрации таких кадров в зависимости от настроек моста. Например, оборудование Cisco отбрасывает кадры с выставленными тегами на не поддерживающих теги портах, по крайней мере, пользовательские, что ставит возможность данной атаки под сомнение.

Стоит отметить, что используемые для соединения сетей каналы глобальной сети уязвимы к атакам STP. Это явно указывается в спецификации BCP, где декларируется поддержка STP поверх каналов PPP глобальной сети. Неожиданным следствием этого может стать атака на сеть провайдера Internet через обычное коммутируемое подключение. Согласно RFC 2878, где описывается BCP, для поддержки STP на канале PPP она должна быть запрошена обеими сторонами, чего обычно не происходит. Тем не менее поддержка STP включена, например, на большинстве маршрутизаторов Cisco, как минимум, на тех из них, которые умеют организовывать виртуальные интерфейсы в группы мостов (bridgegroup).

ВописанииGenericAttributeRegistrationProtocol (GARP) отмечается, чтоSTP - частный случай GARP. Часть атак осуществима и против GARP вообще, и GenericVlanRegistration Protocol (GVRP) в частности. Данный факт позволяет утверждать, что VLAN нельзя использовать в качестве единственного средства защиты в сетях. Собственно, стандарт 802.1Q - логическое продолжение 802.1D, но при этом не свободен от тех же недостатков.

Какие же сети являются уязвимыми к атакам с использованием STP? Ответ неутешителен: все, поддерживающие стандарт 802.1D и, с некоторыми ограничениями, 802.1Q. Причем если для некоторых продуктов использование STP надо явно разрешить при конфигурировании, то другие, и таких большинство, поставляются с включенным STP "из коробки".


3.2.2 Получение дополнительной информации о сети при помощи STP

С помощью STP возможно получение дополнительных данных о структуре сети. При этом такое получение дополнительных знаний может быть как пассивным (прослушивание среды передачи данных), так и активным - выиграв на короткое время статус STP корня мы автоматически становимся целью отправки STP TCN-BPDU, которые сами по себе несут некоторый объем познавательной информации. Например, проанализировав source MAC адрес, можно понять устройство какой фирмы отправило этот пакет, а это тоже атака, хоть и пассивная.


3.3 Способы обнаружения атак и защиты от них


Основная сложность обнаружения атак против STP состоит в том, что для атаки используются стандартные пакеты протокола - C-BPDU, т. е. сам по себе факт наличия в сети пакетов STP не может безоговорочно означать атаку.

Другая сложность заключается в том, что система обнаружения атак (IntrusionDetectionSystem, IDS) должна обладать некими эмпирическими данными об архитектуре сети и входящих в нее устройствах (в частности, перечнем всех идентификаторов мостов), в противном случае она не сможет отличить пакеты злоумышленника от обычного трафика STP.

Кроме того, поскольку атаке подвергается топология и работоспособность сети, IDS должна иметь собственный независимый канал для передачи сообщений ответственному за безопасность. Они могут передаваться через модем или подключенный к IDS мобильный телефон на пейджер или другой мобильный телефон, либо непосредственно через соединение IDS с рабочим местом администратора безопасности. При этом вполне возможно, что атака не будет обнаружена (falsenegative), если соответствующие BPDU окажут свое воздействие на оборудование раньше, чем будут зафиксированы датчиком IDS и переданы на центральную станцию, либо не появятся в контролируемых IDS сегментах.

В каждой конкретной сети можно попытаться описать ее нормальное состояние с точки зрения STP. Например, в сети, где STP на всех устройствах отключен, появление соответствующих пакетов с высокой долей вероятности может означать попытку атаки. Проведение серии выборов корневого моста с постоянным снижением значения идентификатора моста либо отсутствие других видов трафика, кроме STP, может означать атаку "вечные выборы". В сети, перечень идентификаторов мостов которой фиксирован и известен, появление BPDU с новым идентификатором также, скорее всего, означает атаку.

Возможно, эффективным решением станет внедрение адаптивных, самообучающихся IDS с применением технологии нейронных сетей, поскольку они могут сравнить текущее состояние сети с "нормальной" ситуацией. Одним из оценочных параметров может быть доля трафика STP в общем сетевом трафике.

Что сетевые администраторы могут сделать самостоятельно до кардинального решения проблемы?

Если использование STP в сети не является жизненно необходимым, данный протокол нужно отключить на всех поддерживающих его устройствах. В большинстве устройств он включен по умолчанию.

В некоторых случаях управление дублирующими каналами можно осуществлять при помощи других механизмов, например Link Aggregation (поддерживается многими устройствами, в том числе Intel, Avaya и др.).

Если оборудование обладает функцией индивидуального включения/отключения STP на каждом порту, STP необходимо отключить на всех портах, кроме поддерживающих теги, если они связаны с другим сетевым оборудованием, но не с пользовательскими сегментами. Особенно это касается провайдеров Internet, так как недобросовестные пользователи могут осуществить атаку DoS как против сети провайдера, так и против других клиентов.

По возможности, необходимо сегментировать STP, т.е. создать несколько деревьев STP. В частности, если два сегмента сети (офисы) связаны одним каналом глобальной сети, использование STP на этом канале следует отключить.

При настройке сетевого оборудования входящее в идентификатор моста поле приоритета следует задать минимальным (что поднимает приоритет). Это снизит шансы злоумышленника выиграть выборы корневого моста при осуществлении атаки.

Если доступность сервисов имеет приоритетное значение, а конфиденциальность передаваемой информации обеспечивается протоколами верхних уровней, то при наличии в оборудовании функций, аналогичных SpanningTreePortfast компании Cisco или STP FastStart компании 3Com, их необходимо задействовать - это предотвратит атаки, направленные на отказ в обслуживании. Однако, как подчеркивают специалисты компаний-производителей, этого нельзя делать на портах, к которым подключены STP-совместимые устройства.

В свою очередь, разработчикам стандарта и производителям оборудования необходимо предусмотреть внесение ряда изменений в STP. Прежде всего это касается дополнения его механизмом аутентификации объектов, отсутствующим, к слову сказать, и во многих других сетевых протоколах. Реализация этого механизма возможна с использованием какого-либо распространенного криптографического протокола, например, следующим образом.

В пределах группы оборудования, которое должно образовать дерево STP, выбирается так называемый общий секрет (пароль, ключ), после чего он заносится в каждое включаемое в группу устройство (аппаратно, при помощи переключателей dip либо на смарт-карте или i-button).

Передаваемые BPDU защищаются при помощи MassageAuthenticationCode (MAC), кода идентификации сообщения. Для этого к подготовленному к передаче пакету BPDU присоединяется общий секрет и для всего этого массива рассчитывается значение хэш-функции (например, SHA-1). Полученный хэш добавляется к отправляемому пакету BPDU (сам секрет при этом не передается).

На принимающей стороне к пакету добавляется общий секрет, рассчитывается хэш и сравнивается с полученным. В случае совпадения получатель удостоверяется, что пакет поступил от одного из членов группы, "знающих" общий секрет.


Заключение


Ошибки в такой сложной области, как информационные технологии и, в частности, телекоммуникации, практически неизбежны. Однако это не означает, что их развитие должно из-за этого тормозиться - не ошибается лишь тот, кто ничего не делает, как гласит народная мудрость. Между тем с усложнением технологий необходимо переходить к качественно другим методам проектирования и разработки, учитывающим все нюансы функционирования будущей системы, в том числе и вопросы обеспечения безопасности. На наш взгляд, перспективным является применение методов математического моделирования, с помощью которых не только проверяется поведение проектируемой системы в условиях стандартных управляющих и возмущающих воздействий, но и прогнозируется ее поведение при выходе ряда параметров за заданные граничные условия.

Закономерно, что разработчик, прежде всего, думает об основной цели разработки, побочные вопросы решаются во вторую очередь либо оставляются на потом. Однако, как показывает практика, если вопросы безопасности не учитываются с самого начала, в дальнейшем построение подсистемы безопасности в сколько-нибудь сложной информационной системе неэффективно и дорого, так как просчеты проектирования, в отличие от просчетов реализации и конфигурации, труднее всего обнаруживаются и устраняются.


Список литературы


1.Таненбаум Э. Компьютерные сети / Э. Таненбаум. - 4-е изд.: Питер, 2013. - 992 с.

2.Хант К. TCP/IP. Сетевое администрирование. К. Хант. - 1е изд.: Символ-Плюс, 2010. - 816 с.

.Олифер В. Компьютерные сети. Принципы, технологии, протоколы. Учебник для вузов / В. Олифер, Н. Олифер; Питер, 2014. -960 с.

.Смирнова Е. Технологии современных сетей Ethernet. Методы коммутации и управления потоками данных / Е. Смирнова, П. Козик; БХВ-Петербург, 2012.-272 с.



Введение Протокол STP (SpanningTreeProtocol) - сетевой протокол второго уровня, данная технология изобретена Радьей Перельманом. Данный протокол использу

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ