Казалось бы, получив доступ во внутреннюю сеть, злоумышленник может относительно беспрепятственно исследовать соседние узлы, собирать передаваемую информацию и вообщем уже все потеряно.
Тем не менее при корректном подходе к контролю уровня доступа можно существенно осложнить упомянутые процедуры. При этом грамотно подготовленная сетевая инфраструктура, заметив зловредную аномалию, об этом своевременно сообщит, что поможет снизить ущерб.
Под катом перечень механизмов, которые помогут выполнить данную функцию.
Хотелось бы привести общую выжимку без лишних Вики-обоснований, но с описанием вариаций конфигурации, тем не менее иногда отступаю в ликбез, что бы стороннему читателю статья показалась более дружелюбной.
Статья выходила объемной, и по-моему слишком большие статьи не читаются, а складываются в долгий ящик с мыслью «как нибудь осилю». Поэтому материал пришлось разделить, и при должном успехе составлю вторую часть с менее распространенными (по крайней мере у нас) технологиями.
Содержание:
Технологии описаны на базе коммутатора 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>
Синтаксис отдельной записи ниже:
По-моему, это ужастный костыль и мир сошел с ума, но если по другому никак..
Под таким arp access-list'ом указываются все необходимые статические записи. Далее технология активируется не как прежде, а с опцией filer:
Так же можно отдельный интерфейс(ы) пометить как доверенные. На этих интерфейсах 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.
Автор: Dimi3