Pull to refresh

Технологии безопасности сети на 2-ом уровне OSI. Часть 1

Reading time7 min
Views97K
Казалось бы, получив доступ во внутреннюю сеть, злоумышленник может относительно беспрепятственно исследовать соседние узлы, собирать передаваемую информацию и в общем уже все потеряно.


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

Под катом перечень механизмов, которые помогут выполнить данную функцию.

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

Статья выходила объемной, и, по-моему, слишком большие статьи не читаются, а складываются в долгий ящик с мыслью «как-нибудь осилю». Поэтому материал пришлось разделить, и при должном успехе составлю вторую часть с менее распространенными (по крайней мере у нас) технологиями.

Содержание:


Технологии описаны на базе коммутатора Cisco, конкретно моя тестовая модель и версия следующие:


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

Тем не менее, уверен, что после усвоения каждой конкретной технологии на циске, корректно составить конфигурацию у другого вендора не составит труда, если у Вас есть 30 мин. и обычный User Guide.

Считаю, что информация не дублирует уже существующую на хабре, хотя что-то похожее можно встретить тут и тут.

Port Security


Описание

Технология предназначена для контроля подключенных к коммутатору устройств и предотвращения аномалий или атак, нацеленных на переполнения таблицы MAC-адресов (CAM table overflow).

С помощью Port Security устанавливается максимальное количество MAC адресов на конкретный свитчпорт (сетевой порт, оперирующий на 2-ом уровне OSI) или VLAN, и контролируется доступ по заданным MAC-адресам.

Способы работы с MAC-адресами:

  • Dynamic — пропускает и запоминает (на заданный период времени) любые MAC-адреса, пока не достигнет разрешенного максимума;
  • Static — пускает только заранее введенный руками MAC-адрес (может быть использовано вместе с Dynamic типом);
  • Sticky — учит новые MAC-адреса, записывая их в конфигурацию;

Действия в случае превышения полномочий:

  • Potect — в случае лишних или не заданных МАС-адресов не пускает новые, не генерирует сислог или SNMP трап, не роняет интерфейс;
  • Restrict — то же, что и Protect, но плюс лог и/или SNMP трап. А еще отчитывается в счетчик под show port-security interface <name>:


  • Shutdown (выбран по умолчанию) — предыдущее действие, но плюс интерфейс переходит в статус errdisable и перестает передавать трафик;
  • Shutdown VLAN — как и предыдущее, только в errdisable переходят все интерфейсе в данном VLAN'е;

Конфигурация

Port-Security может быть активирован только, если тип свитчпорта явно задан (т.е. или Access, или Trunk). Если порт динамический (что уже неправильно), Port-Security на нем включить не получиться.

Access порты

Технология задается посредством команды switchport port-security… в режиме конфигурации конкретного интерфейса, доступные опции:


  • aging — задается временной интервал, после которого динамический МАС-адрес может быть переписан;
  • mac-address — дает доступ к следующей ветке:


    т.е. задаем разрешенные/запрещенные адреса или говорим железке их учить;
  • maximum — указываем лимит разрешенных адресов.
  • violation — задаем действие из перечисленных ранее.

Устанавливаем что нужно, что не нужно пропускаем. В конце активируем технологию командой switchport port-security без опций.

В результате все выглядит примерно так:

— Если хотим разрешить неизвестно какие маки, лимитируя их количество 5-ю, ставим максимум на 5 и не задаем ничего статически. Опционально указываем время жизни.
— Если известно, что за устройство стоит на втором конце провода и больше ничего там не будет и быть не должно — максимум=1, адрес прописываем статически.
— Если ждем нового работника с новым ПК или лень узнавать MAC-адрес, ставим Sticky, после подключения перепроверяем.

Trunk порты

То же самое, только можно указывать поведение не относительно физического интерфейса, а конкретного VLAN'а. Для этого к каждой из предыдущих команд в конце добавляется vlan .

Проверка

Не прибегая к show run информация касательно Port-Security может быть найдена:

  • show port-security — отображает суммарно информацию об интерфейсах, их статус, количество адресов;
  • show interface <name> switchport — более детальная информация (счетчики, отдельные опции);
  • show mac address-table .. плюс опция, список ниже:


    Команда проводит проверку актуальной информации о таблице MAC-адрессов. Например, нынешнее количество записей в таблице для конкретного VLAN'a и объем доступных записей проверяется посредством show mac address-table count vlan <id>:


DHCP snooping


Описание

Технология предотвращает использование не авторизированного DHCP сервера в сети, что позволяет например произвести атаку человек-посередине (man-in-the-middle, MITM). Еще защищает сеть от атак на истощение DHCP (DHCP starvation/exauction), которая имхо не особо актуальна.

Технология следит за DHCP коммуникацией в сети, которая (в основном) состоит из четырех пакетов:

  • DHCP Discover — отправляет только клиент, запрос на получения IP по DHCP;
  • DHCP Offer — отправляет только сервер, предложение конфигурации от DHCP сервера;
  • DHCP Request — отправляет только клиент, выбор конкретной конфигурации и сервера;
  • DHCP ACK — отправляет только сервер, окончательное подтверждение;

Перед активацией DHCP snooping нужно обязательно указать «доверенный» порт(ы), за которым находится DHCP сервер. Только доверенные порты будут передавать DHCP Offer и DHCP ACK (пакеты от сервера). В связи с чем ни одно устройство за другими интерфейсами этого коммутатора не сможет производить работу DHCP сервера, предлагая свои варианты сетевой конфигурации.

Очень немаловажно, что после активации DHCP snooping, коммутатор начинает следить за DHCP коммуникацией в сети и отождествлять выданные IP адреса с MAC-адресами запрашивающих устройств, складируя данную информацию в таблицу DHCP snooping binding.

Конфигурация

Под доверенным интерфейсом вводится команда ip dhcp snooping trust:


Для предотвращения DHCP starvation под не доверенными интерфейсами указывается частота получаемых клиентских запросов с помощью ip dhcp snooping limit rate <nr>:


Важно не занизить данную характеристику, чтобы не порезать валидный трафик. Циска советует использовать число «10».

После этого указываем конкретный VLAN для работы DHCP snooping'a и включаем непосредственно саму технологию командой без опций:

(config)# ip dhcp snooping vlan <id> 
(config)# ip dhcp snooping

Проверка

  • show ip dhcp snooping — отображает доверенные порты и VLAN'ы, на которых включен DHCP snooping;
  • show ip dhcp snooping binding — показывает ту самую таблицу, где фигурирует привязка IP-MAC внутри VLAN'ов с включенным DHCP snooping'ом:


Dynamic ARP inspection


Описание

Технология предназначена для предотвращения ARP spoofing/poisoning атак, которая является базовым способом организации перехвата трафика (опять же атака человек-посередине/MITM), находясь в одном широковещательном домене с жертвой.

Конфигурация

Что бы эффективно предотвратить ARP spoofing, коммутатор должен иметь информацию о связке MAC-адрес/IP-адрес. Как упоминалось выше, данная информация хранится в таблице DHCP snooping. По этому корректная конфигурация эти две технологии практически всегда использует вместе.

При совместном использовании с DHCP snooping, технология активируется в режиме глобальной конфигурации командой:

(config)# ip arp inspection vlan <id>

После этого в данном VLAN'е будет разрешен трафик только тех устройств, которые фигурируют в таблице DHCP snooping.

В случае, если устройства НЕ используют DHCP, необходимо проводить дополнительные меры. ARP inspection позволяет использовать статические записи. Для этого создаются списки доступа ARP, создается который из режима глобальной конфигурации командой:

(config)# arp access-list <name>

Синтаксис отдельной записи ниже:


А еще..
помимо указания единичного MAC-адреса, в arp access-list'е можно указать диапазон. И это делается посредством !обратных ARP! масок:


По-моему, это ужасный костыль и мир сошел с ума, но если по другому никак..

Под таким arp access-list'ом указываются все необходимые статические записи. Далее технология активируется не как прежде, а с опцией filter:


Отдельный интерфейс(ы) можно пометить как доверенные. На этих интерфейсах ARP inspection проводиться не будет:


Практически всегда доверенными устанавливаются Trunk порты (главное об этом не забыть перед активированием всего механизма). Но в этом случае важно поднять установленный по умолчанию лимит ARP сообщений — он равен 15, и может быть слишком узким, особенно для транка. Советую поставить 100-ку:


Опционально можно добавить дополнительные проверки на соответствие MAC адресов в заголовках ARP и Ethernet. Делается это командой ip arp inspection validate <option>:


Функционал по каждой опции отдельно можно прочитать тут.

Проверка

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

show ip arp inspection vlan <id>

Полезные опции у предыдущей команды (добавить в конце строки) — statistics (показывает счетчики дропов и т.п.) и interfaces (доверенные интерфейсы, лимиты ARP сообщений).

Source Guard


Описание

В случае, если нет нужды проверять всю подсеть по ARP inspection, но хотелось бы защитить от подобных угроз пару-тройку узлов, можно использовать Source Guard. На практике их функционал дублирует друг друга, хотя и есть нюансы.

Технология привязывает заданные IP-MAC к конкретному физическому интерфейсу. В результате тоже предотвращает ARP спуфинг, а также один узел сети не сможет отправить трафик от имени другого, подменив IP и MAC адреса источника (в случае ARP inspection это возможно, хотя и не является критичным).

Конфигурация

Source Guard тоже использует таблицу DHCP snooping. Она содержит не только связку IP-MAC, но и еще интерфейс, за которым находится конкретный узел.

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

(config)# ip source binding <mac.add.ress> vlan <id> <IP.add.re.ss> interface <name>

Source Guard активируется непосредственно на интерфейсе:

(config-if)# ip verify source port-security

Проверка

Проверка записей, которые использует технология, проводится командой:
show ip source binding
Что полезно, команда выводит как мануальные записи, так и взятые из таблицы DHCP snooping.
Список интерфейсов, на которых Source Guard активирован, выводится командой:
show ip verify source

Думаю, пока что хватит


В следующий раз покажу, какие еще списки доступа бывают на свичах и зачем они нужны; как контролировать коммуникацию в пределах одной подсети; попробую осветить тонкости перехода интерфейса в статус errdisable и может получиться понять, нужен ли вообще MACsec.
Tags:
Hubs:
Total votes 20: ↑18 and ↓2+16
Comments20

Articles