Главная

Monday, 7 October 2024

Защита сетевого оборудования.


Всем привет.

Хотя я уже далек от администрирования сетевого оборудования, но для тренировки мозга время от времени пользуюсь виртуальными лабораториями типа  CSRv, FTDv, APIC-EM. Разумеется я не мог не обратить внимания на свежее издание Базаров М. М. "Сети глазами хакера", СПб.: БХВ-Петербург, 2025. Сразу видно что ввиду внешней политики страны издания в первую очередь страдают умные головы в той же стране. Так и здесь, знаменитое издательство "БХВ-Петербург" последние годы все чаще просто переиздает популярные книги прошедших лет, либо книги современных ИТ-писателей из Индии. В данном случае изданы "записки на полях" сетевого инженера-практика. Прошу прощения, но ниже главу из книги я вычитывал трижды, хотя опечатки могли все равно остаться.

Безопасность телекоммуникационных устройств - вопрос острый, особенно в по­следнее время. Атаки на инфраструктуры провайдеров происходят все чаще. Сегодня я покажу вам,  как можно защитить сетевое оборудование от потенциального вторжения. Все команды я буду демонстрироваться на Cisco IOS. Однако сами механизмы безо­пасности реализованы у всех вендоров, отличия лишь в иерархии расположения компонентов и синтаксисе. 

Безопасность коммутационной матрицы САМ 

У Cisco IOS  есть несколько проблем сетевой безопасности.  Давайте посмотрим, на какие из них стоит обратить внимание в первую очередь. 

САМ (Content  Addressable  Memory)  - это  ассоциативная память коммутатора, внутри которой хранится таблица МАС-адресов и связанных с ними портов. Это несложный механизм, однако уже очень давно существует хулиганский вектор DоS-атаки, при которой атакующий переполняет САМ-таблицу с  помощью рас­сылки  Ethernet-кaдpoв  с  рандомизирующимися  МАС-адресами  источника,  что перебивает коммутационную матрицу.  Очень известный прием, но не упомянуть о нем я не могу. 

Защитить САМ-таблицы своих коммутаторов очень просто, достаточно использо­вать Port Security. В нашем случае эта настройка подходит для ограничения количе­ства МАС-адресов за портом коммутатора.  Допустим, если мы настроим ограниче­ние в 20  МАС-адресов на порту, а атакующий начнет в эфире флуд (каким-нибудь macof), то к порту будут уже применяться ограничения - в зависимости от настро­енной политики.  Вот пример конфигурации, при которой ставится ограничение в два МАС-адреса,  а при нарушении этого ограничения порт будет выключен. 

Router01(config)#  interface  range  gX/X 

Router01(config-if)#  switchport port-security maximum  <value> 

Router01(config-if)#  switchport port-security violation shutdown 

При такой конфигурации в момент нарушения политики МАС-адресов порт будет переведен в состояние err-disabled. Чтобы настроить автоматическое восстановле­ние порта из этого состояния, понадобится еще одна команда: 

Router01(config)#  errdisaЬle recovery  interval  120 

Router01(config)#  errdisaЬle recovery  cause  psecure-violation 

Защита DНСР-сервера от атак истощения 

DHCP Exhaustion - это сетевая атака, позволяющая вызвать у DНСР-сервера отказ в обслуживании. Атакующий выполняет рассылку ложных сообщений DHCPDISCOVER с рандомными МАС-адресами источника, вынуждая DНСР-сервер отвечать на каж­дый такой DISCOVER и выдавать ему адрес. 

Вообще, для защиты DНСР-сервера есть технология DHCP  Snooping, разобранная в предыдущей главе. Мы тогда разобрали концепцию защиты именно от появления ложного DНСР-сервера, а  сейчас  поговорим про  митигацию атаки  истощения адресного пространства. 

DHCP  Snooping также позволяет настроить Limit Rate:  это параметр, отвечающий за ограничение количества DНСР-сообщений на порту коммутатора. Обычно этот Limit Rate настраивается именно на портах доступа, куда подключаются конечные станции. Сами инженеры Cisco рекомендуют использовать ограничение не более 100  пакетов в секунду, однако тут уже стоит отталкиваться от особенностей своей инфраструктуры и подбирать значение вручную. Делайте это аккуратно, чтобы случайно не срезать легитимный трафик. 

Router01(config)#  interface  range  fO/X-XX 

Router01(config-if)#  ip dhcp  snooping  limit  rate <count> 

Также стоит  включить опцию проверки МАС-адреса в  кадрах внутри DНСР­ пакетов: 

Router01(config)#  ip dhcp  snooping  verify mac-address 

Если на порту окажется больше DНСР-месседжей, он просто упадет в состояние ERR-DISAВLED, будет заблокирован на логическом уровне, и администратору придется самому поднимать его из этого состояния. Однако Cisco IOS  предлагает автомати­ческое восстановление работы порта, если его заблокировал какой-нибудь меха­низм защиты. Вот пример команды для автоматического восстановления порта по­сле срабатывания Limit Rate при DHCP Snooping: 

Router01(config)#  errdisable recovery  cause  dhcp-rate-limit  

Еще обычно настраивают таймер и задают время, через которое порт вернется из состояния ERR-DISABLED.  Тут отталкивайтесь от инфраструктуры и своего видения: 

Router01(config)#  errdisabe recovery  interval  <seconds> 


Домены отказоустойчивости HSRP  & GLBP 

Это проприетарные протоколы Cisco,  предназначенные для резервирования шлю­зов. Домены HSRP/GLBP могут подвергнуться атакам спуфинга, и вы к ним долж­ны быть готовы. Есть два метода защиты. 

Первый метод - выставить максимальный приоритет 255.  Если в сети уже суще­ствует ACTIVE/АVG-спикер с максимальным значением приоритета, то инъекции атакующего будут бесполезны и он не сможет перехватить эти роли для после­дующей МIТМ-атаки. 

HSRP (Маstеr-спикер): 

Router01(config-if)#  stantby <group_number> priority 255 

GLBP (для АVG-спикера отталкивайтесь от особенностей работы протокола GLBP, там все сложнее по сравнению с HSRP): 

Router01(config-if)#  glbp  <group_number> priority 255  

Второй метод - использовать криптографическую аутентификацию. Выберите стойкую парольную фразу для защиты НSRР/GLВР-доменов, чтобы компьютер атакующего не смог вмешаться в домен отказоустойчивости. К этой процедуре нужно отнестись серьезно, т. к. атакующий способен прослушать пакеты этих про­токолов, выдернуть криптографический хеш и сбрутить пароль. Вы не должны это­го допустить. Вот как настраивается аутентификация для этих протоколов. 

HSRP: 

Router01(config-if)#  standby <group_numЬer> authentication md5  key-string  <PHRASE> 

GLBP: 

Router01(config-if)#  glbp  <group_numЬer> authentication md5  key-string  <PHRASE> 

Кстати  говоря,  оборудование  Cisco  может  похвастаться  наличием  Кеусhаin­ аутентификации. Эта настройка позволяет создать цепочку из нескольких ключей и даже настроить специальные временные промежутки, в рамках которых ключи будут транслироваться между спикерами, будь то домен отказоустойчивости или домен динамической  маршрутизации.  Использование  Кеусhаin-аутентификации усложняет жизнь атакующему в несколько раз, ведь· необходимо сбрутить все клю­чи, угадать их порядок и тайминги. 

Вот пример настройки Keychain: 

Router01(config)#  key  chain  Router01 

Router01(config-keychain)#  key  1 

Router01(config-keychain-key)#  key-string  <PHRASE> 

Router01(config-keychain)#  key  2 

Router01(config-keychain-key)#  key-string  <PHRASE> 

