Tag: MPLS
-

Виртуальная сеть на платформе Cisco 7200
После просмотра видеоуроков по курсу CCNA решил провести маленький эксперимент и собрать виртуальный DATA CENTER на своём ноутбуке. Для большей доступности и простоты не стал связываться с Cisco CSR 1000v Cloud Services Router, а ограничился эмулятором сетевых устройств Dynagen. Топология простая, но в тоже время дает возможность протестировать много интересных вещей вплоть до Frame Relay Traffic shaping.Итак, для сборки виртуального маршрутизатора Cisco с подключением его к реальной сети нам понадобится образ Cisco IOS, лучше взять какой-нибудь из серии 7200 подборки Cisco IOS, выберем от туда, например c7200-spservicesk9-mz.152-4.S.bin. Лучше всего его распаковать при помощи WinRAR перед использованием – меньше времени будет тратиться на запуск виртуальной машины.
При первом запуске виртуальной машины Dynagen с Cisco IOS для её корректной работы необходимо получить значение задержки процессора для работы этой машины, для возьмём самую простую конфигурацию без подключения к сетевым ресурсам, этого вполне достаточно, чтобы получить значение idlepc для этой машины и выбранного вами образа Cisco IOS:
# Cisco 7200 with 2 FE interfaces
[localhost][[7200]]
image = C:Program FilesDynamipsimagesc7200-spservicesk9-mz.152-4.S.bin
sparsemem = True
[[ROUTER R1]]
slot0 = C7200-IO-FE
slot1 = PA-FE-TXДля того, чтобы Dynagen правильно посчитал значение idlepc нужно дождаться полной загрузки и запуска виртуальной машины с образом Cisco IOS. Для этого, прежде чем получать idlepc, нужно подключиться к виртуальной машине Cisco 7200 через консоль, и только дождавшись приглашения Router> следует выполнять команду idlepc get R1
Для подключения виртуальной машины Cisco к реальной сети, нужно узнать идентификаторы сетевых карт ноутбука, делается это очень просто запускаем ярлык «Network device list» и видим список наших сетевых карт с их идентификаторами (надеюсь, что необходимый для работы с реальной сетью драйвер WinPCAP вы уже установили):
Копируем идентификаторы наших сетевых карт и прописываем их в конфигурационном файле Dynagen, в моем случае конфигурация виртуальной машины Cisco 7200 выглядит так:
# Cisco 7200 with 2 FE interfaces
[localhost][[7200]]
image = C:Program FilesDynamipsimagesc7200-spservicesk9-mz.152-4.S.bin
idlepc = 0x60688d8c
sparsemem = True
[[ROUTER R1]]
slot0 = C7200-IO-FE
slot1 = PA-FE-TX
cnfg = startup.cfg
mac = 00:20:0C:1C:AB:EF
F0/0 = NIO_gen_eth:DeviceNPF_{A0CCCD9D-7176-4294-91E9-AA05B740D2E8}
F1/0 = NIO_gen_eth:DeviceNPF_{5465CB24-835B-44CA-B91E-2D1E12B4B35B}Как видно из файла конфигурации я ассоциировал Fast Ethernet адаптер моего ноутбука с интерфейсом fa1/0 маршрутизатора R1, это необходимо для подключения нашего DATA CENTER к внешнему миру, теперь можно начинать тестирование.
Если у вас возникли вопросы по поводу конфигурации Dynagen то стоит прочесть Dynagen Tutorial или пообщаться со мной в ICQ.
Попробуем теперь выйти в Интернет с виртуальной машины Cisco 7200:
Router>trace ya.ru
Translating “ya.ru”…domain server (8.8.8.8) [OK]Type escape sequence to abort.
Tracing the route to ya.ru (213.180.193.3)
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.4.100 16 msec 8 msec 8 msec
2 192.168.0.100 12 msec 272 msec 8 msec
3 10.0.0.1 12 msec 8 msec 8 msec
4 * * *
5 * * *
6 10.63.176.34 [MPLS: Label 16432 Exp 0] 8 msec 116 msec 16 msec
7 10.63.130.134 156 msec 204 msec *
8 10.255.63.29 72 msec 128 msec 224 msec
9 yota.ru (94.25.130.250) 132 msec
ya.ru (213.180.193.3) 136 msec 156 msec
Router>Как видим – все работает. Подключив мой любимый iPod touch через свободный интерфейс fa0/0 я имел возможность также легко читать любимые странички, слушать музыку и качать файлы со скоростью до 1 МБит/С.
Кроме образа Cisсo IOS модели 7200 можно использовать образы 1710, 1720, 1721, 1750, 1751, 1760, 2610, 2611, 2620, 2621, 2610XM, 2611XM, 2620XM, 2621XM, 2650XM, 2651XM, 2691, 3725, 3745, 3620, 3640, 3660 моделей для создания виртуальной машины. Скажу честно, они более легкие и запускаются быстрее, однако самые новые версии IOS 15.0 и выше Cisco в настоящий момент выпускает только для модели 7200, потому как остальные перечисленые в этом списке, морально устарели.
Думаю, что нашу задачу создать виртуальный DATA CENTER в домашних условиях на простом ноутбуке можно считать выполненной.
-
DDOS атаки на маршрутизатор и методы защиты Juniper routing engine
По долгу службы мне часто приходится сталкиваться с DDOS на сервера, но некоторое время назад столкнулся с другой атакой, к которой был не готов. Атака производилась на маршрутизатор Juniper MX80 поддерживающий BGP сессии и выполняющий анонс сетей дата-центра. Целью атакующих был веб-ресурс расположенный на одном из наших серверов, но в результате атаки, без связи с внешним миром остался весь дата-центр. Подробности атаки, а также тесты и методы борьбы с такими атаками под катом.История атаки
Исторически сложилось, что на маршрутизаторе блокируется весь UDP трафик летящий в нашу сеть. Первая волна атаки (в 17:22) была как раз UDP трафиком, график unicast пакетов с аплинка маршрутизатора:
и график unicast пакетов с порта свича подключенного к роутеру:
демонстрируют, что весь трафик осел на фильтре маршрутизатора. Поток unicast пакетов на аплинке маршрутизатора увеличился на 400 тысяч и атака только UDP пакетами продолжалась до 17:33. Далее атакующие изменили стратегию и добавили к атаке UDP еще и атаку TCP SYN пакетами на атакуемый сервер, а также на сам маршрутизатор. Как видно по графику, маршрутизатору стало настолько плохо, что он перестал отдавать SNMP в zabbix. После волны SYN на порты маршрутизатора стали отваливаться BGP сессии с пирами (используется три аплинка с каждого получаем full view по ipv4 и по ipv6), в логах появились трагические записи:
Как было выяснено позже, после атаки, волна TCP SYN увеличила нагрузку на routing engine маршрутизатора после чего упали все BGP сессии и маршрутизатор не смог самостоятельно восстановить работу. Атака на маршрутизатор длилась несколько минут, но из-за дополнительной нагрузки, маршрутизатор не мог обработать full view с трех аплинков и сессии снова рвались. Восстановить работу удалось только поочередным поднятием всех BGP сессий. Дальнейшая атака шла на сам сервер.Испытание в условиях стенда и воспроизведение атаки
В качестве цели атаки использовался Juniper MX80 с той же версией прошивки, что и на боевом роутере. В качестве атакующего использовался сервер с 10Gb картой и установленной на нем ubuntu server + quagga. Генератором трафика выступал скрипт с вызовом утилиты hping3. Для проверки пагубного воздействия “всплесков” трафика, скрипт генерировал трафик с временными разрывами: 30 секунд атака — 2 секунды атаки нет. Также, для чистоты эксперимента, была поднята BGP сессия между маршрутизатором и сервером. В установленной на тот момент конфигурации боевого маршрутизатора, порты BGP и SSH были открыты на всех интерфейсах/адресах маршрутизатора и не фильтровались. Аналогичная конфигурация была перенесена на стендовый маршрутизатор.
Первым этапом испытаний стала атака TCP SYN на BGP (179) порт маршрутизатора. IP адрес источника совпадал с адресом пира в конфигурации маршрутизатора. IP address spoofing не исключался, так как у наших аплинков не включен uPRF. Сессия была установлена. Со стороны quagga:
Со стороны Juniper:
После начала атаки (13:52) на маршрутизатор летит ~1.2 Mpps трафика:
или 380Mbps:
Нагрузка на CPU RE и CPU FE маршрутизатора возрастает:
После задержки (90 сек) BGP сессия падает и больше не поднимается:Jul 4 13:54:01 MX80 rpd[1407]: bgp_hold_timeout:4035: NOTIFICATION sent to 9.4.8.2 (External AS 4567): code 4 (Hold Timer Expired Error), Reason: holdtime expired for 9.4.8.2 (External AS 4567), socket buffer sndcc: 38 rcvcc: 0 TCP state: 4, snd_una: 3523671294 snd_nxt: 3523671313 snd_wnd: 114 rcv_nxt: 1556791630 rcv_adv: 1556808014, hold timer out 90s, hold timer remain 0s
Маршрутизатор занят обработкой прилетающего TCP SYN на порт BGP и не может установить сессию. На порту множество пакетов:user@MX80> monitor traffic interface ge-1/0/0 count 20
13:55:39.219155 In IP 9.4.8.2.2097 > 9.4.8.1.bgp: S 1443462200:1443462200(0) win 512
13:55:39.219169 In IP 9.4.8.2.27095 > 9.4.8.1.bgp: S 295677290:295677290(0) win 512
13:55:39.219177 In IP 9.4.8.2.30114 > 9.4.8.1.bgp: S 380995480:380995480(0) win 512
13:55:39.219184 In IP 9.4.8.2.57280 > 9.4.8.1.bgp: S 814209218:814209218(0) win 512
13:55:39.219192 In IP 9.4.8.2.2731 > 9.4.8.1.bgp: S 131350916:131350916(0) win 512
13:55:39.219199 In IP 9.4.8.2.2261 > 9.4.8.1.bgp: S 2145330024:2145330024(0) win 512
13:55:39.219206 In IP 9.4.8.2.z39.50 > 9.4.8.1.bgp: S 1238175350:1238175350(0) win 512
13:55:39.219213 In IP 9.4.8.2.2098 > 9.4.8.1.bgp: S 1378645261:1378645261(0) win 512
13:55:39.219220 In IP 9.4.8.2.30115 > 9.4.8.1.bgp: S 1925718835:1925718835(0) win 512
13:55:39.219227 In IP 9.4.8.2.27096 > 9.4.8.1.bgp: S 286229321:286229321(0) win 512
13:55:39.219235 In IP 9.4.8.2.2732 > 9.4.8.1.bgp: S 1469740166:1469740166(0) win 512
13:55:39.219242 In IP 9.4.8.2.57281 > 9.4.8.1.bgp: S 1179645542:1179645542(0) win 512
13:55:39.219254 In IP 9.4.8.2.2262 > 9.4.8.1.bgp: S 1507663512:1507663512(0) win 512
13:55:39.219262 In IP 9.4.8.2.914c/g > 9.4.8.1.bgp: S 1219404184:1219404184(0) win 512
13:55:39.219269 In IP 9.4.8.2.2099 > 9.4.8.1.bgp: S 577616492:577616492(0) win 512
13:55:39.219276 In IP 9.4.8.2.267 > 9.4.8.1.bgp: S 1257310851:1257310851(0) win 512
13:55:39.219283 In IP 9.4.8.2.27153 > 9.4.8.1.bgp: S 1965427542:1965427542(0) win 512
13:55:39.219291 In IP 9.4.8.2.30172 > 9.4.8.1.bgp: S 1446880235:1446880235(0) win 512
13:55:39.219297 In IP 9.4.8.2.57338 > 9.4.8.1.bgp: S 206377149:206377149(0) win 512
13:55:39.219305 In IP 9.4.8.2.2789 > 9.4.8.1.bgp: S 838483872:838483872(0) win 512
Вторым этапом испытаний стала атака TCP SYN на BGP (179) порт маршрутизатора. IP адрес источника выбирался случайно и не совпадал с адресом пира указанным в конфигурации маршрутизатора. Эта атака произвела на маршрутизатор такой же эффект. Дабы не растягивать статью однообразными выводами логов, приведу только график нагрузки:
По графику отчетливо видно момент начала атаки. BGP сессия также упала и не смогла восстановиться.Концепция построения защиты RE маршрутизатора
Особенность работы оборудования Juniper заключается в разделении задач между routing engine (RE) и packet forwarding engine (PFE). PFE обрабатывает весь поток проходящего трафика осуществляя его фильтрацию и маршрутизацию по заранее сформированной схеме. RE занимается обработкой прямых обращений к маршрутизатору (traceroute, ping, ssh), обработкой пакетов для служб BGP, NTP, DNS, SNMP и формирует схемы фильтрации и маршрутизации трафика для PFE маршрутизатора.
Основная идея защиты маршрутизатора состоит в фильтрации всего трафика предназначенного для RE. Создание фильтра позволит перенести нагрузку, создаваемую DDOS атакой, с CPU RE на CPU PFE маршрутизатора, что даст возможность RE обрабатывать только реальные пакеты и не тратить процессорное время на другой трафик. Для построения защиты необходимо определить, что фильтруем. Схема написания фильтров для IPv4 была взята из книги Douglas Hanks Jr. — Day One Book: Securing the Routing Engine on M, MX and T series. В моем случае на маршрутизаторе схема была следующей:
По протоколу IPv4- BGP — фильтруем пакеты по source и destination ip, source ip может быть любой из списка bgp neighbor. Разрешаем только подключения tcp established, то есть фльтр будет отбрасывать все SYN прилетающие на этот порт, а сессия BGP будет начинаться только от нас (BGP сосед аплинка работает в пассивном режиме).
- TACACS+ — фильтруем пакеты по source и destination ip, source ip может быть только из внутренней сети. Ограничиваем полосу пропускания в 1Mb/s.
- SNMP — фильтруем пакеты по source и destination ip, source ip может быть любой из списка snmp-clients в конфигурации.
- SSH — фильтруем пакеты по destination ip, source ip может быть любой, так как есть необходимость экстренного доступа к устройству из любой сети. Ограничиваем полосу пропускания в 5Mb/s.
- NTP — фильтруем пакеты по source и destination ip, source ip может быть любой из списка ntp servers конфигурации. Ограничиваем полосу пропускания в 1Mb/s (в дальнейшем порог был уменьшен до 512Kb/s).
- DNS — фильтруем пакеты по source и destination ip, source ip может быть любой из списка dns servers конфигурации. Ограничиваем полосу пропускания в 1Mb/s.
- ICMP — фильтруем пакеты, пропускаем только на адреса принадлежащие маршрутизатору. Ограничиваем полосу пропускания в 5Mb/s (в дальнейшем порог был уменьшен до 1Mb/s).
- TRACEROUTE — фильтруем пакеты, пропускаем только пакеты с TTL равным 1 и только на адреса принадлежащие маршрутизатору. Ограничиваем полосу пропускания в 1Mb/s.
По протоколу IPv6, в моем случае, фильтры накладывались только на BGP, NTP, ICMP, DNS и traceroute. Единственное отличие в фильтрации ICMP трафика, так как IPv6 использует ICMP в служебных целях. Остальные протоколы не использовали IPv6 адресацию.Написание конфигурации
Для написания фильтров в juniper существует удобный инструмент — prefix-list, который позволяет динамически составлять списки ip адресов/подсетей для подстановки в фильтры. Например, для создания списка адресов ipv4 BGP соседей указанных в конфигурации, используется следующая структура:
результат составления списка:show configuration policy-options prefix-list BGP-neighbors-v4 | display inheritance
##
## apply-path was expanded to:
## 1.1.1.1/32;
## 2.2.2.2/32;
## 3.3.3.3/32;
##
apply-path «protocols bgp group <*> neighbor <*.*>»;
Составляем динамические списки префиксов для всех фильтров:
Составляем политики для ограничения пропускной способности:
Ниже, под «копи-паст», конфигурация фильтров конечного варианта защиты (были уменьшены пороги пропускной способности трафика NTP и ICMP, причины снижения порогов подробно описаны в разделе тестирования). Настраиваем фильтры ipv4:
Аналогичный фильтр для ipv6:
Далее необходимо применить фильтры на служебный интерфейс lo0.0. В системе JunOS этот интерфейс используется для передачи данных между PFE и RE. Конфигурация примет следующий вид:
Порядок указания фильтров в input-list интерфейса очень важен. Каждый пакет будет проверяться на валидность проходя по фильтрам указанным в input-list слева направо.Тестирование фильтров
После применения фильтров, провел ряд тестов на том же стенде. После каждого теста выполнялась очистка счетчиков firewall. Нормальная (без атаки) нагрузка на роутере видна на графиках в 11:06 — 11:08. График pps за весь период тестов:
График CPU за весь период тестов:
Первым проводился тест флуда icmp c порогом трафика 5Мб/с (на графиках 10:21 — 10:24). По счетчикам фильтра и на графике видно ограничение по трафика по пропускной способности, но даже этого потока было достаточно для повышения нагрузки, поэтому порог был уменьшен до 1Мб/с. Счетчики:
Повторный тест флуда icmp c порогом трафика 1Мб/с (на графиках 10:24 — 10:27). Нагрузка на RE роутера упала с 19% до 10%, нагрузка на PFE до 30%. Счетчики:
Следующим был проведен тест флуда на порт BGP роутера с постороннего (не включеного в конфиг) ip адреса (на графиках 10:29 — 10:36). Как видно из счетчиков, весь флуд осел на discard-tcp фильтре RE и лишь увеличил нагрузку на PFE. Нагрузка на RE не изменилась. Счетчики:
сессия не падает:
Четвертым был проведен тест флуда (на графиках 10:41 — 10:46) UDP на порт NTP (в настройках фильтра взаимодействие по этому порту ограничивается серверами указанными в конфиге роутера). По графику, нагрузка поднимается только на PFE роутера до 28%. Счетчики:
Пятым был проведен тест флуда (на графиках 10:41 — 11:04) UDP на порт NTP с IP spoofing. Нагрузка на RE увеличилась на 12%, нагрузка на PFE увеличилась до 22%. По счетчикам видно, что флуд упирается в порог 1Мб/с, но этого достаточно для повышения нагрузки на RE. Порог трафика в итоге был уменьшен до 512Кб/с. Счетчики:
Повторный тест флуда (на графике ниже 11:29 — 11:34) UDP на порт NTP с IP spoofing, но с порогом трафика 512Кб/с. График нагрузки:
Счетчики:Заключение
В итоге всех проведенных тестов удалось получить, устойчивую к DDOS атакам, конфигурацию фильтров трафика RE. В настоящий момент эта конфигурация уже применена на боевом роутере и проблем не выявлено. По счетчикам с боевого MX80:
видно какое количество “левого” трафика оседает на фильтре discard.
Буду рад ответить на все вопросы в комментариях. -

