Безопасность маршрутизаторов Cisco

Маршрутизатор — это «первая линия обороны» нашей корпоративной сети непосредственно соприкасающаяся с Internet. Они часто применяются в качестве ключевых элементов в системах защиты сетей (например, firewall для фильтрации пакетов и ограничения прохождения определенного IP -трафика). Наиболее широко распространенным сейчас является оборудование фирмы Cisco Systems, которое благодаря различной реализации своей «фирменной» операционной системы Cisco IOS может приобретать свойства, необходимые администраторам.

А как его (маршрутизатор Cisco) защитить?

Список команд

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

Используйте Чтобы
enable secret Задать пароль для привилегированного доступа.
service password-encryption Обеспечить минимальную защиту для паролей в конфигурации.
no service tcp-small-servers
no service udp-small-servers
Избегать использования простых сервисов для DoS и других атак.
no service finger Избегать распространения информации о пользователях.
no cdp runningno cdp enable Избегать распространения информации об этом маршрутизаторе на соседние устройства.
ntp disable Предотвратить атаки на сервис NTP.
no ip directed-broadcast Помешать атакующим использовать маршрутизатор для smurf атак.
transport input Указать какие протоколы могут быть использованы удаленными пользователями чтобы войти через VTY или получить доступ к его TTY портам.
ip access-class Указать с каких IP адресов пользователи могут подключаться к TTYs или VTYs. Зарезервировать один VTY для доступа с рабочей станции администратора.
exec-timeout Не занимать VTY бесконечно долго бездействующей сессией.
service tcp-keepalives-in Обнаруживать и удалять «зависшие» сесии, освобождая используемые VTY.
logging buffered buffer-size Сохранять логируемые данные в буфере оперативной памяти маршрутизатора. В последних версиях IOS этот размер может идти совместно с параметром urgency threshold.
ip access-group list in Отбрасывать пакеты с поддельным IP адресом. Отбрасывать входящиеICMP redirects.
ip verify unicast rpf Отбрасывать IP пакеты в с поддельным адресом источника в случае симметричной маршрутизации на маршуризаторах поддерживающих CISCO Express Forwarding (CEF). Данная проверка известна как reverse path forwarding (RPF).
no ip source-route Отбрасывать IP пакеты, в которых включена опция source routing. Таким образом злоумышленник не получит обратно ответ на посланный пакет, если он использовал поддельный IP адрес.
access-list number action criteria log
access-list number action criteria log-input
Включить логирование пакетов удовлетворяющих определенному условию из access-list. Используйте log-input если это возможно в версии вашего IOS.
scheduler-intervalscheduler allocate Защититься от флуда и позволить работать важным процессам.
ip route 0.0.0.0 0.0.0.0 null 0 255 Быстро удалять пакеты посланные на несуществующие адреса.
distribute-list list in Фильтровать получаемую информацию о маршрутах чтобы предовратить использование неверных маршрутов.
snmp-server community something-inobvious ro listsnmp-server community something-inobvious rw list Включить SNMP версии 1, настроить аутентификацию и разрешить доступ только с некорых IP адресов. Используйте SNMP версии 1 только, если версия 2 недоступна. Следите за наличием снифферов в сети. Включите SNMP только если он нужен в вашей сети. Не настраивайте доступ на запись, если он вам не нужен.
snmp-server party…
authentication md5 secret …
Сконфигурировать аутентификацию посредством MD5 для SNMP версии 2. Включайте SNMP только, если он нужен в вашей сети.
ip http authentication method Производить аутентификацию соединений по HTTP (если вы включили HTTP сервер на вашем маршрутизаторе).
ip http access-class list Дальнейшее управление доступом к HTTP серверу, разрешая его только с некоторых хостов (если вы включили HTTP сервер на вашем маршрутизаторе).
banner login Установить предупреждающее сообщение для показа всем пользователям, кто пытается залогиниться на маршрутизатор.

Заметки по увеличению безопасности маршрутизатора Cisco

Cпособы повышения защищенности маршрутизаторов CISCO