Получилась цепочка из двух ключей. Вы можете применить ее, например, для до­мена отказоустойчивости GLBP или для домена маршрутизации EIGRP. Продемон­стрирую два примера. Вместе с цепочкой ключей мы будем использовать МD5. 

Настройка для защиты домена отказоустойчивости GLBP: 

Router01(config-if)#  glbp  <group_number> authentication md5  key-chain  Router01 

Настройка для защиты домена маршрутизации EIGRP: 

Router01(config-if)#  ip  authentication mode  eigrp  <ASN>  md5 

Router01(config-if)#  ip  authentication  key-chain  eigrp  <ASN>  Router01 

Router01 в конце команды - это название созданной цепочки, не перепутайте. 

Таким образом мы можем защитить домены отказоустойчивости и домены мар­шрутизации, реализованные на протоколах Cisco.  Для EIGRP,  кстати,  не будет лишним использоватb пассивные интерфейсы. Они запрещают рассылку пакетов приветствия Hello на интерфейсах внутри сети, что лишает атакующего всех шан­сов воздействоватb на домен маршрутизации. 

Router01(config)#  router  eigrp  <ASN> 

Router01(config-router)#  passive-interface  <interface> 


Отключение DP 

DP  (Discovery  Protocols) - протоколы, предназначенные для автоматического об­мена служебной информацией между сетевыми устройствами. Это облегчает сете­вому инженеру процесс устранения сбоев. Но бывают настройки, при которых рас­сылка протоколов DP  (CDP/LLDP) происходит во все сетевые интерфейсы устрой­ства. Внутренний нарушителb при анализе трафика может перехватитb эти пакеты и получитb достаточно чувствителbную информацию об устройстве: версию про­шивки, тиn модели, адресацию и прочее. 

Рекомендуется выключать DР-протоколы на портах конечных станций.  Однако если в сегменте естb IР-телефония, необходимо с осторожностbю выключатb прото­колы на этих портах, т. к. DP также исполbзуются для работы IР-телефонии (VoIP): 

Router01(config)#  interface  range  fX/-XX 

Router01(config-if)#  no  cdp  еnаЫе 

Router01(config-if)#  no  lldp  receive 

Router01(config-if)#  no  lldp  transmit 


Выключение DTP  и смена NVLAN 

DTP - это, на мой взгляд, врожденная болезнь коммутаторов Cisco.  Бесполезный протокол,  предлагающий автоматическую систему транкинга, которая ухудшает дизайн сети. Сеть в резулbтате становится менее предсказуемой. Сетевой инженер сам должен решать, где должен быть транк-порт, и явно его настраивать. Использование этого протокола ставит под удар безопасностb сегмента, потому что если администратор прозевает наличие дефолтных портов коммутаторов Cisco (ко­торые еще и включены по умолчанию), то атакующий может подключиться к ком­мутатору, отправить кадр DTP Desirabe и тем самым обойти VLАN-сегментацию на коммутаторе. 

Также стоит упомянуть о специфическом векторе атаки DouЫe Tagging. Для совре­менных инфраструктур эта атака скорее теоретическая и работает, если присутст­вует дефолтный Native  VLAN  1.  Поэтому всегда стоит менятb значение Native VLAN (NVLAN) на любое другое. Кстати говоря, Native VLAN - это специальный VLAN, куда падает нетегированный трафик. Чтобы выключитb DTP,  нужно в первую очередb перевести порты коммутатора в режим доступа, а также выключитb сам DTP: 

Router01(config)#  interface  range  gO/X-XX 

Router01(config-if)#  switchport mode  access 

Router01(config-if)#  switchport  nonegotiate 

Кроме того, рекомендуется провести перечисление неисполbзуемых портов комму­татора, создатb для них специалbный VLAN,  а-ля «VLAN  Shutdown 666»,  и пере­местить их туда,  а затем  перевести в  выключенное состояние.  Таким образом уменьшится вероятность несанкционированного подключения к сети. 