Конфігурації мережного устаткування зазвичай забувають видалити за його продажу
Аналітики з компанії ESET виявили, що після придбання уживаного маршрутизатора на пристрої нерідко можна виявити забуті конфіденційні дані. Такі дані можуть бути використані для проникнення в корпоративні середовища або отримання інформації про клієнтів.
Це дослідження почалося з того, що компанія ESET придбала кілька маршрутизаторів для створення тестового середовища, але виявилося, що куплені пристрої не були очищені належним чином і досі містять дані про конфігурацію мережі, а також інформацію, що дозволяє ідентифікувати їх попередніх власників.
Серед придбаного обладнання було чотири пристрої Cisco (ASA 5500), три Fortinet (серія Fortigate) та 11 девайсів Juniper Networks (SRX Series Services Gateway).
Загалом дослідники придбали з рук 18 вживаних пристроїв корпоративного рівня. З’ясувалося, що ці зміни, як і раніше, доступні більш ніж на половині з них, і вони все ще актуальні.
Один пристрій виявився непрацюючим (після чого його виключили з випробувань), а ще два були дзеркалами один одного, і в результаті їх порахували як один. З 16 пристроїв, що залишилися, тільки 5 були очищені належним чином і тільки 2 мали хоч якийсь захист, що ускладнювало доступ до деяких даних.
На жаль, в більшості випадків на пристроях можна було отримати доступ до повних даних конфігурації, тобто дізнатися безліч подробиць про колишнього власника, як він налаштував мережу, а також про з’єднання між іншими системами.
Найгірше, деякі з маршрутизаторів зберігали навіть інформацію про клієнтів, дані, які дозволяли сторонньому підключитися до мережі, і навіть «облікові дані для підключення до інших мереж як довірена сторона».
Крім того, 8 з 9 маршрутизаторів, які розкривали повні дані конфігурації, також містили ключі та хеші для автентифікації між маршрутизаторами. У результаті список корпоративних секретів розширювався до повної “карти” важливих додатків, розміщених локально або у хмарі (включаючи Microsoft Exchange, Salesforce, SharePoint, Spiceworks, VMware Horizon та SQL).
“З таким рівнем деталізації зловмиснику буде набагато простіше видати себе за мережеві або внутрішні вузли, тим більше що на пристроях часто зберігаються облікові дані VPN або інші токени автентифікації, що легко компрометуються”, – пишуть експерти.
Також, судячи з даних, виявлених у куплених маршрутизаторах, деякі з них раніше працювали в середовищі managed-провайдерів, які обслуговують мережі великих компаній. Наприклад, один девайс взагалі належав постачальнику MSSP (Managed Security Service Provider), який обслуговував мережі сотень клієнтів у різних галузях (освіта, фінанси, охорона здоров’я, виробництво тощо).
Наводячи цей яскравий приклад, дослідники вкотре нагадують, наскільки важливо правильно очищати мережеві пристрої перед продажем. У компаніях повинні існувати процедури безпечного знищення та утилізації цифрового обладнання. Також експерти зазначають, що використання сторонніх сервісів для цих потреб не є гарною ідеєю. Справа в тому, що повідомивши одного з колишніх власників пристроїв про проблему, дослідники дізналися, що для утилізації обладнання компанія користувалася послугами такого стороннього сервісу. “Щось явно пішло не за планом”, – резюмують аналітики.
