Найти тему
myServer 2.0

Основы Firewall Mikrotik

Оглавление

Предисловие

Прежде чем настраивать firewall, не только в Mikrotik, следует определить задачи которые он должен выполнять. К тому же надо осознавать, что firewall нужен не всегда. Основная функция firewall это управление пакетами, с помощью этого мы можем защитить внутреннюю сеть от посягательств из вне, или можем настроить определенный доступ из вне к сети. С настройкой firewall нужно быть внимательным и аккуратным, одно не правильное действие, и вы сами себе заблокируете доступ к сети. Кстати на такой случай у Mikrotik есть функция Safe Mode, которая откатывает изменения в случае разрыва соединения с роутером

-2

В консоли его можно включить комбинацией клавиш CTRL + X

Основные принципы Firewall

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

/ip firewall filter
move 9 8

Правила перебираются сверху вниз. Если пакет нашел свое правило, то следующие правила не выполняются. Из этого следует, что первые правила должны отсеивать пакеты для следующих правил. Значит должны охватывать большой диапазон пакетов. Например первыми правилами должны быть разрешающие для establish пакетов. Это уже установленные соединения.

Цепочки правил

Если кто то работал с iptables в Linux, то для них будет все знакомо. Рассмотрим основные цепочки:

  • INPUT – пакеты отправленные на сам роутер, DNS запросы, ssh подключения к роутеру и т.д.
  • OUTPUT – пакеты отправленные с роутера, запросы роутера в сеть.
  • FORWARD – пакеты проходящие через роутер, адресованные в сеть, практически любой интернет трафик
  • PREROUTING – цепочка первичной обработки пакетов
  • POSTROUTING – цепочка окончательной обработки пакетов

Таблицы

Цепочки правил организованны в таблицах

  • FILTER – основная таблица, используется по умолчанию если нет указаний другой таблицы
  • NAT – эта таблица перенаправляет новые пакеты
  • MANGLE – маркирует пакеты, может использовать цепочку postrouting, очень удобно менять TTL
  • RAW – Здесь можно отлавливать паразитный трафик и маркировать его для дальнейших действий, использует цепочку prerouting

Состояния

У пакетов есть несколько состояний, которыми можно пользоваться для создания правил

  • NEW – новый пакет открывающий сеанс
  • ESTABLISHED – пакет являющийся частью установленного сеанса
  • RELATED – новый пакет создающий новый сеанс, но связан с установленным сеансом
  • INVALID – все остальные пакеты

Простая настройка Firewall

Для удобства, я напишу команды для консоли. Если кто то из принципа не любит консоль, он с легкостью сможет найти эти пункты в Winbox. В командах мы отметим внутреннюю сеть как LAN, а внешнюю WAN. В данном случае LAN это мост, в котором все локальные интерфейсы, в том числе беспроводные

Правило разрешает входящие (input) имеющие статус существующего (establish) и нового связанного с открытым (related) сеанса

/ip firewall filter
add action=accept chain=input comment="accept establish & related" connection-state=established,related

Это правило запрещает входящие неизвестные пакеты

add action=drop chain=input comment="drop invalid" connection-state=invalid

Здесь мы разрешаем входящий ICMP трафик, без этого правила нельзя пинговать роутер

add action=accept chain=input comment="accept ICMP" protocol=icmp

Затем запрещаем входящий трафик не из внутренней сети (!LAN)

add action=drop chain=input comment="drop all not from lan" in-interface=!LAN

Правило разрешает проходящий трафик established и related пакетов

add action=accept chain=forward comment="accept established,related" connection-state=established,related

Правило запрещающий остальной проходящий трафик

add action=drop chain=forward comment="drop invalid" connection-state=invalid

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

add action=drop chain=forward comment="drop all from WAN to LAN" connection-nat-state=!dstnat connection-state=new in-interface=WAN

Правило разрешающее TCP трафик из внутренней сети по 80 и 443 порту, для пользования http и https протоколами, т.е. серфинга интернета

add action=accept chain=forward comment="accept http & https from LAN" dst-port=80,443 in-interface=LAN out-interface=WAN protocol=tcp

Это правило дополняет предыдущее, потому как мы только разрешили трафик, но при серфинге еще осуществляются DNS запросы, вот их мы и разрешим

add action=accept chain=forward comment="accept dns from LAN" dst-port=53 in-interface=LAN out-interface=WAN protocol=udp

Ну и наконец запрещаем остальной трафик из внутренней сети наружу

add action=drop chain=forward comment="drop all from LAN to WAN" in-interface=LAN out-interface=WAN

По умолчанию в Mikrotik firewall имеет открытый тип, это значит, что то что явно не запрещено, разрешено. Вышеописанный пример настройки не самый лучший, даже для дома. Я описал правила firewall так, что бы проще было разобраться в основах. Ниже приведу полный листинг указанных правил

/ip firewall filter
add action=accept chain=input comment="accept establish & related" connection-state=established,related
add action=drop chain=input comment="drop invalid" connection-state=invalid
add action=accept chain=input comment="accept ICMP" protocol=icmp
add action=drop chain=input comment="drop all not from lan" in-interface=!LAN
add action=accept chain=forward comment="accept established,related" connection-state=established,related
add action=drop chain=forward comment="drop invalid" connection-state=invalid
add action=drop chain=forward comment="drop all from WAN to LAN" connection-nat-state=!dstnat connection-state=new in-interface=WAN
add action=accept chain=forward comment="accept http & https from LAN" dst-port=80,443 in-interface=LAN out-interface=WAN protocol=tcp
add action=accept chain=forward comment="accept dns from LAN" dst-port=53 in-interface=LAN out-interface=WAN protocol=udp
add action=drop chain=forward comment="drop all from LAN to WAN" in-interface=LAN out-interface=WAN

NAT

В завершении хочу привести пример нескольких правил в таблице NAT. Здесь происходит трансляция пакетов. Рассмотрим маскарадинг и проброс портов. Если у нашего WAN порта несколько адресов, то маскарадинг можно сделать применив src-nat и указав адрес

/ip firewall nat
add action=src-nat chain=srcnat out-interface=WAN to-addresses=188.162.228.213

Если же адрес один, то можно просто использовать masquerade

add action=masquerade chain=srcnat out-interface=WAN

Проброс портов осуществляется действием dst-nat. Очень удобно делать подмену порта, допустим в случаях когда у меня несколько сервисов внутри сети на одинаковых портах.

add action=dst-nat chain=dstnat dst-port=4212 in-interface=WAN protocol=tcp to-addresses=192.168.1.16 to-ports=22

В дальнейшем я буду добавлять статьи примерами настройки Mikrotik, для тех или иных задач.

Все статьи можно посмотреть на сайте или на Zen Yandex