Router01(config)#  interface  range  gO/X-XX 

Router01(config-if)#  switchport mode  access 

Router01(config-if)#  switchport  nonegotiate 


Риски при интеграции исполbзованных ранее коммутаторов Cisco 

Если вам нужно установитb ранее исполbзованный коммутатор Cisco  в другую сеть,  обязательно проверbте состояние VTP  на этом устройстве. VTP  позволяет централизованно управлятb базой данных VLAN,  и актуалbностb этой базы отсле­живается по номеру ревизии. Если получится так, что на старом коммутаторе Cisco номер ревизии VTP больше, то кадр с номером ревизии мржет распространитbся по транковым каналам (а на коммутаторе могут быть другие сети VLAN). Из-за этого текущие коммутаторы обновят свои БД VLAN,  и может возникнутb сетевой пара­лич. Всегда проверяйте настройки VTP на старом оборудовании, которое хотите помес­титb в сетb. Вы можете сброситb номер ревизии, если измените имя VТР-домена на любое другое и поставите требуемое. 

Router01(config)#  vtp mode  client 

Router01(config)#  vtp  domain  shadjfkshdfjaks 

Router01(config)#  vtp  domain  <necessary  vtp  domain  name>  

Также можно переключить коммутаторы в режим VTP  Transparent,  они не участ­вуют в процессах VTP. 

Router01(config)#  vtp mode  transparent 


Безопасность линии VТY 

Терминальные линии VTY  позволяют подключатbся к сетевому оборудованию удаленно (SSН/Winbox/НTTP/ API).  Однако бывает, что VTY не защищены с помо­щью ACL, позволяющих фильтровать подключения к VTY толbко из определенных Management-noдceтeй, которые исполbзуют администраторы для управления обо­рудованием. 

Хорошая практика - использовать концепцию fail2ban  внутри инфраструктуры. Вдрут один из админских компьютеров будет заражен трояном, который найдет службы SSН/НТТР на оборудовании и начнет брутфорсить их? Также на службах SSH желателbно использовать аутентификации по ключу и запрет входа по паролю. 

Вот пример простого ACL, который защищает линии VTY и разрешает подключе­ние только из указанной подсети: 

Router01(config)#  access-list 10  permit  <subnet> 0.0.0.255 

Router01(config)#  access-list 10  deny  any  log 

Router01(config)#  line vty  О  15 

Router01(config-line)#  access-class  10  in 

Строка access-class  10  in привязывает этот ACL к линиям 0-15. 


Пароли Cisco IOS 

У Cisco IOS  есть проблемы с безопасностью хранения паролей внутри операцион­ной системы. Не рекомендуется использовать типы паролей 4,  5 и 7,  т. к. они под­разумевают шифрование SНА-256, МD5 и Vigenere  Cipher соответственно. Брут­форс таких паролей не составляет труда, а для типа 7 нужен просто дешифратор ciscot7 (https://github.com/theevilblt/ciscot7).  Лучшая практика - использовать ТУРЕ 8,  ТУРЕ 9 (PBKDF2,  SCRYPT),  а также ААА (Authentication, Authorization, Accounting) для централизованного управления учетными записями (RADIUS or TACACS+). 

На примере ТУРЕ 8: 

Router01(config)#  еnаbе algorithm-type  sha256  secret  <password> 

Router01(config)#  username  motor  algorithm-type  sha256  secret  <password> 

В ТУРЕ 8 исполbзуются SHA-256,  80-битная соль и 200000 итераций, что делает этот тип хеширования достаточно безопасным для защиты паролей. Сбрутить их будет очень сложно.


Безопасность при работе с SNMP 

Если атакующий сбрутит строку SNMP  RW,  то это позволит ему прочитать на­стройки маршрутизатора и получить крайне чувствительную информацию об ин­фраструктуре (IР-адресация, конфигурация интерфейсов, учетные записи и пароли в хешированном виде). С этой информацией у атакующего есть все шансы проник­нутb внутрь инфраструктуры и продолжить продвижение по сети. 

Существуют два варианта решения этой проблемы: 

□ установитb стойкую RW-фразу, которую будет крайне тяжело сбрутить. 

□ ограничить сетевой доступ к UDP/161  путем настройки АСL-листов. Пусть этот порт участвует только во взаимодействии с легитимным SNМР-сервером. 

Настройка новой RW-строки: 

Router01(config)#  snmp-server  community  <string>  RW

Перед настройкой RW-строки обязателbно проверяйте связность между оборудовани­ем Cisco и SNМР-сервером. 

И второе решение - исполbзование ACL.  Вот пример такого ACL, здесь разреша­ется только один адрес (адрес самого SNMP-cepвepa). Адаптируйте этот метод под, свой маршрутизатор, где наверняка есть ACL,  т. к.  на интерфейс роутера можно установить толbко один АСL-лист. 

access-list 101  permit udp  host  <snmp_server_ip>  any  eq  161 

access-list 101  permit udp  host  <snmp_server_ip>  any  eq  162 

access-list  101  deny  udp  any  any  eq  161 

access-list  101  deny  udp  any  any  eq  162 

access-list  101  permit ip  any  any 


Осторожность при фильтрации ICMP 

Блокировать ICMP  в сетевой инфраструктуре - грубая ошибка. Во-первых, из-за этого пропадет возможностb проводить диагностику: пинги и traceroute работатb не будут. Во-вторых, система PMTUD  перестанет работатb, т. к.  существует за счет работы ICMP Туре 3.  Благодаря PMTUD  можно избежать избыточной фрагмента­ции, а это, в свою очередь, влияет на скорость передачи данных. Фильтруйте ICMP грамотно, отсекайте только ненужные типы. 


No  Full  Cone  NAT 

NAТ в сетях настраивают часто, однако тут есть несколько подвидов настроек: Full Cone,  Symmetric, Restricted и Port Restricted.  Мы остановимся на первом варианте, т. к. он вызывает болbше всего проблем с безопасностbю.  

При Full Cone NAТ входящие пакеты от любого внешнего хоста будут перенаправ­ляться соответствующему хосту в локальной сети, если в таблице NAT присутству­ет соответствующая запись. Более того, номер порта источника в этом случае не имеет значения - он может бытb и 53,  и 54,  и вообще каким угодно, в этом виде NAТ проверяется толbко порт назначения, адрес назначения и L4-протокол. 

Если атакующий находится за NAT, он сможет проникнуть внутрь инфраструктуры благодаря обычным статическим маршрутам сквозь пограничный роутер, т. к. из-за особенностей Full Cone NAТ его трафик будет маршрутизирован внутрь. 


No  Port  Forward 

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

Рекомендую отказаться от проброса портов и вместо этого использовать VPN-cepвep. 


Защита от UРnР-инъекций 

UPnP (Universal Plug and Play) - группа протоколов, которые позволяют компью­терам с помощью специальных запросов получать доступ в Интернет. Использова­ние UPnP - небезопасная практика, поскольку атакующий может найти порт UPnP и с помощью специальных запросов открыть для себя доступ к хостам за погранич­ным маршрутизатором (например, через Metasploit Framework). 

Рекомендую отключить UPnP на сетевом оборудовании во избежание риска взлома внешнего периметра. 


Выводы 

Несмотря на то что я сделал акцент на Cisco IOS,  все эти механизмы защиты реали­зованы у большинства вендоров сетевого оборудования. Применяйте эти техники у себя, но будьте осторожны: с настройками безопасности часто есть шанс «вы­стрелить себе в ногу» и нарушить нормальную работу сети. 

No comments:

Post a Comment

А что вы думаете по этому поводу?