Основательно защитить свою сеть возможно лишь в том случае, если вы понимаете всю картину и умеете интегрировать функции безопасности так, чтобы они функционировали корректно и не нарушали нормальную работу. В этом секрет сетевой безопасности. Сети являются основанием любой современной организации, и с ними следует обходиться осторожно. В этой статье мы рассмотрим что такое защита Mikrotik от хакерских атак.
DHCP SNOOPING
DHCP Snooping — это функция безопасности, которая предотвращает атаки DHCP Spoofing. Атака действует следующим образом: злоумышленник внутри сети вызывает неверный DHCP-сервер для последующей MITM-атаки. DHCP может включать адрес шлюза по умолчанию, и этот адрес может быть хостом злоумышленника.
DHCP Snooping работает по принципу доверенных и недоверенных портов. Все сообщения DHCP на ненадежных портах будут отслеживаться. Цель — проверить, генерируются ли они DHCP-сервером. Ведь если в пользовательском сегменте мы видим сообщения типа DHCPLEASEQUERY, DHCPOFFER и DHCPACK, то это однозначно аномалия и в сети пользователя есть DHCP-сервер. На доверенных портах все сообщения DHCP будут считаться легитимными. Обычно доверенные порты настраиваются на соединениях между коммутаторами и маршрутизаторами, а недоверенные порты настраиваются на портах, к которым подключены конечные станции (например, компьютер, принтер, точки доступа, VoIP).
В RouterOS на мосту специально включено DHCP Snooping, при этом все порты устройства уже будут считаться недоверенными. Но чтобы изменить нужный порт, вам нужно будет зайти в настройки интерфейса. DHCP Snooping требует тщательной настройки, во время которой вам нужно будет воспользоваться возможностями инфраструктуры.
Для отслеживания DHCP можно использовать опцию 82. Это функция протокола DHCP, используемая для информирования DHCP-сервера, с какого порта поступает запрос DHCP. Также передается информация об использовании DHCP-реле. В некоторых конкретных сценариях требуется опция 82, поэтому включите ее при необходимости. На сайте MikroTik есть страница по настройке Snooping, где учтен сценарий использования «опции 82».
Включаем DHCP Snooping на bridge:
[caster@MikroTikDaymare] > /interface/bridge/set dhcp-snooping=yes <your bridge name>
Назначаем доверенный порт в контексте DHCP Snooping:
[caster@MikroTikDaymare] /interface/bridge/port> set trusted=yes interface=<interface> bridge=<your bridge name> numbers=<interface number on bridge>
На этом настройка отслеживания DHCP завершена; Служебные сообщения DHCP, которые обычно используются DHCP-сервером, будут отсекаться на ненадежных портах. Поскольку для атаки требуется, чтобы злоумышленник навязал свой адрес шлюза с помощью сообщения DHCPOFFER, эти настройки помогают полностью предотвратить ее. Однако будьте осторожны с настройками, чтобы не вызвать непреднамеренный DoS.
ДИНАМИЧЕСКАЯ МАРШРУТИЗАЦИЯ
Безопасность протоколов динамической маршрутизации (DRP) имеет особенное значение, потому мельчайшее воздействие на AS частично парализует внутреннюю сеть. Кроме того, на домен динамической маршрутизации вероятны разные атаки, к которым следует подготовиться. Далее мы побеседуем о безопасности протокола Open Shortest Path First (OSPF), поддерживаемого RouterOS.
Пассивные интерфейсы
Настройка пассивных интерфейсов для динамической маршрутизации позволяет маршрутизатору запретить отправку рекламы через отдельные интерфейсы. По умолчанию, без настройки пассивных интерфейсов, он транслирует рекламные объявления на все интерфейсы, подвергая домен маршрутизации крупному риску.
Ниже параметр passive
указывает на пассивный интерфейс.
[caster@MikroTikDaymare] /routing/ospf/interface-template> add interfaces=<interface> passive area=backbone
Криптографическая аутентификация
Использование аутентификации в доменах маршрутизации помогает гарантировать, что к ним могут подсоединиться лишь авторизованные маршрутизаторы. Однако аутентификация настраивается с применением паролей. следовательно вам безусловно необходимо убедиться, что эти пароли достаточно надежны. Если злоумышленник заполучит хеш-значение из дампа трафика, он может попробовать взломать пароль, используя грубую силу. А с паролем он может просто подключиться к домену маршрутизации.
Настройка ниже использует SHA-384. Кстати говоря, Ettercap сможет выдернуть любой MD5/SHA-хеш, что принесет атакующему возможность попробовать сбрутить пароль от домена OSPF. Опять же следи за стойкостью парольной фразы.
[caster@MikroTikDaymare] /routing/ospf/interface-template> set auth=sha384 auth-key=<auth_key> auth-id=<auth_id> numbers=X
БЕЗОПАСНОСТЬ ДЕРЕВА STP
STP (протокол связующего дерева) — это протокол L2, который оберегает компьютерную сеть от широковещательных штормов, блокируя лишние физические соединения. Дело в том, что кадры Ethernet не имеют поля TTL и широковещательный трафик будет неограниченно протекать по транзитным соединениям, если возникнет петля коммутатора. Протокол действует исключительно на уровне канала передачи данных и использует для связи кадры 802. 3 BPDU. STP естественно включен по умолчанию на управляемых коммутаторах.
впрочем злоумышленник может отослать коммутатору кадр STP BPDU с наименьшим значением приоритета, тем самым перехватив роль корневого коммутатора. данный процесс приводит либо к частичной атаке MITM, либо к DoS.
уберечься от подделки в дереве STP возможно с помощью BPDU Guard. данный механизм блокирует порт, если на него поступает кадр BPDU, который обычно применяется лишь для согласования между коммутаторами в домене STP. особенно отослав BPDU с минимальным значением приоритета, злоумышленник может перехватить роль корневого коммутатора, выполнив тем самым неполную MITM-атаку.
BPDU Guard настраивается именно на портах, которые находятся под мостом.
[caster@MikroTikDaymare] /interface/bridge/port> set bpdu-guard=yes interface=<interface> bridge=<bridge> numbers=X
Вот и вся настройка. BPDU Guard в этом плане не доставляет хлопот.
Осторожность при выборе STP Root
Корневым коммутатором STP обычно является коммутатор с наименьшим MAC-адресом. Вам необходимо учитывать этот аспект, поскольку если корневой коммутатор станет старым D-Link, это может повлиять на производительность сети. Также бывают случаи, когда соединения с главными маршрутизаторами FHRP через STP блокируются, и трафик может идти по неоптимальному пути. Настройте корневой коммутатор STP (и корневой вторичный STP) с учетом особенностей инфраструктуры.
БЕЗОПАСНОСТЬ СИСТЕМЫ РЕЗЕРВИРОВАНИЯ VRRP
Безопасность системы горячего резерва VRRP может быть поставлена под угрозу, поскольку злоумышленник может провести спуфинг FHRP Master и атаки MITM. Из-за особенностей работы VRRP здесь невозможно установить приоритет 255, поэтому придется действовать строже. Есть два эффективных способа.
Способ первый — криптографическая аутентификация. Она защищает домен VRRP с помощью специальной парольной фразы, не зная которую атакующий не проведет спуфинг. Опять же нужно позаботиться, чтобы ключ аутентификации был устойчив к брутфорсу. В RouterOS для защиты VRRP используется протокол из репертуара IPSec — AH. Уточнив у разработчиков RouterOS, я узнал, что его реализация в RouterOS основана на HMAC-MD5.
[caster@MikroTikDaymare] /interface/vrrp> add interface=<interface> priority=<priority_value> version=2 vrid=<group_id_number> authentication=ah password
Второй способ — фильтрация средствами файрвола. Для VRRPv3 аутентификация больше не поддерживается, однако с этим нужно тоже что‑то делать. С помощью таблиц Mangle
и Raw
можно заранее разрешить VRRP с легитимных VRRP-маршрутизаторов, а затем блокировать остальные VRRP-пакеты. Этот вариант даст наименьшую нагрузку на процессор. Получится, что в разрешаемых правилах нет адреса атакующего хоста, поэтому любые его попытки провести атаку на домен VRRP будут тщетны.
[caster@MikroTikDaymare] /ip/firewall/mangle> add chain=prerouting action=accept protocol=vrrp src-address=<first_vrrp_speaker_ip> in-interface=<interface> log=no log-prefix=""
[caster@MikroTikDaymare] /ip/firewall/mangle> add chain=prerouting action=accept protocol=vrrp src-address=<second_vrrp_speaker_ip> in-interface=<interface> log=no log-prefix=""
[caster@MikroTikDaymare] /ip/firewall/raw> add chain=prerouting action=drop in-interface=<interface> log=no log-prefix="" protocol=vrrp
Проблема псевдобалансировки
VRRP, конечно, обеспечивает отказоустойчивость, однако по факту в логической группе работает только один маршрутизатор, когда остальные пребывают в режиме ожидания.
Если в твоей сети несколько устройств с RouterOS и несколько сегментов VLAN, ты можешь задействовать все RouterOS в твоей сети, например:
- RouterOS1 будет
MASTER
за VLAN 120 и VLAN 140, а за VLAN 180 и VLAN 220 он будетBACKUP
; - RouterOS2 будет
MASTER
за VLAN 180 и VLAN 220, за VLAN 120 и VLAN 140 он будетBACKUP
. То есть конфигурация зеркальна RouterOS1.
Этот прием называется псевдобалансировкой. Конечно, тут нет того же round robin, но хотя бы все роутеры в домене VRRP будут работать. Для MASTER
— приоритет 200, для BACKUP
— 90. Цифры и VLAN ID я взял из головы для симуляции такого сценария.
Настраиваем RouterOS1:
[caster@RouterOS1] /interface/vrrp> add interface=vlan120 name=vrrp120 priority=254 vrid=120
[caster@RouterOS1] /interface/vrrp> add interface=vlan140 name=vrrp140 priority=254 vrid=140
[caster@RouterOS1] /interface/vrrp> add interface=vlan180 name=vrrp180 preemption-mode=no priority=90 vrid=180
[caster@RouterOS1] /interface/vrrp> add interface=vlan220 name=vrrp220 preemption-mode=no priority=90 vrid=220
И RouterOS2:
[caster@RouterOS2] /interface/vrrp> add interface=vlan120 name=vrrp120 preemption-mode=no priority=90 vrid=120
[caster@RouterOS2] /interface/vrrp> add interface=vlan140 name=vrrp140 preemption-mode=no priority=90 vrid=140
[caster@RouterOS2] /interface/vrrp> add interface=vlan180 name=vrrp180 priority=254 vrid=180
[caster@RouterOS2] /interface/vrrp> add interface=vlan220 name=vrrp220 priority=254 vrid=220
Таким образом возникает псевдобалансировка. Два RouterOS настроены зеркально, они оба готовы к замене вышедшего из строя MASTER-роутера. При этом задействуются все мощности внутри сегмента, второстепенное оборудование не будет простаивать. Также учитывай, что в RouterOS PREEMPT-режим включен по умолчанию, он позволяет упавшему ранее MASTER-роутеру вернуть себе эту роль, когда его заменил один из BACKUP-роутеров. Для бэкап‑роутеров, соответственно, PREEMPT выключается
БЕЗОПАСНОСТЬ ПАНЕЛИ УПРАВЛЕНИЯ (MGMT)
Защита RMI
MGMT — это специальные интерфейсы управления, которые позволяют настраивать устройство. В RouterOS для этого используются следующие службы:
- Telnet (TCP/23);
- API (TCP/8728);
- API-SSL (TCP/8729);
- SSH (TCP/22);
- HTTP (TCP/80);
- HTTPS (TCP/443);
- Winbox (TCP/8291).
Для панелей управления необходимо установить ограничение: доступ только из администраторской подсети. Это позволяет предотвратить попытки брутфорса учетных данных из остальных подсетей, так как все подключения из других сетей будут отброшены.
[caster@MikroTikDaymare] /ip/service> set address=<MGMT Subnet Address/24> <protocol_name>
Однако даже в администраторской подсети есть вероятность брутфорса, если один из компьютеров администратора будет заражен трояном. На этот случай можно дополнительно усилить защиты следующим образом:
- добавить цепочки правил для предотвращения брутфорса в таблицы Mangle/Raw;
- использовать только протокол SSH и аутентификацию по ключу;
- сменить номера портов (это, конечно, не полная мера безопасности, но может усложнить поиск порта управления оборудованием);
- если не используются API/API-SSL, то их лучше выключить, по ним тоже возможен брутфорс.
Защита учетных записей на оборудовании
На своем оборудовании придерживайся концепции наименьших привилегий, не разбрасывайся full-учетками на железе и следи, у какого инженера какой доступ к оборудованию и какие возможности для настройки. Также для оптимизации управления учетками можно поднять AAA-сервер, где учетные записи будут храниться централизованно и ими легко будет управлять.
НАСТРОЙКА ФАЙРВОЛА
Firewall в RouterOS — это подсистема, которая отвечает за обработку и фильтрацию всех пакетов. К настройке файрвола, на мой взгляд, должно быть особое отношение, потому что от нее зависит и производительность устройства, и уровень безопасности.
Мы не будем здесь подробно обсуждать все возможности межсетевого экрана RouterOS. Их много, и они могут быть чрезвычайно полезными и мощными. Но им посвящено множество статей и справочных материалов. «Стена огня lvl2. Настраиваем файрвол для отражения атак на примере MikroTik».
Мы же остановимся только на важных моментах, связанных с защитой от продвинутых атак.
Корректная обработка трафика
В RouterOS маршрутизируется весь трафик: используется концепция «разрешено все, что не запрещено». Трафик обрабатывается сверху вниз по правилам. Рекомендуется устанавливать правила в цепочках INPUT/Forward в начале настроек брандмауэра, которые разрешают установленные/привязанные соединения и запрещают недействительные соединения. Кстати, благодаря механизму Connection Tracking достигается отслеживание соединений по их статусу.
[caster@MikroTikDaymare] /ip/firewall/filter> add chain=input action=accept connection-state=established,related log=no log-prefix=""
[caster@MikroTikDaymare] /ip/firewall/filter> add chain=input action=drop connection-state=invalid log=no log-prefix=""
[caster@MikroTikDaymare] /ip/firewall/filter> add chain=forward action=accept connection-state=established,related log=no log-prefix=""
[caster@MikroTikDaymare] /ip/firewall/filter> add chain=forward action=drop connection-state=invalid log=no log-prefix=""
Аккуратная работа с ICMP
Также стоит разрешить работу протокола ICMP и при этом с небольшим ограничением на число пакетов в секунду, чтобы избежать потенциального DDoS по протоколу ICMP. Часто весь трафик ICMP блокируют на внешнем периметре, однако это может повлиять на работу PMTUD, который помогает бороться с избыточной фрагментацией при нестандартных значениях MTU.
[caster@MikroTikDaymare] /ip/firewall/filter> add chain=input action=accept protocol=icmp in-interface-list=<WAN_Interface> limit=50/5s,2:packet log=no log-prefix=""
TTL Shift
Если ваше оборудование выступает в роли прокси-сервера и вам необходимо скрыть его IP-адрес от трассировки, необходимо сдвинуть TTL в таблице Mangle в цепочке PREROUTING с шагом +1:
[caster@MikroTikDaymare] /ip/firewall/mangle> add chain=prerouting action=change-ttl new-ttl=increment:1 passthrough=yes in-interface=<internal_interface_for_ttl_shift> log=no log-prefix=""
Риск DNS-флуда
Убедитесь, что порт протокола DNS не открыт для потенциальной DDoS-атаки. DDoS-атака на MikroTik обычно осуществляется через DNS. Часто бывает, что в настройках DNS на MikroTik стоит галочка «Разрешить удаленные запросы», что позволяет RouterOS быть DNS-сервером. Обычно это касается внутренней инфраструктуры, но порт может также выступать на внешний интерфейс, выходящий в Интернет.
Drop All Other
В конце списка правил межсетевого экрана всегда должен быть запрет Drop All Other для внешнего интерфейса RouterOS (того, что обращен к Интернету; RouterOS не различает внутренние и внешние интерфейсы). Он будет запрещать все несанкционированные подключения к маршрутизатору, но убедитесь, что все необходимые правила для ваших протоколов находятся на переднем плане, чтобы последнее правило не нарушало сетевое подключение. Правило «Удалить все остальные» должно находиться в конце списка правил любого брандмауэра.
[caster@MikroTikDaymare] /ip/firewall/filter> add chain=input action=drop in-interface=<WAN_Interface> log=no log-prefix=""
БЕЗОПАСНОСТЬ WINBOX НА L2
Winbox может работать на уровне L2, то есть сетевой инженер может получить доступ к RouterOS без необходимости проходить через сетевой уровень. За это отвечает MAC Winbox Server и позволяет подключаться к Winbox без IP-адресации.
По умолчанию MAC Winbox Server доступен на всех интерфейсах, и это нехорошо. Для повышения безопасности рекомендуется разрешить использовать его только на определенных интерфейсах.
Пример: MAC Winbox Server включаю только на листе внутренней LAN, где расположен LAN-мост для работы внутри сети.
НЕИСПОЛЬЗУЕМЫЕ ИНТЕРФЕЙСЫ
Одно из главных правил хорошего тона — отключать неиспользуемые интерфейсы. Это снижает вероятность несанкционированных подключений. Этому правилу очень просто следовать:
[caster@MikroTikDaymare] /interface/ethernet> set etherX disabled=yes
DISCOVERY-ПРОТОКОЛЫ
Discovery-протоколы (DP) уязвимы к двум offensive-векторам:
- Information Gathering — атакующий может извлечь чувствительную информацию против оборудования, рассылающего DP в свои порты;
- Neighbor Table Overflow — атакующий может выполнить переполнение таблицы соседей в контексте протоколов CDP/LLDP, что перегружает процессор устройства, а это приводит к DoS. Атака основана на создании ложных DP-кадров и массовой рассылке с прицелом на порт RouterOS.
Лучшей практикой является ограничение работы этих протоколов, то есть оставление их только на тех интерфейсах, где это необходимо. Таким образом, оборудование не будет лишний раз распространять информацию о себе там, где она не нужна.
[caster@MikroTikDaymare] > /ip/neighbor/discovery-settings/set discover-interface-list=<your interface list> protocol=cdp,lldp,mndp
ВЫВОДЫ
На этом моя статья подходит к концу. Это не полный мануал по безопасности MikroTik, однако я старался акцентировать внимание на критических механизмах безопасности, к которым должно быть особое отношение в корпоративных сетях. Именно неверные настройки безопасности внутри сети создают большее число проблем. Полагаю, так происходит из‑за халатности сетевых инженеров. Оно и понятно: сети, бывает, не меняются десятилетиями, и об отсутствии нужных настроек просто забывают.