Blog of Khlebalin Dmitriy

(Дорогу осилит идущий…)

Firewall Mikrotik.

Наш проект по интеграции Cisco и Mikrotik несколько забуксовал: пока не удается построить туннели GRE_IPSEC из-за NAT, но думаю это дело времени. Тем не менее мое ежедневное изучение Mikrotik продолжается.

Перед тем, как приступить к настройке Firewall, рекомендую заслушать вебинар Романа по теме: https://www.youtube.com/watch?v=3ESRncrnCM4

Первичная настройка Mikrotik готова. И уже есть несколько ранее настроенных правил Firewall.

Но однозначно фаерволу стоит уделить более пристальное внимание, сегодня о нем.

Firewall на Mikrotik состоит из следующих составляющих: это цепочки (chain) и действия в этих цепочках (Action), а также различные фильтры к трафику который обрабатывается в цепочках.

Firewall Chain.

Input – цепочка для обработки пакетов поступающих на маршрутизатор, имеющих в качестве адреса назначение ip  самого маршрутизатора.

Forward – в этой цепочки обрабатываются пакеты проходящие через маршрутизатор

Output – цепочка для обработки пакетов созданных маршрутизатором, например, когда мы с маршрутизатора пингуем или подключаемся куда-либо.

Из описания понятно, что для защиты маршрутизатора нужно использовать цепочку input. А для обработки трафика от пользователей и к пользователям использовать chain forward. Использование Output, как правило Output всегда открыт. Но если необходимо трафик отсылать именно на определенный адрес, то можно настроить какое-нибудь правило на эту тему.

Firewall Action.

В цепочках можно осуществлять следующие действия

Параметр Действие
Accept Разрешить
add-dst-to-address-list Добавить ip назначение в список адресов указанный в Address List
add-src-to-address-list Добавить ip источника  в список адресов указанный в Address List
Drop запретить
fasttrack-connection Обрабатывать пакеты включив FastTrack т.е пакеты будут проходить по самому быстрому маршруту, минуя остальные правила firewall и обработку в очередях
Jump Прыжок, переход на другую цепочку заданную в Jump target
log Запись в лог
passthrough Перейти к следующему правилу не делая никаких действий(полезно для сбора статистики)
Reject Отбить пакет с причиной указанной в Reject with
Return Вернуть пакет в цепочку из который он пришел
tarpit захватывает и поддерживает TCP-соединения (отвечает с SYN / ACK на входящий пакет TCP SYN)

Фильтрация в firewall.

Фильтрация пакетов, которые могут попасть в цепочки может осуществляться по:

Src.Address – адрес источника

Dst.Address – адрес назначения

Protocol – Протокол(TCP, UDP и т.д)

Src.Port – порт источника

Dst.Port –порт назначения

In.Interface –входящий интерфейс

Out.Interface – исходящий интерфейс

Packet.Mark – метка  пакета

Connection.Mark –метка  соединения

Routing Mark – метка  маршрута

Roting table — адрес получателя которых разрешен в конкретной таблице маршрутизации

Connection Type – тип соединения

Connection State — состояние соединения (установлено, новое и т.д)

Connection NAT State – цепочка NAT (srcnat, dstnat)

Итак, сначала создадим пару разрешающих правил, разрешим хождение трафика по установленным соединениям:

Так как это тестовая среда, я разрешил подключение со своего компа для управления (это можно пропустить):

Разрешу подключение из внутренней сетки подключаться к роутеру по следующим портам:

Снаружи ICMP на внешнем интерфейсе WAN надо бы запретить (drop), но у меня тестовый стенд поэтому он принудительно разрешен.

Также разрешим подключение снаружи по паре портов, но именно с определенного адреса, он произвольный, просто для примера (это важно, безопасность превыше всего):

Теперь можно защитить наш роутер.

Создам лист allow_ip добавлю туда нашу внутреннюю сеть и интерфейс управления:

 

Добавим запрещающее правило: Запретим весь входящий трафик кроме тех интерфейсов, что находятся в листе allow_ip (об этом нам говорит восклицательный знак в правиле).

Также запретим весь трафик снаружи в внутреннюю сеть:

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

Или можно не обращать внимание на верхние два правила, а сделать по-другому.

Сначала разрешаем входящие соединения из листа allow_ip:

И трафик из внутренней сети:

А далее делаем два запрещающих правила, где все дропим:

Можно еще запретить доступ с определенного компа в интернет: создам адрес лист block_ip

Создадим правило:

ВАЖНЫЙ МОМЕНТ: ЭТО ЗАПРЕЩАЮЩЕЕ ПРАВИЛО ДОЛЖНО БЫТЬ ПОДНЯТО ВЫШЕ РАНЕЕ СОЗДАННОГО РАЗРЕШЕННОГО, ИНАЧЕ ДОСТУП БУДЕТ ВСЕ РАВНО.

Проверим,  видим что сначала ответы были неправильными, теперь стали правильными:

Сразу настрою еще несколько правил для туннелей:

В итоге получился вот такой набор правил:

Безусловно это не все правила, со временем они будут только расти, но нужные мне в данный момент настроены.

Продолжение следует…

Всем хорошей работы!!!

16.07.2019 Posted by | Network and Wi-fi: cisco, mikrotik, huawei, tp-link, d-link, zyxel и другое... | 1 комментарий