Пароли

Пароли (и другие секреты, например SNMP последовательности) обеспечивают защиту от НСД маршрутизатора. Наилучший путь для работы с базой данных паролей — хранить их на аутентификационных серверах типа RADIUS или TACACS+. Однако в большинстве случаев на каждом маршрутизаторе остаются пароли для привилегированного доступа и другие пароли.

enable secret
Данная команда используется для установки паролей, которые предоставляют привилегированный доступ администратору в IOS. Данный пароль должен быть всегда установлен. Нельзя устанавливать enable password , т.к. данная команда использует слабую криптографию.

service password-encryption
Данная команда позволяет зашифровать пароли, CHAP секреты и другие данные, находящиеся в конфигурационном файле.

 

Контроль доступа

Доступ к маршрутизатору предполагает возможность переконфигурирования его, в том числе и несанкционированному. Поэтому проблема защиты от НСД при доступе имеет большое значение.

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

Основной способ доступа 
Существует достаточное количество способов для подключения к маршрутизатору. CISCO IOS в зависимости от конфигурации поддерживает соединения посредством telnet, rlogin, SSH, LAT, MOP, X.29, V.120. Локальные асинхронные терминалы и модемы используют стандартные линии — TTY. Удаленные сетевые соединения (независимые от протоколов) используют виртуальные TTY (VTY). Для защиты необходимо на все линии доступа установить пароли, для VTY возможна команда no password для защиты.

По умолчанию удаленный пользователь может установить соединение с TTY через сеть, так называемый «reverse Telnet», что позволяет данному пользователю работать с модемом или терминалом, подсоединенным к данному TTY. Для защиты необходимо работать с командой transport input none , которая запрещает принимать соединения из сети. Если есть возможность , то необходимо разнести dial-in и dial-out модемы и запретить использование reverse Telnet для линий, которые используются в dial-in.

Управляющий VTY
Любые VTY должны быть сконфигурированы для того, чтобы принимать соединения только по протоколам, которые нужны. Это можно сделать с помощью команды — transport input. Например, по VTY ожидается прием только сессии telnet, для этого используем команду transport input telnet. Для поддержки telnet и SSH необходимо ввести команду transprot input telnet ssh. Также можно ограничить доступ с определенных адресов с помощью ip access-class.

В СISCO IOS используется ограниченное количество VTY (обычно пять). Когда все VTY используются, больше никто подсоединиться не может. В этом и есть возможность использования DoS атаки. Способ защиты — ограничить доступ с помощью ip access-class. Например, для одного VTY используется общий доступ, а для четырех — только с одной рабочей станции.

Также можно использовать команду exec-timeout для ограничения времени атаки.

Можно использовать команду для TCP keepalive входящих соединений service tcp-keepalive-in для защиты от атак на хосты.

Желательно отключить возможность использования отличных от IP протоколов для доступа к VTY.

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

 

Плохо сконфигурированные сервисы управления

Многие пользователи управляют маршрутизаторами с помощью специальных протоколов, например, HTTP или SNMP.

SNMP

Данный протокол широко используется для мониторинга и управления маршрутизаторами. К сожалению, версия 1 данного протокола использует очень слабую схему аутентификации, базирующуюся на «community string», при которой пароль может передаваться в открытом виде. Поэтому необходимо использовать версию 2 , которая работает с алгоритмом MD5 и не передает пароль по каналам связи.

Если все-таки необходимо использовать версию 1, то необходимо быть внимательным при выборе community string (нельзя использовать public или private). Необходимо избегать использования одних и тех же community string для различных устройств. Если возможно, то установить для periodic SNMP ver 1 polling в read-only community string.

Для версии 1 необходимо использовать ACL на команде snmp-server community для ограничения доступа на станции управления. Нельзя использовать команду snmp-server community в окружении, где используется версия 2 (переключает в версию 1).

Для версии 2 необходимо сконфигурировать защиту с помощью команд authentication и md5 в конфигурации snmp-server party. Если возможно, то лучше использовать различные секреты MD5 для каждого маршрутизатора.

HTTP
Для облегчения конфигурирования маршрутизатора есть возможность «поднять» на нем HTTP сервер. Пароль передается в открытом виде.

Для защиты необходимо ограничить перечень IP-адресов путем ip http access-class. Также можно использовать аутентификацию с использованием команд ip http authentication.

 

Управление и доступ через Интернет (или другие незащищенные сети)

Многие пользователи управляют своими маршрутизаторами удаленно, и часто через Интернет. Все схемы удаленного управления подвержены атакам, например, Packet Sniffers. Злоумышленники очень часто взламывают машины ISP или другие компьютеры в Сети и устанавливают программы-сниферы, которые мониторят весь трафик, пытаясь заполучить парольную фразу (если используется telnet, HTTP, snmp v.1). Защита — использование технологии S\Key, Kerberos, RADIUS, TACACS+. Для выявления сниферов можно использовать: http://www.l0pht.com/antisniff

 

Логировние

Способы ведения логов в CISCO

  • AAA logging — ведение записей о пользователях , которые подключаются.
  • SNMP trap logging — посылка данных об изменениях в системном статусе.
  • system logging — записывает огромное множество событий: logging console logging ip-address, logging trap logging monitor, termonal monitor logging buffered

Сохранение информации 
По умолчанию логируемая информация отсылается только на асинхронный консольный порт.

Почти все маршрутизаторы сохраняют информацию logging в local RAM buffer, имеющий конечный размер ( show memory, logging buffered buffer-size).

Также можно сохранять данные на syslog сервер, logging server ip-address, logging trap urgency.

Если маршрутизатор имеет real-time clock или запущен NTP, то можно записать лог с time-stamp — service timestamps log datetime msecs.

Запись нарушений списков доступа
Если используются списки доступа для ограничения трафика, есть возможность записи их нарушений. Команды — в старых версиях — log, в новых — log-input.

 

Защита IP-маршрутизации

Anti-spoofing
Множество сетевых атак проводятся с подмененными IP-адресами источника атаки, что снижает риск для атакующего быть замеченным.

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

Защита с помощью ACL
К сожалению, нет общих примеров по конфигурации ACL, каждый раз поход различный. Однако основа одна: отбросить пакет, который пришел с интерфейса, с которого данный адрес прийти не может. Например, система имеет два интерфейса, один из них смотрит в сеть Интернет, а другой в сеть Интранет. Все пакеты, принятые из сети Интернет с адресами источника внутренней сети (адреса Интранет), будут отброшены. Если CPU позволяет, то anti-spoofing должен быть включен на каждом интерфейсе.

Пример:

Anti-spoofing with RPF checks
Практически во всех CISCO IOS , которые поддерживают CISCO Express Forwarding (CEF), существует возможность «заставить» маршрутизатор проверять source address каждого пакета. Это будет работать только в случае, если маршрутизация симметричная. Если сеть будет построена так, что путь трафика от хоста А до хоста В будет проходить другим путем, чем трафик от B до A, проверка всегда будет давать неверный результат, и связь между хостами будет невозможна. Данная асимметричная маршрутизация обычно используется на Internet core. Данная проверка известна как reverse path forwarding (RPF) и включается с помощью команды ip verify unicast rpf.

Controlling Directed Broadcasts
Для атаки типа «smurf» обычно используется IP directed broadcasts.

IP directed broadcast — это пакет, который посылается на адрес broadcast подсети, к которой посылающая машина напрямую не подключена. Directed broadcast маршрутизируется через сеть как обыкновенный пакет unicast пока не достигнет подсети назначения, где и будет конвертирована в link-layer broadcast. Согласно архитектуре протокола IP только последний маршрутизатор в цепочке, тот который напрямую подсоединен к подсети-назначения, может идентифицировать directed broadcast.

При атаке типа «smurf» атакующий посылает пакеты ICMP echo requests, используя сфальсифицированный адрес источника, и все хосты подсети отвечают на подмененный адрес источника.

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

На интерфейсе маршрутизатора CISCO для защиты можно использовать команду no ip directed-broadcast, при этом необходимо сконфигурировать no ip directed-broadcast на каждом интерфейсе каждого маршрутизатора, который может быть подсоединен к подсети назначения.

http://users.quadrunner.com/chuegen/smurf.cgi

Path Integrity
Много атак проводятся с помощью обмана маршрутизации. Если злоумышленник контролирует маршрутизацию, он может переслать трафик куда угодно, подменить адрес источника и т.п.

IP Source Routing
Протокол IP поддерживает опцию source routing, которая позволяет отправителю IP-пакета контролировать путь пакета до получателя. Ранние реализации IP отрабатывали пакеты source-routed неправильно, что могло в результате посылки на нее пакета с опцией source routing привести в зависанию машины.

Маршрутизаторы CISCO с установкой no ip source-route не будут пересылать пакеты IP, в которые будет включена опция source routing.

ICMP Redirects
Сообщение ICMP redirect «заставляет» конечное СВТ использовать указанный маршрутизатор для достижения определенной точки в сети. В нормально функционирующей сети маршрутизатор посылает пакеты redirects только хостам, расположенным в локальной подсети, ни один конечный узел не посылает данные пакеты, и ни один такой пакет не проходит больше одного сетевого hop. Однако атакующий может обойти эти правила . Хорошая идея -отфильтровать входящие ICMP redirects на входящем интерфейсе любого маршрутизатора, находящегося на границе между административными доменами.

Необходимо отметить, что данное фильтрование защищает от атак redirect , которые начинаются удаленными злоумышленниками.

Routing Protocol Filtering and Authentication
Если используется динамическая маршрутизация, которая использует аутентификацию, то ее необходимо использовать. Это позволяет избежать проблемы подмены данных маршрутизации.

В части ISP или других больших сетях целесообразно использовать фильтрацию протоколов маршрутизации с использованием команды distribute-list in. Например, если вы используете динамическую маршрутизацию для связи с пользовательской «stub» сетью, вам не нужно принимать данные об обновлении маршрута с данной сети.

 

Защита от флуда

Множество атак типа «Отказ в обслуживании» (DoS) основаны на пересылке бесполезных пакетов. Данные действия занимают полосу пропускания, снижают время ответа хостов и могут привести к перезагрузке маршрутизаторов.

Правильная настройка маршрутизаторов снижает риск таких атак. Важной частью управления потоком является поиск узкого места пропускной способности.

Транзитный флуд
Существует возможность использования CISCO’s quality of service (QoS) для защиты хостов от данных атак. Можно использовать — weighted fair queueing (WFQ). WFQ устанавливается по умолчанию для низкоскоростных линий во многих версия ОС. Также можно использовать committed access rate (CAR), generalized traffic shaping (GTS) и custom queuing.

Если планируется использовать QoS для контроля трафика, очень важно понимать, как это работает. Например, WFQ более эффективен против floods, чем против SYN floods, потому что обычный ping flood для WFQ является одиночным трафиком, а для SYN flood каждый пакет является отдельным потоком.

CISCO обеспечивает два различных способа уменьшить опасность от атаки типа SYN flooding. Способ «TCP Intercept» используется в маршрутизаторах модели 4000 или выше. Например, CISCO IOS Firewall Feature Set включает различные способы защиты от SYN flood.

Самозащита маршрутизатора
Прежде всего необходимо защитить сам маршрутизатор от атак и после этого необходимо защищать хосты, стоящие после него. Switching Modes and CISCO Express Forwarding

Режим — CEF switching mode, являющийся доступным в версиях ПО 11.1CC, 11.1CT, 11.2GS, и 12.0. Позволяет быстрее переключать трафик, чем обычная маршрутизация.

Хотя многие атаки типа DoS пересылают все пакеты на один или несколько хостов, много атак типа SYN flooding используют изменяющийся адрес источника. Хост, который атакуют, отвечает на SYN flood пакеты, создавая трафик с различными адресами destinations. При этом рекомендуется использовать CEF.

Scheduler Configuration
Когда маршрутизатор CISCO находится в режиме fast-switching большого количества пакетов, есть возможность его «загрузить» только работой на ответ , другая работа не будет проводиться. Данный эффект может быть снижен путем использования команды scheduler interval. Типичная конфигурация использует команду scheduler interval 500, которая показывает , что задача будет выполняться каждые 500 milliseconds.

Новые платформы фирмы CISCO используют команду scheduler allocate вместо команды scheduler interval.

 

Возможно ненужные сервисы

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

TCP and UDP «Small Services»
По умолчанию CISCO, начиная с версии 11.3, поднимает «small services»: echo, chargen и discard. Данные сервисы , особенно их UDP версии, могут использоваться для DoS атаки на маршрутизатор.

Например, атакующий может послать DNS пакеты с подмененным адресом источника DNS сервера и портом (53). Если данные пакеты будут направлены на порт CISCO’s UDP echo port, то маршрутизатор будет посылать DNS пакеты на сервер с вопросом. Ни один ACL не будет это отслеживать.

Для отключения необходимо использовать команду no service tcp-small-servers и no service udp-small-servers.

Finger
Маршрутизатор CISCO обеспечивает сервис «finger», который позволяет уточнить, кто подключен из пользователей. Отключается командой no service finger.

NTP
Network Time Protocol (NTP) не является опасным сервисом, но любые не нужные сервисы потенциально опасны. Для отключения используйте команду no ntp enable.

CDP
CISCO Discovery Protocol (CDP) используется для обмена данными между устройствами CISCO. Отключение производится командой no cdp running. CDP может быть поднят на каком-то из интерфейсов, отключение — по команде no cdp enable.

 

Cisco, QoS и NBAR

Restrict Traffic Flow including P2P (Peer to Peer) using NBAR: An Overview

Introduction

NBAR (Network-Based Application Recognition) is a very indepth topic hence this FAQ will try to illustrate one of its many functionalities and how to action packets that match the protocol criteria required.

NBAR has its niche within the QoS (Quality of Service) crowd where specific applications are given precedence or not as the case maybe depending on the network requirements at the time of the implementation. NBAR allows recognition of a wide variety of applications where QoS may be implemented on them, i.e. from the bandwidth intensive Citrix to the port changing Kazaa P2P (Peer-to-Peer) application.

NBAR allows the classification of protocols from layer 4 to 7 hence allowing the router in some respects to disregard its layer 3 position and to look at the high layer protocols. NBAR can recognise:

• Statically assigned TCP and UDP port numbers

• Non-UDP and non-TCP IP protocols

• Dynamically assigned TCP and UDP port numbers. Classification of such applications requires stateful inspection; that is, the ability to discover the data connections to be classified by parsing the connections where the port assignments are made.

• Sub-port classification or classification based on deep packet inspection; that is, classification by looking deeper into the packet.

NBAR can classify static port protocols. Although access control lists (ACLs) can also be used for this purpose, NBAR is easier to configure and can provide classification statistics that are not available when using ACLs.

NBAR includes a Protocol Discovery feature that provides an easy way to discover application protocols that are transversing an interface. The Protocol Discovery feature discovers any protocol traffic supported by NBAR. Protocol Discovery maintains the following per-protocol statistics for enabled interfaces: total number of input and output packets and bytes, and input and output bit rates. The Protocol Discovery feature captures key statistics associated with each protocol in a network that can be used to define traffic classes and QoS policies for each traffic class.

The router (depending on model and IOS version) has built-in NBAR functionality which may be seen when configuring NBAR:

Or when scrutinising a port-map:

which will demonstrate the ports and IP protocol of the various protoocols present.

An external Packet Description Language Module (PDLM) can be loaded at any time to extend the NBAR list of recognized protocols. PDLMs can also be used to enhance an existing protocol recognition capability. PDLMs allow NBAR to recognize new protocols without requiring a new Cisco IOS image or a router reload, hence PDLMs allow the router to gain the functionality of recognising applications at the application layer for the protoocols which when the router was shipped, was either not available or have changed in its function so much that an update is required.

To view a list of currently available PDLMs or to download a PDLM:

NBAR Packet Description Language Module Download

There are a number of examples, such as Citrix, gnuttella, skinny, etc. This type of traffic would have been hard to classify using standard QoS tecniques, either to minimise the impact of such programs on bandwidth, to drop them or to allocate the most amount of bandwidth to. PDLMs give the router this added ability to recognise the traffic specified by it as well as some other types of traffic pre-defined in the IOS.


Procedure (* optional if application NBAR required on is already present:

CEF should be enabled.

1.)* Copy the pdlm into the router’s flash:

2.) Enable CEF

3.)* Reference the pdlm in the config:

The result:

4.) Create a class-map and policy map and apply it to the interface concerned:

Basically, within the policy-map bittorrent-policy, the action for any packets matching that protocol arriving on the fa0 interface was to DROP them. Packet manipulation is possible using QoS such as setting the precedence bits or setting maximum/limited bandwidth for further processing down the line but in this instance, the packets are set to be dropped as soon as they arrive on the fa0 interface.

QoS (Quality of Service) and NBAR

QoS should be the suggested reading for any more indepth look at policy-maps. As illustration, following is sample configuration using NBAR and QoS CBWFQ (Class-Based Weighted Fair Queue) for most common P2P protocols.

Unlike the previous sample configuration where P2P traffic is dropped or blocked, this sample configuration objective is to permit with restriction. The restriction is that all P2P traffic will be limited to only 8 kbps bandwidth. Any attempt from P2P traffic to use more than 8 kbps bandwidth will be dropped or blocked.


==============================================================

 

Is your network bandwidth being consumed by Peer-to-Peer (P2P) traffic? (Hint: If you don’t know, it’s time to fire up NBAR and do a little investigating.) One way to stop P2P traffic is to use an access-list to block traffic on the well-know P2P ports. Unfortunately, many P2P technologies no longer rely on fixed ports. This means you can’t depend on access-lists being able to block the traffic. Cisco’s NBAR users packet inspection to determine what traffic class a data stream belongs to. With NBAR, it’s no longer necessary to know what ports an application is using.

Stopping P2P traffic with Cisco NBAR is a simple three step process. In the following example, we’ll use NBAR to block BitTorrent on our router’s Gigabit interface.

  1. Create a class-map to match the protocols to be blocked.
  2. Create a policy-map to specify what should be done with the traffic.
  3. Apply the policy to the user-facing (incoming) interface.

You can ensure the policy is working with the show policy-map command.

In this example you can see that 43Kbps of BitTorrent traffic was blocked. 7.2Mbps of non-BitTorrent traffic was untouched (this is the class-default at the bottom of the output).

Unfortunately, the drop command used in the policy-map above was not introduced until IOS 12.2(13)T. If you are using a version of IOS older than 12.2(13)T, you will need to follow a not-as-simple five step process. This process relies on setting the DSCP field in the incoming packets, and then dropping those packets on the outbound interface. In the following example, we’ll block BitTorrent again, this time using the DSCP field.

  1. Create a class-map to match the protocols to be blocked.
  2. Create a policy-map to specify what should be done with the traffic.
  3. Create an access-list to block packets with the DSCP field set to 1.
  4. Apply the policy to the user-facing (incoming) interface.
  5. Apply the blocking access-list to the outbound interface.

Congratulations, you’ve successfully blocked P2P traffic on your network. Now, bolt the door and be ready for the angry mob with torches and pitchforks.

 

==========================================================

Начиная с IOS версии 12.4 (4) в Cisco стало возможным блокировать Skype. Для этого нужно создать простое правило. Также можно блокировать другие p2p приложения.

Если вы хотите посмотреть какие протоколы съедают ваш канал, то можно добавить в конфиг настройку:

И потом смотреть с разбивкой по протоколам, какой тип трафика преобладает:

Так же можно посмотреть какие порты используют протоколы: