Создание домашней сети на базе устройств MikroTik: Часть 6 — Firewall защита доступа

firewall-main Роутеры
Продолжение предыдущих статей по организации единой локальной сети.
 
Содержание цикла статей:
  1. Создание домашней сети на базе устройств MikroTik: Часть 1
  2. Создание домашней сети на базе устройств MikroTik: Часть 2 — Настройка hAP ac
  3. Создание домашней сети на базе устройств MikroTik: Часть 3 — Настройка RB750gr3 hEX
  4. Создание домашней сети на базе устройств MikroTik: Часть 4 — Создание OpenVPN туннеля
  5. Создание домашней сети на базе устройств MikroTik: Часть 5 — Создание EoIP туннеля
  6. Создание домашней сети на базе устройств MikroTik: Часть 6 — Firewall защита доступа (Вы тут)
  7. Создание домашней сети на базе устройств MikroTik: Часть 7 — Firewall правильное перенаправление портов в сети с двумя шлюзами
  8. Создание домашней сети на базе устройств MikroTik: Часть 8 — Установка и настройка MikroTik DUDE Network Monitor
Будьте внимательны, в этой статье рассматривается только Firewall Filter. Если Вы видите, что у Вас нет интернета после настройки, скорее всего вы не прошли предыдущие шаги настройки роутера. В них есть пункт Firewall NAT, где производится специальная настройка позволяющая устройствам в сети выходить в интернет.
Для тех кого интересует финальный результат и более лучшая защита, то рекомендую после прочтения данной статьи перейти к статье: MikroTik : RouterOS : Стучимся к себе домой. Firewall Filter PortKnocking
Если Вы хотите изучить MikroTik, то это можно реализовать с помощью специального онлайн-курса "Настройка оборудования MikroTik". В курсе изучаются все темы из официальной программы MTCNA, а автором курса является официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто даже не держал его в руках. В состав курса входят 162 видеоурока, 45 лабораторных работ и вопросы для самопроверки с конспектом. Кстати я получал сертификат MTCNA именно тут!

В прошлых частях мы с Вами настроили единую локальную сеть через EoIP туннель построенном поверх OpenVPN.

К каким результатам мы пришли:
У нас встает вопрос безопасности нашей локальной сети, ведь китайские боты не спят и постоянно сканируют доступное сетевое пространство на наличие дыр и уязвимостей.
Имея статический IP мы подвержены риску быть взломанными. Т.к. наш статический IP доступен в интернете, он может подвергаться различного рода «атакам из вне».
Поэтому нам нужно сделать так, чтобы только мы могли подключаться к нашим роутерам и другим сервисам в локальной сети.
В принципе жесткую защиту мы делать не будем. У нас ведь не корпоративная сеть, а домашняя. Данной статьей мы попробуем закрыть самые распространенные пробелы в защите нашего роутера и локальной сети в общем. Не будем допускать банальных ошибок.

Организацию удаленного подключения мы рассмотрим в Седьмой статье т.к. эта статья получилась достаточно большой по наполнению.
Ну что, поехали…

За все операции обработки трафика в сетевых устройствах отвечает так называемый «Межсетевой экран» (Eng — Firewall)
Именно он определяет куда отправлять тот или иной пакет, как обрабатывать соединения и многое, многое другое…
Чтобы охватить весь спектр работы Firewall-а не хватит не только одной статьи, но и 10 или 20 статей точно. Настолько велики его возможности и вариации применения.
Кстати это касается не только MikroTik RouterOS, а принципа фильтрации трафика в общем в операционных системах (даже на Windows)!

Официальные данные на MikroTik Wiki: IP/Firewall/Filter [ENG]

Давайте взглянем, где находится этот самый Межсетевой экран в наших устройствах(ведь RouterOS одинакова на всем оборудовании MikroTik):
Он находится по пути IP -> Firewall

ip-firewall
Путь до межсетевого экрана
firewall-filter-rules
Окно для ввода правил фильтрации

Кратко пробежимся по основным вкладкам Firewall:
1 — Filter Rules — тут основные разрешающие и блокирующие правила.
2 — NAT — тут формируются перенаправления трафика.
3 — Mangle — тут происходит маркировка соединений и пакетов, отлов определенного вида трафика для дальнейшей его обработки.
Остальные вкладки пока рассматривать не будем, они нам не пригодятся.
4 — Raw — тут можно правилами отловить паразитный трафик и тем самым снизить нагрузку на CPU. Полезно для смягчения DOS атак.
5 — Service Ports — Для некоторых сетевых протоколов требуется прямое двустороннее соединение между конечными точками. Это не всегда возможно, поскольку трансляция сетевых адресов широко используется для подключения клиентов к сети. Это подменю позволяет настроить «помощники отслеживания соединений» для вышеупомянутых протоколов. Эти «помощники» используются для обеспечения правильного обхода NAT.
6 — Connections — тут отображаются все текущие соединения проходящие через маршрутизатор.
7 — Address List — тут списки адресов брандмауэра позволяют пользователю создавать списки IP-адресов, сгруппированных под общим именем. Затем фильтры брандмауэра, Mangle и NAT могут использовать эти списки адресов для сопоставления пакетов с ними.
8 — Layer7 Protocols — тут можно создавать шаблоны для поиска в потоках ICMP / TCP / UDP. L7 собирает первые 10 пакетов соединения или первые 2KB соединения и ищет шаблон в собранных данных.

Часть терминов может показаться непонятной, но в этом нет ничего страшного, мы будем работать только с первым пунктом Filter Rules. Хотя в нем тоже, очень много вариантов создания правил.
Сразу нужно оговориться, что полной безопасности Вам никто не обеспечит и это важно понимать! Но боятся не стоит, мы ведь не популярная корпорация за которой ведется промышленный шпионаж, нам достаточно превентивных мер ))))

Конфигурация по умолчанию:

На MikroTik Wiki представлена базовая конфигурация в таком виде: Basic universal firewall script [ENG]

Вы можете использовать её или нет )
Я делаю несколько по своему, возможно что-то тут не идеально, и Вы обладая большим опытом подскажите мне в комментариях, как сделать лучше ))

 
 
1. Перейдем к созданию правил в Firewall Filter Rules

Отступление: А ты засейвился? (Кнопка Safe Mode)
Все правила добавленные в таблицу применяются последовательно, сверху вниз. Будьте осторожны не добавляйте сразу правило, блокирующее все что только можно. Вы можете потерять доступ к роутеру и тогда придется его сбрасывать и перенастраивать заново.
Я рекомендую использовать магическую кнопку Safe Mode для таких целей. Если эта кнопка нажата и Вас отключит от роутера, настройки вернутся к моменту нажатия на эту кнопку. Очень полезная вещь, особенно если Вы работаете удаленно.
safemodebutton
Magic Button =)

Правила добавляются по уже знакомой нам кнопке плюс…

newfirewallrule-add
Добавление правил

1.1. Перво наперво нам нужно разрешить уже установленные(Established) и связанные(Related) соединения и сбросить некорректные(Invalid) соединения для проходящих (маршрутизируемых) пакетов в цепочке Forward и предназначенных локальной системе в цепочке Input.
Так мы снизим нагрузку на маршрутизатор обработав эти данные сразу.
Зачем повторно обрабатывать эти соединения если они уже и так установлены или неизвестны. Экономим ресурсы процессора. Т.е. эти правила будут в самом начале нашей таблицы.

Добавление правил 1.1. через WinBox (Изображения)
firewall-filter-1.1-1
Правило 0
firewall-filter-accept
Правило 0
firewall-filter-1.1-2
Правило 1
firewall-filter-drop
Правило 1
firewall-filter-1.1-3
Правило 2
firewall-filter-accept
Правило 2
firewall-filter-1.1-4
Правило 3
firewall-filter-drop
Правило 3
Консольно:

/ip firewall filter
add action=accept chain=forward comment="1.1. Forward and Input Established and Related connections" connection-state=established,related
add action=drop chain=forward connection-state=invalid
add action=accept chain=input connection-state=established,related
add action=drop chain=input connection-state=invalid
Дополнительно: Защита локальной сети от атак из публичного интернета
Очень часто люди используют настройки по умолчанию на своих маршрутизаторах. Это также означает, что можно угадать, какой локальный адрес используется за маршрутизатором. Обычно это 192.168.88.0/24 для устройств, работающих на RouterOS. Это означает, что в общедоступной сети злоумышленник может создать простой маршрут, который говорит, что 192.168.88.0/24 находится за вашим общедоступным IP-адресом.
Таким образом злоумышленник может атаковать ваши локальные сетевые устройства.
Чтобы защитить вашу локальную подсеть от этих атак, можно использовать очень простое правило фильтра брандмауэра. Это правило отбрасывает все пакеты, которые предназначены для локальной сети, но не являются NAT

/ip firewall filter
add action=drop chain=forward connection-nat-state=!dstnat connection-state=new in-interface-list=Internet

 
 
1.2. Далее необходимо обеспечить защиту. Продолжим мы с Лимита входящих соединений.
Это даст нам некоторую защиту от DDoS атак.

Далее, большинство правил будут включать в себя параметр Списков интерфейсов In Interface List. Это замена для параметра In Interface.
Позволяет группировать интерфейсы и применять правила Firewall обращаясь сразу к нескольким интерфейсам.
Более подробно про данные списки можно почитать в отдельной статье: MikroTik RouterOS – Списки интерфейсов “Interface List”
Чтобы дальнейшие правила отработали корректно Вы должны внести WAN интерфейс в список Internet, а все локальные интерфейсы в список Local.
Сами списки также нужно создать. Имена списков Вы можете задавать свои не обязательно, как у меня.
Вся информация по тому, как это делать по ссылке выше в статье MikroTik RouterOS – Списки интерфейсов “Interface List”
Добавление правил 1.2. через WinBox (Изображения)
firewall-filter-1.2-1
Правило 4
firewall-filter-1.2-2
Правило 4
firewall-filter-1.2-3
Правило 4
firewall-filter-1.2-4
Правило 5
firewall-filter-1.2-5
Правило 5
firewall-filter-1.2-6
Правило 5
firewall-filter-1.2-7
Правило 5
Консольно:

/ip firewall filter
add action=add-src-to-address-list address-list=ddos-blacklist address-list-timeout=1d chain=input comment="1.2. DDoS Protect - Connection Limit" connection-limit=100,32 in-interface-list=Internet protocol=tcp
add action=tarpit chain=input connection-limit=3,32 protocol=tcp src-address-list=ddos-blacklist

 
 
1.3. Следом идет защита от SYN флуда.
Что это такое можно почитать тут: https://ru.wikipedia.org/wiki/SYN-флуд или в более профильных изданиях.
Защищать мы будем, как проходящий трафик, так и входящий трафик. Путем создания отдельной цепочки SYN-Protect

Добавление правил 1.3. через WinBox (Изображения)
firewall-filter-1.3-1
Правило 6
firewall-filter-1.3-2
Правило 6
firewall-filter-1.3-3
Правило 6
firewall-filter-1.3-4
Правило 7
firewall-filter-1.3-5
Правило 7
firewall-filter-1.3-6
Правило 7
firewall-filter-1.3-7
Правило 8
firewall-filter-1.3-8
Правило 8
firewall-filter-1.3-9
Правило 8
firewall-filter-1.3-10
Правило 8
firewall-filter-1.3-11
Правило 9
firewall-filter-1.3-12
Правило 9
firewall-filter-drop
Правило 9
Консольно:

/ip firewall filter
add action=jump chain=forward comment="1.3. DDoS Protect - SYN Flood" connection-state=new jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=jump chain=input connection-state=new in-interface-list=Internet jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=return chain=SYN-Protect connection-state=new limit=200,5:packet protocol=tcp tcp-flags=syn
add action=drop chain=SYN-Protect connection-state=new protocol=tcp tcp-flags=syn

 
 
1.4. Защита от сканеров портов (PSD — Port Scan Detection).
На счет данного правила есть разные мнения, кто-то считает, что оно не нужно, кто-то, что нужно.
Я же предпочитаю немного себя подстраховать. Тем более, что благодаря данному правилу Address Lists заполняется какими-то забугорными IP адресами )

Добавление правил 1.4. через WinBox (Изображения)
firewall-filter-1.4-1
Правило 10
firewall-filter-1.4-2
Правило 10
firewall-filter-drop
Правило 10
firewall-filter-1.4-3
Правило 11
firewall-filter-1.4-4
Правило 11
firewall-filter-1.4-5
Правило 11
Консольно:

/ip firewall filter
add action=drop chain=input comment="1.4. Protected - Ports Scanners" src-address-list="Port Scanners"
add action=add-src-to-address-list address-list="Port Scanners" address-list-timeout=none-dynamic chain=input in-interface-list=Internet protocol=tcp psd=21,3s,3,1

 
 
1.5. Защита WinBox порта от перебора.
Логика обработки тут следующая.
1. Когда мы подключаемся к роутеру на порт 8291, то мы имеет состояние соединения new, правило добавляет наш IP в список уровня 1
2. Если мы не авторизовались и отключились, а после снова пытаемся подключиться, то мы опять будем иметь состояние соединения new. При этом наш IP адрес уже будет в Списке 1
Соответственно наш IP попадет в список уровня 2 и т.д до тех пор пока нас не заблокирует Правило 13, и уже после этого Правило 12 не будет нам давать возможность новых подключений к роутеру по порту 8291.
3. А если мы авторизовались, то наше соединение перейдет из состояния new в состояние established и обработка соединения уже будет вестись самым верхним правилом 2, которое нам все разрешает.
По сути у злоумышленника может быть всего четыре возможности Авторизоваться у нас на роутере через порт WinBox

Добавление правил 1.5. через WinBox (Изображения)
firewall-filter-1.5-1
Правило 12
firewall-filter-1.5-2
Правило 12
firewall-filter-drop
Правило 12
firewall-filter-1.5-3
Правило 13
firewall-filter-1.5-4
Правило 13
firewall-filter-1.5-5
Правило 13
firewall-filter-1.5-6
Правило 14
firewall-filter-1.5-7
Правило 14
firewall-filter-1.5-8
Правило 14
firewall-filter-1.5-9
Правило 15
firewall-filter-1.5-10
Правило 15
firewall-filter-1.5-11
Правило 15
firewall-filter-1.5-12
Правило 16
firewall-filter-1.5-13
Правило 16
firewall-filter-1.5-14
Правило 17
firewall-filter-accept
Правило 17
Консольно:

/ip firewall filter
add action=drop chain=input comment="1.5. Protected - WinBox Access" src-address-list="Black List Winbox"
add action=add-src-to-address-list address-list="Black List Winbox" address-list-timeout=none-dynamic chain=input connection-state=new dst-port=8291 in-interface-list=Internet log=yes log-prefix="BLACK WINBOX" protocol=tcp src-address-list="Winbox Stage 3"
add action=add-src-to-address-list address-list="Winbox Stage 3" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp src-address-list="Winbox Stage 2"
add action=add-src-to-address-list address-list="Winbox Stage 2" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp src-address-list="Winbox Stage 1"
add action=add-src-to-address-list address-list="Winbox Stage 1" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp
add action=accept chain=input dst-port=8291 in-interface-list=Internet protocol=tcp

 
 
1.6. Защита OpenVPN порта от перебора.
Данная защита делается абсолютно аналогично пункту 1.5.
Единственным отличием будут названия OpenVPN вместо WinBox и входящий TCP порт 1194
Поэтому просто повторяем действия
Консольно:

/ip firewall filter
add action=drop chain=input comment="1.6. Protected - OpenVPN Connections" src-address-list="Black List OpenVPN"
add action=add-src-to-address-list address-list="Black List OpenVPN" address-list-timeout=none-dynamic chain=input connection-state=new dst-port=1194 in-interface-list=Internet log=yes log-prefix="BLACK OVPN" protocol=tcp src-address-list="OpenVPN Stage 3"
add action=add-src-to-address-list address-list="OpenVPN Stage 3" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp src-address-list="OpenVPN Stage 2"
add action=add-src-to-address-list address-list="OpenVPN Stage 2" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp src-address-list="OpenVPN Stage 1"
add action=add-src-to-address-list address-list="OpenVPN Stage 1" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp
add action=accept chain=input dst-port=1194 in-interface-list=Internet protocol=tcp

 
 
1.7. Разрешающее правило для прохождения любого трафика по VPN туннелям.

Добавление правил 1.7. через WinBox (Изображения)
firewall-filter-1.5-15
Правило 24
firewall-filter-accept
Правило 24
Консольно:

/ip firewall filter
add action=accept chain=input comment="1.7. Access OpenVPN Tunnel Data" in-interface-list=VPN

 
 
1.8. Разрешающее правило для прохождения только нормальных PING запросов.

Добавление правил 1.8. через WinBox (Изображения)
firewall-filter-1.8-1
Правило 25
firewall-filter-1.8-2
Правило 25
firewall-filter-accept
Правило 25
Консольно:

/ip firewall filter
add action=accept chain=input comment="1.8. Access Normal Ping" in-interface-list=Internet limit=50/5s,2:packet protocol=icmp

 
 
1.9. Запрещающее правило
Нормально закрытый Firewall должен обязательно обладать таким правилом. Иначе все бессмысленно.
Выше мы обрабатываем соединения и разрешаем только то, что нам необходимо. Все остальное блокируем.
Это намного правильней, чем Разрешить все и блокировать только нужное Вам. А всего, что нужно заблокировать Вы наверняка не знаете.

Добавление правил 1.9. через WinBox (Изображения)
firewall-filter-1.9-1
Правило 26
firewall-filter-drop
Правило 26
Консольно:

/ip firewall filter
add action=drop chain=input comment="1.9. Drop All Other" in-interface-list=Internet

 
 
2. Для ленивых
Если Вы дочитали до конца, значит у Вас пытливый ум и Вы хорошо представляете с чем столкнулись. Вы молодец.
Еще раз хотелось бы обозначить, что данная конфигурация не является идеальной. Я просто старался показать некоторые способы фильтрации трафика. Вам решать, использовать это у себя простым копипастом или подумать и сделать лучше! Но я уверен, что моё решение тоже не плохое =)

Все вышеизложенное в едином виде:

firewall-filter-all
 
Консольно:

/ip firewall filter
add action=accept chain=forward comment="1.1. Forward and Input Established and Related connections" connection-state=established,related
add action=drop chain=forward connection-state=invalid
add action=drop chain=forward connection-nat-state=!dstnat connection-state=new in-interface-list=Internet
add action=accept chain=input connection-state=established,related
add action=drop chain=input connection-state=invalid
add action=add-src-to-address-list address-list=ddos-blacklist address-list-timeout=1d chain=input comment="1.2. DDoS Protect - Connection Limit" connection-limit=100,32 in-interface-list=Internet protocol=tcp
add action=tarpit chain=input connection-limit=3,32 protocol=tcp src-address-list=ddos-blacklist
add action=jump chain=forward comment="1.3. DDoS Protect - SYN Flood" connection-state=new jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=jump chain=input connection-state=new in-interface-list=Internet jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=return chain=SYN-Protect connection-state=new limit=200,5:packet protocol=tcp tcp-flags=syn
add action=drop chain=SYN-Protect connection-state=new protocol=tcp tcp-flags=syn
add action=drop chain=input comment="1.4. Protected - Ports Scanners" src-address-list="Port Scanners"
add action=add-src-to-address-list address-list="Port Scanners" address-list-timeout=none-dynamic chain=input in-interface-list=Internet protocol=tcp psd=21,3s,3,1
add action=drop chain=input comment="1.5. Protected - WinBox Access" src-address-list="Black List Winbox"
add action=add-src-to-address-list address-list="Black List Winbox" address-list-timeout=none-dynamic chain=input connection-state=new dst-port=8291 in-interface-list=Internet log=yes log-prefix="BLACK WINBOX" protocol=tcp src-address-list="Winbox Stage 3"
add action=add-src-to-address-list address-list="Winbox Stage 3" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp src-address-list="Winbox Stage 2"
add action=add-src-to-address-list address-list="Winbox Stage 2" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp src-address-list="Winbox Stage 1"
add action=add-src-to-address-list address-list="Winbox Stage 1" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp
add action=accept chain=input dst-port=8291 in-interface-list=Internet protocol=tcp
add action=drop chain=input comment="1.6. Protected - OpenVPN Connections" src-address-list="Black List OpenVPN"
add action=add-src-to-address-list address-list="Black List OpenVPN" address-list-timeout=none-dynamic chain=input connection-state=new dst-port=1194 in-interface-list=Internet log=yes log-prefix="BLACK OVPN" protocol=tcp src-address-list="OpenVPN Stage 3"
add action=add-src-to-address-list address-list="OpenVPN Stage 3" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp src-address-list="OpenVPN Stage 2"
add action=add-src-to-address-list address-list="OpenVPN Stage 2" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp src-address-list="OpenVPN Stage 1"
add action=add-src-to-address-list address-list="OpenVPN Stage 1" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp
add action=accept chain=input dst-port=1194 in-interface-list=Internet protocol=tcp
add action=accept chain=input comment="1.7. Access OpenVPN Tunnel Data" in-interface-list=VPN
add action=accept chain=input comment="1.8. Access Normal Ping" in-interface-list=Internet limit=50/5s,2:packet protocol=icmp
add action=drop chain=input comment="1.9. Drop All Other" in-interface-list=Internet

Бонус:
Работая с Firewall на родительском hEx роутере, обнаружил большой объем заблокированного трафика.
Решил посмотреть, в чем дело, включил логирование в правилах и обнаружил интересную ситуацию.
Оказалось, что местный провайдер не закрыл широковещательный трафик службы имен NetBIOS Name Service — UDP порт 137 (Остальные порты и информация: https://ru.wikipedia.org/wiki/NetBIOS)
И какой-то «Сосед» воткнул интернет кабель в простой ПК с Windows, тем самым создав тот самый паразитный трафик. Такие запросы с одного ПК могут занимать около 30 кбит/сек на вашем WAN порту.
Думаю можно себе представить если таких ПК в сети будет 100-150. Написали провайдеру, а пока он латает свои дыры, добавил правило блокировки. Только не в Firewall Filter, а в Firewall Raw.
Данная таблица полезна для уменьшения нагрузки на CPU и позволяет блокировать трафик на этапе Prerouting-а
Вот это правило:

/ip firewall raw
add action=drop chain=prerouting dst-port=137,138,139 in-interface-list=Internet protocol=udp

Бонус 2:

Правила для роутера за серым IP провайдера
Для роутера за серым IP провайдера я оставил только такие правила. Даже не смотря на то, что IP серый, доверять сети провайдера ни в коем случае не стоит.

/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=established,related
add action=accept chain=forward comment="ALLOW - Established, Related and connections" connection-state=established,related
add action=accept chain=input connection-state=established,related
add action=drop chain=forward comment="DROP - Invalid connections" connection-state=invalid
add action=drop chain=input connection-state=invalid
add action=jump chain=input comment="DDoS - SYN flood protection" connection-state=new in-interface-list=Internet jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=return chain=SYN-Protect limit=200,5:packet tcp-flags=""
add action=add-src-to-address-list address-list=ddos-blacklist address-list-timeout=1w3d chain=SYN-Protect log-prefix="DDoS: SYN-Protect" tcp-flags=""
add action=jump chain=input comment="DDoS - Main protection" connection-state=new in-interface-list=Internet jump-target=DDoS-Protect
add action=return chain=DDoS-Protect dst-limit=15,15,src-address/10s
add action=add-src-to-address-list address-list=ddos-blacklist address-list-timeout=1w3d chain=DDoS-Protect log-prefix="DDoS: MAIN-Protect"
add action=drop chain=input comment="DROP - Block all other input/forward connections on the WAN" in-interface-list=Internet
add action=drop chain=forward in-interface-list=Internet
/ip firewall raw
add action=drop chain=prerouting comment="DDoS - Drop blacklist IP" in-interface-list=Internet src-address-list=ddos-blacklist

 
 
Благодарю Вас за Ваше время.
Организацию удаленного доступа я вынес в следующую статью:
Создание домашней сети на базе устройств MikroTik: Часть 7 — Firewall правильное перенаправление портов в сети с двумя шлюзами

Всего хорошего на просторах Интернета 😉

Список всех статей в хронологическом порядке: История статей

Поддержка блога
Если Вам не безразлична судьба блога или Вы просто хотите отблагодарить Автора за его труд, смело переходите на страницу Поддержки, там описана вся информация, по тому, как это сделать проще простого =)

UPD 11.10.2018:
Статья обновлена исходя из опыта эксплуатации и дальнейшего перехода на работу со Списками интерфейсов
Для понимания, что это такое, изучите статью MikroTik RouterOS – Списки интерфейсов “Interface List”

UPD 12.08.2019:
В начало статьи добавлена заметка. Ряд читателей почему-то думает, что эта статья это вся настройка Firewall и удивляется, что нет интернета 🙂
Будьте внимательней!

UPD 05.10.2019:
Для тех кого интересует финальный результат и более лучшая защита, то рекомендую после прочтения данной статьи перейти к статье: MikroTik : RouterOS : Стучимся к себе домой. Firewall Filter PortKnocking

UPD: 31.03.2020:
Добавлен «Бонус 2» с правилами для роутера за серым IP провайдера

Хочешь получать уведомления о выходе новых статей?
Loading
Если Вы хотите изучить MikroTik, то это можно реализовать с помощью специального онлайн-курса "Настройка оборудования MikroTik". В курсе изучаются все темы из официальной программы MTCNA, а автором курса является официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто даже не держал его в руках. В состав курса входят 162 видеоурока, 45 лабораторных работ и вопросы для самопроверки с конспектом. Кстати я получал сертификат MTCNA именно тут!
GregoryGost

Мир интересен, если вы достаточно любопытны!!!

Оцените автора
GREGORY GOST
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

  1. Богдан

    Спасибо за Ваш труд!

    Ответить
    1. GregoryGost автор

      Рад, что оказался полезным )

  2. Дмитрий

    Классный сайт, всё доступным языком, спасибо Вам за труд.

    Ответить
    1. GregoryGost автор

      Благодарю!
      Рад, что Вам понравилось.

  3. DMITRY

    Классно! В моем случае почему-то не работает приложение Miele@home на телефоне с Микротиком. Через это приложение можно управлять бытовой техникой. С другим более домашним Huawei роутером работает без проблем.
    Куда копать не понимаю … переадресация портов не помогает. Да и слишком широкий диапазон портов использует программа … Может подскажете можно-ли вынести за пределы NAT-a конкретный IP, типа DMZ зону сделать как в обычных роутерах? Или что-то более правильное можете посоветовать?

    Ответить
    1. GregoryGost автор

      Выносить внутренние IP наружу плохая затея, без обеспечения защиты на сервисе, который использует этот внутренний IP.
      Тут нужно проводить анализ запросов, которые шлет приложение. У меня с этим Firewall, за все время, не было никаких проблем ни с одним приложением для умного дома. Да и вообще ни с одним приложением, сервисом или сайтом.

    2. Дмитрий

      выносится обычно определённый порт, если пробросить все порты, то можно потерять внешний доступ к роутеру или другим устройствам локальной сети и это не безопасно в принципе

  4. Даниил

    А вот скажите правило DROP forward !LAN , он вообще должно быть просто у вас DROP input all есть , а forward нет )))

    Ответить
    1. GregoryGost автор

      В нем нет особого смысла т.к. в него ничего не будет попадать.
      У меня оно есть, оставил ради интереса, так вот оно всегда по нулям.

    2. GregoryGost автор

      Вспомнил для чего оно.
      DST-NAT срабатывает раньше Filter, соответственно drop на forward в filter будет работать если в filter не разрешить перенаправляемый порт.
      Что-то вроде дополнительной защиты, но если долго не пользоваться можно забыть и потом не понять, почему перенаправление портов не работает.

  5. Андрей

    Для меня как для новичка в этих вопросах статья оставила какие-то неоднозначные впечатления. С одной стороны автор вроде хорошо разбирается в вопросе, а в другом пишет что-то совершенно невнятное.
    Автор борется в загрузкой CPU и при этом в фильтр добавлены правила для портов 8291 и 1194 почему они не вынесены в отдельные цепочки?
    Правила для порта 1194 вообще непонятно какой там может быть перебор если подключение по сертификатам?
    Но больше всего удивил ответ Даниилу, что правила цепочки forward должны быть выше правил input цитата «…обработка идет сверху вниз.», этим автор вообще ставит в ступор как правила из цепочки input могут попасть в forward? В таблице правило forward должно быть первым для цепочки forward, при этом в таблице оно может быть и десятым после input это никак не влияет на скорость, лишь визуальное восприятие, и тем более не влияет на цепочку input «Чем быстрее будут обрабатываться эти правила тем эффективней и ниже нагрузка».

    Ответить
  6. Даниил

    Скажите а почему у вас в самом начале forward стоит выше чем input , у меня просто шаблон разорвался )))

    Ответить
    1. GregoryGost автор

      Т.к. после того, как соединение становится established или related, оно обрабатывается в цепочке forward, а не input.
      input это в основном новые подключения

      Соответственно основной трафик и нагрузка на CPU идут через forward.
      Эти правила ставим в самом начале т.к. обработка идет сверху вниз. Чем быстрее будут обрабатываться эти правила тем эффективней и ниже нагрузка.

      🙂

  7. DMITRY

    Классная статья! С помощью ее настроил свой MikroTik CCR1016-12G

    Ответить
    1. GregoryGost автор

      Рад, что помогла 🙂

  8. dmitry

    Автору безусловно лайк, подписка, почет и уважение.
    Возможно имеет смысл добавить правило 1.9.1, чтобы заблокированный сорс попадал в белый список если постучаться на определенный хитрый порт. Т.е. port knocking по сути, на тот случай если в бан попал не злоумышленник, а просто пользователь-растяпа.

    Ответить
  9. Boroda

    Так у нас (у Вас) в конфигурации как раз в Interface List и нет WAN (есть Local и Internet), он есть в Interface (наряду с LAN-Bridge, LAN1-Ethernet, LAN2-Eth… и т.д.).

    Т.е. in-interface-list=WAN это не правильно (при создании правила будет ошибка).

    Ответить
    1. GregoryGost автор

      Ах, вы об этом. Это да, спасибо!
      Заменил «WAN» на «Internet», чтобы не было разночтений с основными правилами

  10. Boroda

    В Бонусе 2 я так понимаю небольшая ошибка.

    Нужно либо
    in-interface-list=Internet
    либо
    in-interface=WAN

    Поправьте меня, если я не прав.

    Ответить
    1. GregoryGost автор

      Ошибки нет, если присмотреться, то как раз in-interface-list=WAN там и указывается

  11. Lensu

    Здравствуйте, Григорий.
    Если доступ к Winbox разрешен только с доверенных адресов, то группа правил 1.5. по сути не нужны будут?

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      В общем то да

  12. Lensu

    Здравствуйте, Григорий.
    В пункте 1.4. Защита от сканирования портов у Вас правило дропа раньше чем правило добавления адресов в адреслист. Почему так?

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Все потому, что правила обрабатываются по списку сверху вниз, зачем уже добавленный в дроп-лист адрес прогонять еще раз по тем же правилам?
      А по хорошему, все правила дропа лучше всего вывести в RAW таблицу Firewall т.к. он отрабатывает еще раньше чем правила в Firewall Filter

  13. Александр

    Вопрос по правилу что отбрасывает все пакеты, которые предназначены для локальной сети, но не являются NAT.
    » /ip firewall filter
    add action=drop chain=forward connection-nat-state=!dstnat connection-state=new in-interface-list=Internet »
    В чём суть фильтрации по состоянию соединения new, в этом правиле ? Если его использовать без connection-state=new, на чём это отразится ?

    Ответить
    1. GregoryGost автор

      connection-state=new отрабатывает только на новом соединении т.е. все дальнейшие пакеты соединений established,related не будут проверяться. Соответственно снижается нагрузка Firewall на CPU.
      Вы конечно можете сказать, зачем нам это в не нагруженных сетях вроде домашней эксплуатации. Но мое мнение таково, что лучше делать сразу корректно. Будет меньше ошибок при работе с более нагруженными сетями.

  14. Евгений

    Есть ли смысл сделать правило чтобы при попытке залогинится под несуществующем логином ip попадал в бан?

    Переборщики часто используют стандартный список пользователь(admin, user, root, и т.д.)

    Ответить
    1. GregoryGost автор

      Есть смысл сделать хорошую защиту и разрешать доступ только доверенным IP, как по мне 😉
      Например использовать Port-knocking или ICMP-knocking MikroTik : RouterOS : Стучимся к себе домой. Firewall Filter PortKnocking

  15. Сергей

    а по такому вопросу не подскажите?
    утечка входящего трафика на wan (ether1), torch показывает входящий трафик для «соседних» ip (ip динамика), куда копать?

    Ответить
    1. GregoryGost автор

      Сначала посмотреть, что это за трафик, по каким портам TCP/UDP он «спамит»
      У меня так у брата в сети провайдера не закрыт Netbios на уровне коммутатора, и идет постоянный спам на этих портах. Пришлось резать, через Firewall в RAW таблице.
      Но паразитный трафик все равно будет, просто роутер будет менее нагружен, т.к. пакеты не будут проходить весь Firewall. Тут уже придется бороться другими методами 😉

  16. Павел

    DDoS Protect отлавливает DNS адреса гугла 8.8.8.8, 8.8.4.4 и вносит их в список. Происходит это не сказать что часто, но происходит. В этот момент интернет само собой отваливается. Как то можно запретить вносить DNS адреса в список? И почему он их отлавливает интересно?

    Ответить
    1. GregoryGost автор

      Павел, можете ослабить защиту, но все равно это очень странно, что у вас DNS адреса попадают в блокировку.
      Я пользуюсь IP адресами провайдера на роутере и у меня с этим все нормально.

  17. Паша

    Здравствуйте!

    Скажите пожалуйста, а как сделать чтобы при включённом в конце drop all правиле работали торренты? Например Transmission открывает рандомный порт через UPnP, но, видимо, этот порт попадёт в drop all, да?

    Ответить
    1. GregoryGost автор

      Советую отключить UPnP совсем, не нужен он в современных реалиях.
      Transmission Прекрасно работает из под NAT без открывания портов.

  18. Дмитрий

    Добрый день!
    Один момент не пойму. Для чего создаете 1.2 и следом 1.3. По-моему достаточно оставить правило для SYN-flood — ведь он и так будет отбивать избыточные ACK запросы.

    Ответить
    1. GregoryGost автор

      Дмитрий, не совсем так.
      Запросы в сети и соединения не ограничеваются только ACK запросами и TCP соединениями.
      Для примера:
      Цепочка Syn flood protect не отработала, зато отработала цепочка Main
      Цепочка Syn flood protect не отработала, зато отработала цепочка Main

  19. Денис

    Добрый день!
    Поставил на защиту от SYN флуда Ваши правила, только вместо action=drop добавляю ip в список, который дропаю в RAW. Но в этот список постоянно попадает мой локальный ip. Пробовал поднимать лимит до 1000 пакетов и ничего не изменяется. Почему так происходит?

    Ответить
    1. GregoryGost автор

      Это значит, что с вашего ПК идут пакеты похожие на Syn flood
      Отрабатывает это правило кидающее локальный трафик на проверку из цепочки forward в custom цепочку SYN-Protect

      add action=jump chain=forward comment="1.3. DDoS Protect - SYN Flood" connection-state=new jump-target=SYN-Protect protocol=tcp tcp-flags=syn

      Можете убрать правило выше и оставить только это для входящих из вне соединений

      add action=jump chain=input connection-state=new in-interface-list=Internet jump-target=SYN-Protect protocol=tcp tcp-flags=syn

      Можете также посмотреть последнюю версию правил Firewall в статье MikroTik : RouterOS : Стучимся к себе домой. Firewall Filter PortKnocking