Правила брэндмауэра для обеспечения внешней безопасности сети с помощью маршрутизатора Mikrotik (Router OS)

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Нашел в Инете случайно относительно свеженькую (годичной давности) публикацию с одноименным названием (как в топике).

Полный текст по ссылке: https://www.ionline.by/hardware/mikroti ... 5-04-2018/

Автор в статье приводит следующий набор правил дополнительных к стандартному для /ip firewall filter для "повышения безопасности" :
 
/ip firewall filter
add chain=output action=accept protocol=tcp content="530 Login incorrect" dst-limit=1/1m,9,dst-address/1m disabled=no comment="FTP Brutforce"
add chain=output action=add-dst-to-address-list protocol=tcp content="530 Login incorrect" address-list="Blocked IP's" address-list-timeout=3h comment="FTP Brutforce"
add chain=input protocol=tcp psd=21,3s,3,1 action=add-src-to-address-list address-list="Blocked IP's" address-list-timeout=2w comment="BAN port scaners" disabled=no
add chain=input protocol=tcp tcp-flags=fin,!syn,!rst,!psh,!ack,!urg action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w comment="NMAP FIN Stealth scan"
add chain=input protocol=tcp tcp-flags=fin,syn action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w comment="SYN/FIN scan"
add chain=input protocol=tcp tcp-flags=syn,rst action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w comment="SYN/RST scan"
add chain=input protocol=tcp tcp-flags=fin,psh,urg,!syn,!rst,!ack action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w comment="FIN/PSH/URG scan"
add chain=input protocol=tcp tcp-flags=fin,syn,rst,psh,ack,urg action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w comment="ALL/ALL scan"
add chain=input protocol=tcp tcp-flags=!fin,!syn,!rst,!psh,!ack,!urg action=add-src-to-address-list address-list="port scanners" address-list-timeout=2w comment="NMAP NULL scan"
add chain=forward src-address=0.0.0.0/8 action=drop comment="DROP BOGONS"
add chain=forward dst-address=0.0.0.0/8 action=drop comment="DROP BOGONS"
add chain=forward src-address=127.0.0.0/8 action=drop comment="DROP BOGONS"
add chain=forward dst-address=127.0.0.0/8 action=drop comment="DROP BOGONS"
add chain=forward src-address=224.0.0.0/3 action=drop comment="DROP BOGONS"
add chain=forward dst-address=224.0.0.0/3 action=drop comment="DROP BOGONS"
add chain=forward protocol=tcp action=jump jump-target=tcp comment="DROP BOGONS"
add chain=forward protocol=udp action=jump jump-target=udp comment="DROP BOGONS"
add chain=forward protocol=icmp action=jump jump-target=icmp comment="DROP BOGONS"
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
add chain=tcp protocol=tcp dst-port=111 action=drop comment="deny RPC portmapper"
add chain=tcp protocol=tcp dst-port=135 action=drop comment="deny RPC portmapper"
add chain=tcp protocol=tcp dst-port=137-139 action=drop comment="deny NBT"
add chain=tcp protocol=tcp dst-port=445 action=drop comment="deny cifs"
add chain=tcp protocol=tcp dst-port=2049 action=drop comment="deny NFS"
add chain=tcp protocol=tcp dst-port=12345-12346 action=drop comment="deny NetBus"
add chain=tcp protocol=tcp dst-port=20034 action=drop comment="deny NetBus"
add chain=tcp protocol=tcp dst-port=3133 action=drop comment="deny BackOriffice"
add chain=tcp protocol=tcp dst-port=67-68 action=drop comment="deny DHCP"
add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
add chain=udp protocol=udp dst-port=111 action=drop comment="deny PRC portmapper"
add chain=udp protocol=udp dst-port=135 action=drop comment="deny PRC portmapper"
add chain=udp protocol=udp dst-port=137-139 action=drop comment="deny NBT"
add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"
add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"
add chain=icmp protocol=icmp icmp-options=3:0 action=accept comment="allow established connections"
add chain=icmp protocol=icmp icmp-options=3:1 action=accept comment="allow already established connections"
add chain=icmp protocol=icmp icmp-options=4:0 action=accept comment="allow source quench"
add chain=icmp protocol=icmp icmp-options=8:0 action=accept comment="allow echo request"
add chain=icmp protocol=icmp icmp-options=11:0 action=accept comment="allow time exceed"
add chain=icmp protocol=icmp icmp-options=12:0 action=accept comment="allow parameter bad"
add chain=icmp action=drop comment="deny all other types"
add chain=icmp protocol=icmp icmp-options=0:0-255 action=accept comment="Ping Flood Limited" disabled=no limit=5,5:packet
add chain=icmp protocol=icmp icmp-options=3:3 limit=5,5:packet action=accept comment="Ping Flood Limited" disabled=no
add chain=icmp protocol=icmp icmp-options=3:4 limit=5,5:packet action=accept comment="Ping Flood Limited" disabled=no
add chain=icmp protocol=icmp icmp-options=8:0-255 limit=5,5:packet action=accept comment="Ping Flood Limited" disabled=no
add chain=icmp protocol=icmp icmp-options=11:0-255 limit=5,5:packet action=accept comment="Ping Flood Limited" disabled=no
add chain=icmp protocol=icmp action=drop comment="Ping Flood Limited" disabled=no
add chain= forward p2p= all-p2p action= accept comment= "P2P traffic" disabled= no
add chain=input action=drop comment="All other drop"
add chain=forward action=drop comment="All other drop"
Понятно, что темы такие обсуждались многократно и каждый сам волен использовать свой набор "дополнительных" правил. Но всё, же интересно, мнение гуру Микротик по поводу данного "набора" - нормально или паранойяльный перебор ?


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

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

Код: Выделить всё

add chain=forward src-address=0.0.0.0/8 action=drop comment="DROP BOGONS"
add chain=forward dst-address=0.0.0.0/8 action=drop comment="DROP BOGONS"
add chain=forward src-address=127.0.0.0/8 action=drop comment="DROP BOGONS"
add chain=forward dst-address=127.0.0.0/8 action=drop comment="DROP BOGONS"
add chain=forward src-address=224.0.0.0/3 action=drop comment="DROP BOGONS"
add chain=forward dst-address=224.0.0.0/3 action=drop comment="DROP BOGONS"
Замечательные строки, блокирующие в цепочки форвард ужасные богон адреса. Только вот есть одно но, если у нас хотя бы 2 подсети, то без конкретики, как в этих правилах, мы блокируем межсетевой трафик, он как раз подпадает под цепочку форвард. Точно так же с тоннелями, эти правила парализуют работу сети между железками, а возможно даже не дадут корректно подниматься тоннелям.
Т.е. на выходе, в этом чудесном наборе еще нужно очень хорошо поработать самому, а это заставит нас понять всю суть этой тяжелой конструкции, да щее и доработать ее.
Дело каждого, как себя защитить, тут бывали параноики и похлеще, закрывали вообще все что можно, а потом делали ошибку в конфиге и им приходилось начинать все сначала, т.к. попасть на устройство они уже не могли, настолько хорошо они защитили устройство)
Лично я пользуюсь дефолтным набором, с изменениями касающимися топологии той сети где стоит железка и отказом от фастрека, если конечно железка позволяет от него отказаться.


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Спасибо !

1. Насчет богон-сетей понятно.

2. Не могли бы Вы объяснить подробнее почему предпочитаете не пользоваться фасттреком ? Сложно потом обходить маркировками то, что не должно через него идти ? Простите, что в этой теме спрашиваю ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Erik_U
Сообщения: 1754
Зарегистрирован: 09 июл 2014, 12:33

KARaS'b писал(а): 07 мар 2019, 13:54 Замечательные строки, блокирующие в цепочки форвард ужасные богон адреса. Только вот есть одно но, если у нас хотя бы 2 подсети, то без конкретики, как в этих правилах, мы блокируем межсетевой трафик, он как раз подпадает под цепочку форвард. Точно так же с тоннелями, эти правила парализуют работу сети между железками, а возможно даже не дадут корректно подниматься тоннелям.
Свои посдети - в адрес лист, и его делать исключением в некоторых запрещающих правилах.

А вообще по теме.
Принцип же простой.
Вы же знаете, что вы защищаете? И какой трафик откуда и куда должен ходить?

А дальше 3 группы правил. Для IN, для OUT, и для FORWARD.
IN - пакеты, которые входят на микротик с любой стороны, и предназначены для микротика. Т.е. именно микротик является адресатом этих пакетов. Разрешаем то, что точно должно работать. Потом запрещаем для конкретных хостов, если есть. Потом запрещаем для подсетей с исключениями, потом запрещаем глобальненько с исключениями, потом запрещаем, что осталось.

OUT - пакеты, которые выходят из микротика в любую сторону. Источником (автором) пакетов является микротик. Это именно он начинает данные взаимодействия. Схема та же. Разрешаем то, что точно должно работать. Потом запрещаем для конкретных хостов, если есть. Потом запрещаем для подсетей с исключениями, потом запрещаем глобальненько с исключениями, потом запрещаем, что осталось.

FORWARD - пакеты, которые проходят через микротик транзитом. С любой стороны. С любого входа на любой выход. И тут схема та же.
Разрешаем то, что точно должно работать. Потом запрещаем для конкретных хостов, если есть. Потом запрещаем для подсетей с исключениями, потом запрещаем глобальненько с исключениями, потом запрещаем, что осталось.
В этой группе есть 2 типа фильтров - по направлениям трафика. 1 - снаружи в ваше сеть. 2 - из вашей сети наружу. И работает так. Если запрос разрешен, то и ответ на этот запрос тоже разрешен. Например, если в направлении из вашей сети наружу запрещено все, кроме порта 80, а снаружи в вашу сеть запрещено все, то http запрос по 80 порту наружу уйдет, и ответ на этот запрос будет доставлен отправителю (при наличии правила фасттрек).

Почему такая схема. Это принцип наложения масок. Двигаемся всегда от частного к общему. Чем большего диапазоне касается правило, тем ниже оно должно располагаться в списке.
Если есть правила, диапазоны которых пересекаются, логика порушится. Например, нам нужно для подсетей 1 и 3 запретить порты 100 - 600 с исключением списка 1.
А подсетям 2 и 3 запретить порты 200-400 с исключением списка 2.
Списки 1 и 2 в 3 подсети разные. Если делать как написано - запрещающими правилами с исключениями, часть пакетов сети 3 списка 2 отбросится фильтром 1, и исключение фильтра 2 для них не сработают.
Чтобы все работало, нужно сделать несколько фильтров для пересекающейся в правилах подсети. Например,
одно разрешающее для портов 200-400 для списка 2, второе запрещающее правило для потров 100-600 с исключением 1.

И поскольку это все очень индивидуально, пытаться делать "универсальные правила" бессмысленно. Они в месте, отличные от места рождения могут правильно заработать только случайно.
Чтобы быть одновременно уверенным и в безопасности и работоспособности, придется разбираться самому с логикой работы фильтров от простого к сложному. Или кого нибудь нанять.
Чужие правила можно копировать только полностью вместе с чужой конфигурацией.
+ возможностей с избытком. И одну и ту же задачу можно решить разными наборами фильтров.


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Спрошу у ещё одного - что вы конкретно боитесь в цепочке output? С какой целью там вообще что либо запрещать?
Про остальное понятно, паранойя, она такая паранойя... Хотя кому вы там нужны со своими фотками и историей в браузере. Или у вас на домашний комп бэкапятся сервера с базами агентуры ЦРУ и ФСБ?


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Erik_U
Сообщения: 1754
Зарегистрирован: 09 июл 2014, 12:33

У меня нет ни одного правила OUT.

По моему, они нужны в комплекте с веб-прокси.
Или для ограничение ореола динамической маршрутизации.

Фильтр - это не только ИБ.


seregaelcin
Сообщения: 176
Зарегистрирован: 27 фев 2016, 17:12

Все гениальное просто, уложился в 8 правил

add action=accept chain=input protocol=icmp
add action=accept chain=input connection-state=established in-interface=WAN
add action=accept chain=input connection-state=related in-interface=WAN
add action=drop chain=input in-interface=WAN
add action=jump chain=forward in-interface=WAN jump-target=customer
add action=accept chain=customer connection-state=established
add action=accept chain=customer connection-state=related
add action=drop chain=customer


Обладатель Mikrotik RB2011UAS-2HnD-IN
Erik_U
Сообщения: 1754
Зарегистрирован: 09 июл 2014, 12:33

Erik_U писал(а): 08 мар 2019, 18:12 У меня нет ни одного правила OUT.

По моему, они нужны в комплекте с веб-прокси.
Или для ограничение ореола динамической маршрутизации.

Фильтр - это не только ИБ.
Уже есть правила OUT.

Настроил OSPF, включив в настройку интерфейсы роутеров по-умолчанию. И чтобы OSPF не спамился в сторону операторов, поставил фильтры на дроп исходящих ospf пакетов. Счетчик неуклонно растет.


Erik_U
Сообщения: 1754
Зарегистрирован: 09 июл 2014, 12:33

seregaelcin писал(а): 20 мар 2019, 08:43 Все гениальное просто, уложился в 8 правил

add action=accept chain=input protocol=icmp
add action=accept chain=input connection-state=established in-interface=WAN
add action=accept chain=input connection-state=related in-interface=WAN
add action=drop chain=input in-interface=WAN
add action=jump chain=forward in-interface=WAN jump-target=customer
add action=accept chain=customer connection-state=established
add action=accept chain=customer connection-state=related
add action=drop chain=customer
chain=customer ?

https://wiki.mikrotik.com/wiki/Manual:I ... ter#Chains

кто это так нагениалил?


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

А что не так с этой цепочкой? Ну увели в нее пакеты, какие хотели:

Код: Выделить всё

add action=jump chain=forward in-interface=WAN jump-target=customer
Потом можно делать, что хочешь. Сам смысл такого шага в восьми строках конечно непонятен, чем там обычный форвард не устроил. Но сделали и ладно. Это издержки копипаста без попытки понять, зачем оно вообще.
Для ТС, два правила можно в одно согнать в двух местах:

Код: Выделить всё

add action=accept chain=input connection-state=established,related in-interface=WAN
.......
add action=accept chain=customer connection-state=established,related


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить