Очистить правила firewall mikrotik
Роутеры Mikrotik очень гибки в настройке и обладают весьма обширным функционалом, но при неправильной настройке Firewall могут быть легко взломаны. Заводские настройки роутеров Mikrotik не обеспечивают полной безапосности, поэтому обезопасить свой роутер от проникновения можно лишь выполнив все настройки самостоятельно. Рассмотрим основные настройки Firewall и служб роутера Mikrotik.
Освоить MikroTik Вы можете с помощью онлайн-куса « Настройка оборудования MikroTik ». Курс основан на официальной программе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Доступ к роутеру Mikrotik
Меняем имя пользователя по-умолчанию
По-умолчанию имя пользователя с полным доступ к роутеру admin. Смена стандартного имени усложнит получение доступа к роутеру.
Создаем сложный пароль
Для создания сложного и уникального пароля лучше воспользоваться генератором паролей. Безопасный пароль должен содержать символы верхнего и нижнего регистра, цифры и специальные символы.
Другой способ установки пароля
Доступ по IP адресу
Помимо того, что firewall защищает ваш роутер от несанкционированнного доступа из внешних сетей, существует возможно разрешить доступ к настройкам роутера только с определенного ip-адреса или сети.
где x.x.x.x - ip-адрес, yy - маска сети
Службы роутера Mokrotik
Смотрим какие службы задействованы на Mikrotik.
Отключаем службы, которые не используют безопасное подключение.
Меняем стандартный порт службы SSH, чтобы предотвратить большинство случайных попыток входа в систему различных SSH-взломщиков
Дополнительно можно задать доступ к службам только с определенного IP-адреса или сети. Например для службы Winbox установим доступ из сети 192.168.88.0 и маской 24
Чтобы отключить возможность обнаружения роутера в сетях можно отключить следующие службы.
Отключение обнаружения MAC-адреса
Отключаем Mac-telnet
Отключаем MAC-Winbox
Отключаем MAC-Ping
Отключаем Bandwidth server
Bandwidth server используется для проверки пропускной способности между двумя роутерами Mokrotik.
Отключаем Neighbor Discovery
Протокол Neighbor Discovery используется для распознавании других роутерово Mikrotik в сети. Отключаем его на всех интерфейсах
Кэширование DNS
В роутере может быть включена функция кэширования DNS для более быстрого разрешения доступа к удаленным серверам. Если у вас нет потребности в этом, то можете отключить.
Прочие службы Mikrotik
Кэширующий Proxy
Socks proxy
UPNP
Служба динамических имен или Cloud IP
Усиление безопасности SSH подключений
Включение усилинного шифрования для SSH
Интерфейсы роутера
Ethernet / SFP
Возьмите за правило отключать на роутере те интерфейсы, которые не используются. Это позволит снизить вероятность несанкцианированных подключений.
где x - номер неиспользованного интерфейса
LCD
Некоторые роутеры Mikrotik снабжены для удобства информационным дисплеем. Установите pin-код или отключите дисплей.
Firewall
Обработка подключений к роутеру IPv4
- работаем с новыми соединениями для снижения нагрузки на маршрутизатор;
- создаем список ip-адресов, которым разрешен доступ к маршрутизатору;
- разрешаем ICMP запросы;
- сбрасываем все остальные подключения.
Настройки firewall для клиентов роутера IPv4
- Пакеты установленных и сопутствующих соединений добавляем в fasttrack для повышения пропускной способности;
- сбрасываем все недействительные соединения и отмечаем их префиксом invalid;
- сбрасываем все пакеты, которые направлены из локальной сети не на публичный IP-адрес, используем список dst-address-list=not_in_internet для входящего интерфейса bridge1, записываем в log с префиксом log-prefix=!public_from_LAN;
- Сбрасываем взодящие пакеты на порт интернета ether1, которые не были обработаны NAT, записываем в журнали с префиксом !NAT;
- сбрасываем входящие пакеты из интернета, у которых нет публичного ip-адреса, пишем в логи спрефиксом !public;
- сбрасываем все подключения с локальной сети, которые не имеют ip-адреса подсети нашего роутера.
Работа с пакетами протокола IPv6 отключена в роутерах Mikrotik по-умолчанию. При включении IPv6 роутер самостоятельно не создает правил для Firewall.
Отключаем обнаружение соседями для IPv6
Обработка подключений к роутеру IPv6
- обрабатываем новые пакеты, принимаем установленные соединения и связанные (сопутствующие);
- сбрасываем недействительные пакеты и помечаем префиксом;
- принимаем ICMP пакеты;
- пропускаем соединения от клиентов роутера в интернет;
- сбрасываем все остальное.
Освоить MikroTik Вы можете с помощью онлайн-куса « Настройка оборудования MikroTik ». Курс основан на официальной программе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Настроить firewall на MikroTik достаточно просто, но пользователи либо не сильно много уделяют внимания этой одной из важных элементов настройки устройства, либо настраивают его неправильно, что показало большое количество взломанных устройств в 2019 году, когда была найдена уязвимость WinBox. Данная статья пытается помочь понять, как работает фильтрация трафика в MikroTik, что необходимо делать что бы защитить свои устройства, но не претендует на руководство к действию, каждый выбирает свой путь сам.
Для правильной настройки межсетевого экрана на любом устройстве необходимо понимать несколько вещей:
- Схема работы firewall.
- Как работает firewall на устройстве.
- Что мы хотим открыть и защитить.
Схемы работы Firewall
Их две, и они применимы к любому межсетевому экрану:
- Разрешить всё, что не запрещено.
- Запретить всё, что не разрешено.
В первой схеме по умолчанию на все пакеты не накладывается никаких ограничений и по необходимости блокируются только какие-то критические сервисы, например, сервисы предоставляющие удаленный доступ. По данной схеме работают большинство домашних маршрутизаторов, у которых разрешен весь трафик кроме соединений из вне, которые не были инициированы этим устройством или устройствами локальной сети, работающими через этот шлюз.
Во второй схеме все подключения по умолчанию блокируются, если необходим доступ к какому-либо сервису, то разрешаем его.
FireWall в MikroTik
Доступ к настройке IP -> Firewall , фильтрация настраивается во вкладках Filter Rules и Raw . Разница в правилах между вкладками в том, что правила на вкладке Raw обрабатываются до того, как пакет попадет в Connection Tracker , это позволяет фильтровать пакеты гораздо раньше, что требует меньших затрат ресурсов устройства, но и имеет меньше возможностей в правилах, эффективен при обработке большого объема трафика.
Правила состоят из цепочек (Chain), в таблице Filter Rules по умолчанию три цепочки:
- Input - трафик, направленный к только этому устройству. На схеме такой трафик обрабатывается в блоке Filter Input .
- Output - трафик, направленный от этого устройства. На схеме такой трафик обрабатывается в блоке Filter Output .
- Forward - трафик, проходящий через это устройство, например, из локального компьютера в интернет и обратно, направление не имеет значение. На схеме такой трафик обрабатывается в блоке Filter Forward .
Помимо стандартных цепочек можно создавать пользовательские цепочки, это может быть полезно для создания блоков обработки пакетов и более наглядного его восприятия.
Следующим важным компонентом в работе firewall является Connection Tracking (блок голубого цвета на схеме прохождения пакетов). Connection Tracking определяет состояние соединений, результат хранится в таблице Connection . Именно состояния подключений позволяют фильтровать трафик так, чтобы удаленный ресурс не смог подключиться сам к нашему устройству, но трафик в установленных сессиях нашим устройством мог беспрепятственно проходить. Существуют следующие четыре состояния пакетов:
- New - Новый пакет, не относящийся к текущим подключениям.
- Established - Пакет принадлежит одному из существующих подключений из таблицы Connection .
- Related - Пакет был порожден уже существующим подключением. Один из примеров протокол FTP, в котором передача команд происходит на порту 21, а передача данных на порту 20.
- Invalid - Пакеты к которым не применимо не одно из предыдущих состояний.
В настройках MikroTik есть еще одно состояние:
- Untracked - пакет, обработанный до того, как он попал в Connection Tracking и был обработан в RAW таблице.
Создание правил в Firewall
Добавление правил: IP -> Firewall -> Filter Rules -> + . На вкладке General задаются условия при совпадении которых происходит отработка правила, вкладка Action задает действие, выполняемое при совпадении условий правила. На вкладке Advanced располагаются дополнительные условия для правила не вошедшие в основной раздел, из практики в этом разделе наиболее часто используются пункты Src. Address List и Dst. Address List , в которых указываются списки адресов, например, IP адреса с которых разрешен доступ к устройству.
Возможные параметры для фильтрации трафика:
- Chain - цепочка, направление трафика, значения по умолчанию: Input, Output, Forward. Единственный параметр обязательный к заполнению.
- Src. Address - IP адрес источника пакета.
- Dst. Address - IP адрес получателя пакета.
- Protocol - фильтр по протоколу.
- Src. Port - Порт(ы) с которого был отправлен пакет (доступен только при выборе соответствующего протокола).
- Dst. Port - Порт(ы) на который отправлен пакет (доступен только при выборе соответствующего протокола).
- Any. Port - Порт(ы) фигурирующий в пакете, не важно в каком направлении отправлен пакет (доступен только при выборе соответствующего протокола).
- In. Interface - Интерфейс на который прилетел пакет.
- Out. Interface - Интерфейс с которого отправлен пакет.
- In. Interface List - Интерфейс из списка, на который прилетел пакет (список составляется в Interfaces -> Interface List ).
- Out. Interface List - Интерфейс из списка, с которого отправлен пакет (список составляется в Interfaces -> Interface List ).
- Connection State - Состояние подключения, значение берется из таблицы Connection.
- Src. Address List (вкладка Advanced ) - IP адрес из списка источников пакета (список составляется на вкладке IP -> Firewall -> Address List ).
- Dst. AddressList (вкладка Advanced ) - IP адрес из списка получателей пакета (список составляется на вкладке IP -> Firewall -> Address List ).
Все параметры, кроме параметра Chain , заполняются по необходимости для более точной фильтрации пакета. Что бы пакет попал под действие правила все указанные условия должны совпасть!
В результате, если обрабатываемый пакет подпадает под условия правила, с этим пакетом выполняются указанные в настройке действия (Actions). Основные действия при обработке:
Примеры защиты устройств
Необходимо создать два правила, первое для цепочки input , второе для цепочки forward , т.к. первая цепочка означает трафик, приходящий не посредственно на это устройство, вторая цепочка означает проходящий через роутер трафик. На вкладке General в поле Chain (цепочка) указываем Input (входящий трафик), в поле In Interface выбираем интерфейс, к которому подключен провод провайдера, в разделе Connection State выбираем Established , Related и в квадрате в начале поля ставим восклицательный знак нажав на него, это означает логическое НЕ, запись будет читаться как пакеты НЕ Established и НЕ Related . Другими словами, всё кроме выбранного.
На вкладке Action в поле Action выбираем Drop .
Создаем такое же правило для цепочки Forward . Что бы не заполнять все поля заново, дважды нажимаем на созданном правиле, в открывшемся окне нажимаем кнопку Copy , в открывшемся новом окне в поле Chain меняем input на forward . Нажимаем в обоих окнах кнопки OK , в списке Filter Rules появится два запрещающих правила.
В командной строке правила будут выглядеть так:
Создаем новое правило для цепочки input , т.к. в данном случае доступ разрешается к этому устройству (маршрутизатору), в поле Protocol выставляем icmp , в поле In. Interface выбирается интерфейс, к которому подключен провод провайдера.
На вкладке Action выбираем accept .
Добавление правила из командной строки будет выглядеть так:
После нажатия кнопки OK правило добавится в самый низ таблицы, перетаскиваем его выше запрещающих правил захватив мышкой.
Как и в предыдущем примере разрешающее правило должно располагаться выше запрещающих ввиду того, что запрещающие правила блокируют доступ из внешней сети.
Создаем новое правило для цепочки forward , т.к. устройство находится за маршрутизатором, в поле Src. Address вносим IP адрес с которого разрешен доступ, в поле Protocol выставляем 6(tcp) , в поле Dst. Port пишем 3389 (порт RDP по умолчанию) в поле In. Interface выбирается интерфейс, к которому подключен провод провайдера.
На вкладке Action выбираем accept , нажимаем OK и перемещаем правило выше запрещающих.
Напоминаю, что здесь мы рассматриваем только фильтрацию трафика, настройки NAT опущены.
В командной строке добавление правила будет выглядеть следующим образом:
Что бы запретить весь трафик в firewall в конец списка правил необходимо добавить три запрещающих правила для трех стандартных цепочек: input , output и forward . Но! Прежде чем их добавить необходимо позаботиться о разрешающих правилах, чтобы как минимум не потерять доступ к устройству.
- Разрешаем доступ к маршрутизатору для локальной сети и обратно.
Пусть у нас локальная сеть имеет адресацию 192.168.123.0/24 , интерфейсы локальной сети объединены в бридж bridge-local-net , IP адрес маршрутизатора 192.168.123.1/32 . Создаем два разрешающих правила, для входящего и исходящего трафика.
и - Разрешаем доступ к маршрутизатору из внешней сети для нескольких IP.
У нас есть несколько IP адресов, которым мы всецело доверяем (работа, дача, вайфайчик у любимой девушки) и с этих IP адресов мы хотим иметь доступ к нашему устройству. Создаем список с такими IP адресами в IP -> Firewall -> Address Lists назвав его WhiteList .
Создаем два разрешающих правила для цепочек input и output , соответственно указав для каждой цепочки в качестве входящего и исходящего интерфейса тот, к которому подключен провод провайдера.
На вкладке General задаем только тип цепочки и входящий/исходящий интерфейс.
На вкладке Advanced в поле Src. Address List выбираем созданный ранее список IP адресов WhiteList .
Обратное правило создается аналогично. Команды для добавления правил из терминала:
Предоставляем доступ в сеть интернет только определенным IP адресам локальной сети. Что бы не создавать правила для каждого адреса на вкладке IP -> Firewall -> Address Lists создадим список InternetAccess .
На вкладке Filter Rules добавляем правила для доступа в интернет по созданному списку (настройки NAT в данной статье не рассматриваются, только фильтрация).
Исходящий трафик не ограничиваем, цепочку выставляем Forward , Out. Interface - WAN интерфейс.
На вкладке Advanced в поле Src. Address List выставляем созданный ранее список InternetAccess . На вкладке Action выставляем accept .
В обратном, входящем, правиле разрешаем подключения только Established и Related , цепочка, как и в предыдущем правиле, будет Forward , но WAN интерфейс мы теперь указываем в поле In. Interface .
На вкладке Advanced в поле Dst. Address List выставляем созданный ранее список InternetAccess . На вкладке Action выставляем accept .
Добавление правил из терминала:
Отладка
В разделе Log при отработке правила будут примерно такие записи:
После отладки не забываем отключать в правилах логирование.
Если посмотреть на схему прохождения пакета, то мы видим, что входящий пакет первым делом попадает в блок RAW Preroutig , а на выходе в RAW Output - это и есть первая стена Firewall, первым делом пакет проверяется здесь, далее уходит на дальнейшую обработку и попадает в раздел Filter. Получается, что, обработав пакет в RAW таблице мы потратим меньше вычислительных мощностей устройства, это может иметь весомое преимущество если, например, необходимо закрыться от DDOS атаки, пакеты будут отсеиваться уже на самом входе.
Настройка правил в RAW таблице схожа с настройкой в разделе Filter, отличия только в том, что пакет не еще прошел обработку в Connection Tracking, поэтому возможности для фильтрации меньше. В разделе Chain есть только два вида цепочек Prerouting и Output . Первый это пришедший на интерфейс пакет, второй отправляемый с интерфейса пакет, тип (Connection State) и маркировка пакета на данном этапе не доступны.
IPv6 Firewall
Настраивается в разделе IPv6 -> Firewall . Настройка схожа с firewall для IPv4, основные отличия в оперирование IPv6 адресами и отсутствии NAT. При настройке на устройстве IPv6 адресации не забываем настроить и Firewall!
Роутеры Mikrotik очень надежное оборудование, которое стоит один раз правильно настроить и забыть про него. Но у некоторых со временем начинаются проблемы, в частности низкая скорость интернета или его отсутствие. Если зайти на устройство и посмотреть загрузку процессора,то видно что она доходит до 100% (чтобы посмотреть загрузку ЦП, подключитесь к устройству через Winbox зайти в System -> Resoures, значение CPU Load)
Если вы ищете понятный и удобный источник информации по микротикам, то вот он: курс «Настройка оборудования MikroTik». Это видеоучебник, где «без воды» собрана вся базовая информация по работе с MikroTik и RouterOS. Для новичков станет прямым руководствам, опытные инженеры смогут освежить и упорядочить знания. 162 видеоурока и 45 лабораторных работ, основанные на программе вендора MTCNA. Первые 25 уроков можно заказать бесплатно на странице курса.
Если у вас большая загрузка ЦП, то скорее всего боты сканируют устройство на поиск уязвимостей. Обычно больше всего запросов идет на 53 порт, DNS сервер микротика.
Что бы подобных проблем не возникало, нужно настроить на Mikrotik Firewall.
Подключаемся к нашему устройству через Winbox и заходим IP -> Firewall и нажимаем + что бы создать правило
Появилось окно создания правила.
Рассмотрим подробно все варианты условий, на основании которых мы можем принимать решение о действии.
Закладка General
Давайте подробно рассмотрим что здесь есть
Наименование
Описание
Chain(Цепочка)
Доступны следующие варианты для выбора:
input (входящий трафик),
output (исходящий трафик),
forward (проходящий трафик).
Src. Address
Доступны следующие варианты для выбора:
Один адрес. Например, 10.0.100.1
Подсеть. Например, 10.0.100.0/24
Диапазон адресов. Например, 10.0.100.1-10.0.100.255
Dst. Address
Доступны следующие варианты для выбора:
Один адрес. Например, 10.0.100.1
Подсеть. Например, 10.0.100.0/24
Диапазон адресов. Например, 10.0.100.1-10.0.100.255
Protocol
Основные протоколы: TCP и UDP
Также есть возможность указать иной протокол.
Src. Port
(порт, с которого пришел пакет.)
Поле работает только для основных протоколов TCP или UDP.
Dst. Port
(порт, на который пришел пакет)
Поле работает только для основных протоколов TCP или UDP.
Any Port (любой порт)
Поле которое определяет сразу два порта Src. Port и Dst. Port
Используется если Src. Port совпадает с Dst. Port(при этом поля Src. Port и Dst. Port не заполняются).
P2P
Указывает на то, что пакет относится к P2P протоколу.
In Interface
Интерфейс, на который поступил пакет.
Out Interface
Интерфейс, на который будет отправлен пакет.
Packet Mark
Назначается через Mangle заранее.
Connection Mark
Назначается через Mangle заранее.
Routing Mark
Назначается через Mangle заранее.
Connection Type
Основывается на данных указанных в connection tracking.
Connection State
Указывает в каком состоянии находится соединение.
Так же перед некоторыми полями можно поставить ! - это означает отрицание, например
обозначает что адрес источника любой, кроме 10.1.1.100.
Закладка Advanced
Наименование
Описание
Src. Address List
Адрес источника пакета совпадает с одним из адресов в именованном списке адресов, заданном на закладке Firewall/Address Lists.
Dst. Address List
Адрес назначения пакета совпадает с одним из адресов в именованном списке адресов, заданном на закладке Firewall/Address Lists.
Layer 7 Protocol
При проверке пакета L7-фильтром, заданным на закладке Firewall/Layer 7 Protocols, он был отнесен к одному из определенных на этой закладке протоколов.
Внутри пакета содержится определенная строка символов.
Количество байт, прошедших через соединение. При этом 0 обозначает бесконечность.
Например, 1000000-0 = более 1МБ.
Скорость соединения. Например, 0-128000. Это правило сработает, если скорость подключения менее 128 килобит в секунду. (Поставив флаг [!] перед таким правилом, мы заставим срабатывать правило на соединение более 128kbps)
Per Connection Classifier
Используется при необходимости разделения трафика на несколько потоков. Позволяет держать пакеты с определенным набором опций в одном потоке.
Src. MAC Address
MAC-адрес сетевой карты источника. Сработает, только если источник пакета находится в одном Ethernet-сегменте с маршрутизатором.
Out Bridge Port
Порт назначения интерфейса типа bridge, при активированной в Bridge опции Use IP Firewall.
Порт источника интерфейса типа bridge, при активированной в Bridge опции Use IP Firewall.
Приоритет пакета. Может быть получен из VLAN, WMM или MPLS ext. bit
Определяет DSCP, заданный в заголовке пакета.
Размер MSS (Maximum segment size) TCP пакета.
Случайное срабатывание правила. Число задается в диапазоне 1-99, что соответствует вероятности срабатывания правила от 1 до 99 процентов. Обычно используется при тестировании сервисов, когда надо изобразить случайную потерю пакетов на нестабильном канале.
Флаги TCP соединения.
В заголовке пакета имеется заданная опция протокола Ipv4.
Time To Live – Время жизни пакета соответствует …
Закладка Extra
Наименование
Описание
Предел количества соединений для адреса или подсети. Адрес или подсеть задается полем netmask (для 1 адреса 32).
Предназначено для ограничения количества передаваемых пакетов:
Rate – количество пакетов в секунду (минуту/час).
Burst – Количество неучитываемых пакетов (пакетов не входящих в packet rate).
Ограничение количества передаваемых пакетов по адресу источника/назначения. В отличии от limit, учитываются пакеты для каждого адреса или адреса/порта в зависимости от выбранных опций.
Поля rate и burst соответствуют таковым в опции Limit.
Limit By – по какому критерию (src|dst address | address/port) учитывать пакеты.
Expire - через какой промежуток времени запомненный адрес/порт будут удалены.
Every – из какого числа пакетов.
Например Every=3, packet=2 Обозначает «Каждые 2 из 3 пакетов или проще 2/3 пакетов).
Опцию часто используют при балансировке нагрузки между каналами.
Время действия правила. Позволяет ограничить действие правила во времени и по дням недели. Так как у маршрутизатора нет аппаратно-независимых часов, для корректной работы опции требуется настроенный SNTP-клиент (System/SNTP-Client) и часовой пояс (System/Clock)
Src. Address Type
Тип IP-адреса источника (Local, Unicast, Broadcast, Multicast)
Dst. Address Type
Тип IP-адреса назначения (Local, Unicast, Broadcast, Multicast)
Port Scan Detect. Опция позволяющая настроить определение события сканирования портов. Поля:
Weight Threshold = При каком значении сработает.
Delay Threshold = Максимальная задержка между пакетами с разными портами назначения, пришедшими с одного адреса.
Low Port Weight = сколько при подсчете стоит каждый порт в диапазоне 0-1023.
High Port Weight = сколько при подсчете стоит каждый порт в диапазоне 1024-65535.
Опции, связанные с работой хотспот, если он настроен на маршрутизаторе.
Пакет является фрагментом другого пакета.
Вкладка Action
Действия задаются на закладке Action сформированного правила, давайте рассмотрим варианты:
Accept
Разрешить прохождение пакета. Дальнейшие действия по фильтрации прекращаются, пакет передается на следующий этап обработки.
add-dst-to-address-list
Добавить адрес назначения пакета в именованный список адресов (address list).
- Address-List – Имя списка адресов. Выбирается из списка или задается новое.
- Timeout – Время, которое данный адрес будет присутствовать. По истечении заданного времени адрес будет удален из списка.
add-src-to-address-list
Добавить адрес источника пакета в именованный список адресов (address list).
- Address-List – Имя списка адресов. Выбирается из списка или задается новое.
- Timeout – Время, которое данный адрес будет присутствовать. По истечении заданного времени адрес будет удален из списка.
Уничтожить пакет. Пакет удаляется и его обработка останавляивается.
Перебросить на собственную цепочку(chain) обработки пакетов.
Log
Записать информацию о пакете в Log-файл. При этом пакет будет обработан следующим правилом (использяется для выявления проблем с прохождением пакета).
Passthrough
Ничего не делать. Передать пакет на следующее правило. Однако при этом счетчики работают, показывая сколько пакетов соответствовало этому правилу. Обычно используется для статистики.
Reject
Return
Досрочно прервать обработку собственной цепочки (chain) и вернуться на следующее правило за правилом с Action=jump, которое передало пакет в эту цепочку.
Tarpit
Может использоваться только с протоколом TCP. Суть в том, что маршрутизатор дает разрешение на создание соединения, при этом выставляя нулевое окно передачи (т.е. скорость соединения = 0). Позволяет «завесить» атакующий хост на этом соединении.
Вернемся к настройкам и создадим ПЕРВОЕ ПРАВИЛО.
Мы разрешаем все уже установленные соединения (галочка established) и все зависимые подключения (галочка related)
Вкладка General
Connection State - established и related
Вкладке Action выбираем accept - разрешить прохождение пакета.
ВТОРОЕ ПРАВИЛО.
Разрешаем команду Ping до нашего устройства
Вкладка General
Вкладка Action выбираем accept
ТРЕТЬЕ ПРАВИЛО.
Разрешаем новые соединения по порту 8291 (порт управления winbox) с любого интерфейса
Вкладка General
Вкладка Action выбираем accept
ЧЕТВЕРТОЕ ПРАВИЛО.
Блокируем все новые соединения с внешнего интерфейса
Обратите внимание, что это правило должно быть ниже предыдущих, иначе если настраиваете роутер удаленно, вы можете потерять к нему доступ!
Вкладка General
In. Interface - l2tp-out1 (наше vpn соединение)
На вкладке Action выбираем drop
Должно получиться следующее:
Обратите внимание сколько по последнему правилу пакетов, хотя правило только создано.
На этом базовая настройка безопасности роутера завершена.
Если вы ищете понятный и удобный источник информации по микротикам, то вот он: курс «Настройка оборудования MikroTik». Это видеоучебник, где «без воды» собрана вся базовая информация по работе с MikroTik и RouterOS. Для новичков станет прямым руководствам, опытные инженеры смогут освежить и упорядочить знания. 162 видеоурока и 45 лабораторных работ, основанные на программе вендора MTCNA. Первые 25 уроков можно заказать бесплатно на странице курса.
RouterOS — сетевая ОС, изначально предназначенная для устройств RouterBoard латвийской компании Mikrotik, но в дальнейшем перекочевавшая на x86 и в облака (версия Cloud Hosted Router). В этой статье поговорим о том, как грамотно настроить межсетевой экран в этой ОС.
Безопасность периметра локальной сети — одна из приоритетных задач любого системного администратора и в компании Mikrotik это прекрасно понимают. Так что как только вы включили устройство на RouterBoard с настройками по умолчанию — там уже будет некоторое количество преднастроенных правил. В случае Mikrotik CHR — по умолчанию правил не будет, но Mikrotik настоятельно рекомендует их настроить.
Сразу оговоримся, что в рамках этой статьи мы будет пользоваться исключительно интерфейсом командной строки (CLI) и облачной версией RouterOS CHR. Логика настройки точно такая же, как и при использовании WinBox или WebFig, но предпочтительнее изначально пользоваться CLI.
Немного теории: настройка firewall
Одним из базовых понятий настройки файервола Mikrotik является цепочка (chain). По умолчанию их 3, но есть возможность и создания собственных цепочек:
- Цепочка INPUT — входящий трафик, приходящий на маршрутизатор.
- Цепочка OUTPUT — исходящий трафик, создаваемый маршрутизатором.
- Цепочка FORWARD — трафик, проходящий сквозь через маршрутизатор.
Если к нам должен прийти какой-либо трафик извне, например, из интернета, то мы его будем обрабатывать цепочкой INPUT. Чтобы обработать правилами трафик, уходящий наружу (например, в тот же интернет), задействуем цепочку OUTPUT. Если же наш маршрутизатор не находится на границе сети, а служит промежуточным узлом между сетями, то тогда для обработки трафика применяем цепочку FORWARD.
Причем тут странное название «цепочка»? Все элементарно. Все создаваемые правила обработки действуют не вместе, а строго по очереди одно за другим. Точно также, как формируется цепь — одно звено следует за другим. Именно поэтому списки правил стали именовать «цепочками».
Теперь коснемся статусов соединения. Каждое соединение условно можно разделить на 4 категории:
- New — исходя из названия ясно, что это новое соединение, а не одно из существующих.
- Established — соединение установлено, по нему можно передавать пакеты данных.
- Related — соединение, которое относится уже к какому-либо из существующих, но используемое в иных целях. Пока не будем заострять на этом внимание, чтобы не усложнять.
- Invalid — некорректное соединение, то есть маршрутизатор понятия не имеет, что это за соединение и как его обрабатывать.
И сразу к практике: фильтрация
Открываем консольный интерфейс и посмотрим на существующие правила:
Пока что правил нет, отображается только «легенда» про флаги. Переходим в раздел настройки фильтров:
Теперь создадим несколько правил и расскажем для чего они нужны:
Эту команду можно читать прямо дословно. Разберем прямо по пунктам:
Таким образом эта длинная команда всего лишь превращается во вполне логичную фразу «Принимать извне все пакеты со статусом соединения Established и Related». Это правило позволяет четко указать маршрутизатору что если из внешней сети прилетают соединения с указанными статусами, то их следует принять.
Теперь переходим к следующему правилу, рекомендуемому Mikrotik:
Тут мы заострим внимание только на параметре src-address-list=allowed_to_router. При обработке трафика мы можем формировать различные списки IP-адресов. Каждый список будет иметь имя. Так что дословный «перевод» этого правила всего лишь «Принять пакеты, если IP-адрес с которого обращаются, есть в списке allowed_to_router. Нам это правило пригодится для дальнейшего формирования списка разрешенных IP-адресов.
Еще небольшое пояснение. Из-за того, что правила в цепочке обрабатываются одно за другим, то вначале следует прописывать разрешающие правила, а только после этого запрещающие.
Теперь следующее правило, оно достаточно спорное. Мы разрешим маршрутизатору отвечать на команду ping, приходящую извне. С одной стороны — это потенциально раскрывает то, что на нашем IP-адресе есть действующее устройство, а с другой это часто требуется для организации мониторинга. У нас в Selectel, к примеру есть услуга «Мониторинг состояния сервисов», которая позволяет отслеживать доступность любого хоста из разных стран мира. Если вам нужно, отключить ping, то в action надо прописать не accept, а drop.
Тут все просто — эта команда разрешает принимать извне и обрабатывать ICMP-пакеты. И завершающая команда:
Этим в финале цепочки INPUT мы будем отбрасывать (дропать) все оставшиеся пакеты, не подпадающие под правила выше. Посмотрим как у нас сформировались правила:
Рассмотрим как же это работает. Представим, что мы пингуем маршрутизатор извне. Это выглядит примерно так:
- Прилетел снаружи ICMP-пакет. Машрутизатор смотрит в правило номер 0 — есть ли уже установившееся соединение. Если нас пингуют впервые, то статус соединение будет New, а не Established или Related. Так что правило не срабатывает.
- Смотрим дальше — есть ли IP-адрес с которого пришел пакет в списке allowed_to_router. Поскольку мы этот список еще не формировали, то его еще не существует и, следовательно, правило также не срабатывает.
- Наконец доходим до правила 2, которое однозначно говорит маршрутизатору, что следует принять (Accept) и обработать по протоколу ICMP данный пакет. Маршрутизатор отвечает на ICMP-пакет соответствующим эхо-ответом. До четвертого правила пакет уже не добирается, т.к. процедура обработки фактически завершена.
Рассмотрим еще один случай. На этот раз к нам на маршрутизатор извне прилетел некий неизвестный UDP-пакет с данными. Как будет действовать маршрутизатор:
- Смотрим правило 0. Существующего Established или Related соединения у нас нет, поэтому правило не срабатывает.
- Правило 1 — смотрим в список разрешенных адресов allowed_to_router, но там пусто. Еще одно правило не сработало.
- Дошли до правила 2 — является ли пришедший пакет ICMP-пакетом. Нет, не является, так что правило не срабатывает.
- И вот мы дошли до конца цепочки INPUT, где нас поджидает «правило-вышибала”. Поскольку у правила chain=input action=drop нет условий для срабатывания, то оно по умолчанию срабатывает всегда и наш неизвестный UDP-пакет дропается и перестает существовать.
Надеемся, что столь подробный разбор логики немного прояснил как именно работает файервол в Mikrotik RouterOS, поэтому приступим к дальнейшей настройке. Сформируем список разрешенных адресов. Для этого вернемся в главное меню, нажав символ / и подтвердив нажатием клавиши Enter. Теперь перейдем в раздел консольного интерфейса Mikrotik – ip firewall и посмотрим какие адресные списки у нас существуют:
Как видим, список пока пустой. Добавим туда адреса из стандартной локальной подсети 192.168.88.0/24 за исключением 192.168.88.1 (адрес маршрутизатора). Эта подсеть обычно используется по умолчанию на устройствах Mikrotik и именно ее чаще всего используют для раздачи адресов в локальной сети. Выполним добавление:
Команда максимально проста для понимания мы говорим, что нам нужно добавить адреса 192.168.88.2-192.168.88.254 в список с именем allowed_to_router. Подразумевается то, что если списка с таким именем не существует, то при выполнении команды он будет создан. Проверим:
Теперь, когда файервол в цепочке INPUT дойдет до правила номер 1, то в случае поступления данных с IP-адресом отправителя из диапазона 192.168.88.2-192.168.88.254 — правило сработает и маршрутизатор будет знать, что данные следует принять. Этим мы будем пользоваться для обращений к маршрутизатору из локальной сети.
Разделяем и властвуем
Списки адресов — крайне полезная штука при настройке файервола. Тут важно следовать стандартам, разработанным такой крутой организацией, как IETF (Internet Engineering Task Force) — Инженерный совет Интернета. Это международное сообщество с конца 80-х годов занимается развитием протоколов и архитектуры интернета.
Результаты работы IEFT публикуются в виде RFC (Request for Comments) — информационных документов, содержащих в себе детальное описание спецификаций и стандартов. Этих документов уже создано несколько тысяч, все они представлены на английском языке. Один из них поможет нам корректно сформировать списки адресов, а именно RFC6890.
Наша задача при настройке файервола четко разделить адреса, относящиеся к локальному сегменту и адреса глобальной сети интернет. Именно их мы возьмем из RFC и пропишем в нашем маршрутизаторе списком с названием not_in_internet. В дальнейшем это поможет нам сформировать правила в которых будут абстракции «это адрес из интернета» и «это адрес не из интернета».
Поочередно выполняем команды, создавая и дополняя список not_in_internet, помимо всего прочего указывая в комментарии номер RFC, которым мы руководствовались:
Есть еще две важные подсети, которые тоже стоит добавить в этот список. Первая подсеть — это 224.0.0.0/4. Эта подсеть зарезервирована для технологии многоадресного вещания (мультикаст) и это зафиксировано в соответствующем RFC2780. Вторая подсеть специфична для переходного механизма 6to4, позволяющего передавать IPv6 трафик через IPv4 сети. Этот механизм реализован в подсети 192.88.99.0/24, что также зафиксировано в отдельном RFC3068.
Теперь, когда мы все сделали «по фен-шую», у нас есть список всех адресов, которые будут опознаваться как локальные, т.е. пришедшие не из интернета. Проверим:
Теперь, используя эти листы, создадим еще правила уже в цепочке FORWARD, которые защитят устройства в локальной сети от различных посягательств. Возвращаемся в раздел с правилами:
Первым правилом мы сделаем так, чтобы наш файервол не срабатывал, когда имеет дело с уже установленными соединениями, это лишь тратит ресурсы маршрутизатора и никоим образом не помогает в обеспечении безопасности:
Обрабатываем установленные соединения в цепочке Forward:
Отбрасываем «битые» соединения:
Отбрасываем пакеты, исходящие из локальной сети к частным IP-адресам и фиксируем срабатывание правила в логах:
Отбрасываем входящие пакеты, которые не подходят для NAT и фиксируем срабатывание:
Отбрасывать пакеты из сети интернет, пришедшие не с публичных IP-адресов и заносить информацию в лог:
Защита от атак перебором
Брутфорс-атаки давно стали повседневностью. Десятки тысяч ботов регулярно сканируют весь интернет в поисках открытых портов SSH и затем начинают весьма активно «стучаться» на внешний интерфейс и перебирать пароли в попытке захватить контроль над подключенным устройством. У тех, кто контролирует эти сети есть весьма обширные словари паролей, использующие как дефолтные реквизиты доступа большинства устройств.
Но даже если вы задали сложный пароль — это еще не гарантирует безопасности. Длительная атака перебором способна сломать этот барьер защиты, поэтому проще всего пресекать попытки злоумышленников сразу, как только замечен процесс перебора. Настройка правил firewall у устройств Mikrotik достаточно тривиальна:
Вначале создадим правило firewall по которому все входящие соединения с IP-адресов, находящихся в списке ssh_blacklist будут сбрасываться:
Теперь сформируем сам список ssh_blacklist. Любой имеет право на ошибку, поэтому если легитимный пользователь три раза ошибся во вводе пароля — это нормально. Так что позволим пользователю сделать 3 ошибки с интервалом в 1 минуту. Большее количество будет свидетельствовать о переборе паролей и IP-адрес атакующего будет попадать в черный список и включается блокировка на 10 дней.
Так что нам потребуется создать еще три списка IP-адресов. Первый назовем ssh_stage1. Как только создается новое соединение на порт SSH мы вносим IP-адрес источника в список. При этом задаем удаление через 1 минуту. Это гарантирует нам то, что если соединение прошло успешно — IP-адрес будет удален из списка.
Если даже пользователь ошибся, то ничего страшного, однако если он попробует в течение этой минуты еще раз подключиться, то его адрес мы закидываем во второй список ssh_stage2 из первого списка ssh_stage1.
Если пользователь ошибется второй раз, то закидываем IP-адрес источника из списка ssh_stage2 в список ssh_stage3.
Третья ошибочная попытка приводит к копированию IP из списка ssh_stage3 в список ssh_blacklist и все входящие соединения с этого IP будут заблокированы сроком на 10 дней.
Для разблокировки адреса будет достаточно его удалить из черного списка.
NAT: базовая настройка и проброс портов
Технология трансляции сетевых адресов (NAT — Network Address Translation) используется во многих случаях. Чаще всего с ней можно встретиться при организации широкополосного доступа к сети интернет. Смысл технологии в том, чтобы дать возможность выходить в сеть множеству устройств, используя всего лишь один внешний IP-адрес.
Способ 1. Когда выходной IP-адрес может меняться
Изначально Mikrotik ничего о нашем намерении использовать NAT не знает. Для начала укажем, что хотим все пакеты, пришедшие из локальной сети выводились во внешнюю сеть через общий IP-адрес:
где ether1 — интерфейс, смотрящий в интернет. Также можно задать не один выходной интерфейс, а сразу несколько, заранее сформировав список out-interface-list.
Этот способ наиболее простой и удобный для пользователей с динамическим IP-адресом.
Способ 2. Когда выходной IP-адрес статический и не меняется
Теперь еще один вариант организации NAT. Рассмотрим пример:
где XXX.XXX.XXX.XXX — статический IP-адрес, а ether1 — выходной интерфейс.
Теперь переходим к пробросу портов. Для примера предположим, что у нас в локальной сети 192.168.88.0/24 есть небольшой сервер по адресу 192.168.88.10 с поднятым SSH. Нам нужно подключаться к серверу удаленно, используя номер порта 1122. Для этого выполним проброс портов, созданием правила:
Почему мы взяли такой странный номер порта 1122? Все просто — чтобы затруднить злоумышленникам нахождение номера порта и последующего перебора реквизитов. Таким образом, мы создали правило, однозначно позволяющее маршрутизатору понять, что все TCP-пакеты, пришедшие на порт 1122 следует переадресовывать на локальный адрес 192.168.88.10 на порт 22.
Вместо заключения
Мы рассмотрели основные команды для выстраивания базовой защиты для устройств на базе RouterBoard, а также облачной версии Mikrotik CHR и взглянули на то, как можно парой команд настроить NAT. Разумеется, для каждого неиспользуемого сервиса можно закрыть доступ извне, исходя из используемых портов, протоколов и типа трафика.
Угроз безопасности с каждым днем становится все больше и каждая из них заслуживает внимания и адекватного ответа.
Читайте также: