ProCloud Yandex
25.08.2023
читать 10 минут

Настройка Firewall в Mikrotik

/upload/iblock/2d2/t6qyi3hwq9o051iratqhdnpyd2e6ipq5/vitesses-transparentes-bleues-de-vecteur-78298531_%281%29.jpg

Сетевая операционная система RouterOS создавалась под устройства RouterBoard, которые выпускаются организацией Mikrotik. Однако в настоящее время она часто используется на x86 и в облаках. В данном материале мы расскажем, как правильно настроить межсетевой экран в упомянутой операционной системе.

Стоит отметить, что в этом материале будет задействована облачная версия RouterOS CHR. По большому счету вся настройка будет проходить точно так же, как и при применении WebFig и WinBox.

Немного теории: настройка firewall

“Цепочка” считается базовым понятием при любых работе с фаерволом MikroTik, объясняется это тем, что правила обработки трафика применяются не параллельно, а строго по очереди, формируя “цепь”. Изначально их количество равно трем, однако вы можете создать собственные цепочки. В дефолтный список входит:

  • INPUT: Отвечает за входящие запросы, которые поступают на маршрутизатор;
  • OUTPUT: Отвечает за исходящие запросы, которые генерируются маршрутизатором;
  • FORWARD: Отвечает за запросы, которые проходят транзитом через маршрутизатор.

Проще говоря, если к нам приходит трафик из интернета или других сетей, то для работы с ним потребуется INPUT цепочка. Если же трафик исходит с нашей стороны в интернет или другие сети, то мы будем использовать OUTPUT цепочку. В том случае, когда маршрутизатор является промежуточным узлом, то обрабатывать такой трафик можно с помощью FORWARD цепочки.

Следует упомянуть о 4 видах статусов соединения, а именно:

  • Established: Указывает на то, что соединение успешно установлено и готово к передаче данных;
  • New: Указывает на то, что соединение является новым;
  • Related: Указывает на то, что соединение уже причастно к одному из ранее созданных, однако применяется с другой целью.
  • Invalid: Указывает на некорректность соединения,  маршрутизатора не понимает как работать с ним.

Фильтрация

Запускаем CLI и ознакамливаемся с имеющимся правилами:

[admin@MikroTik] > ip firewall filter print
Flags: X - disabled, I - invalid, D - dynamic

На данном этапе у нас не отображаются правила, а только “легенда” флагов. Нам нужно зайти в настройку фильтров:

[admin@MikroTik] > ip firewall filter
[admin@MikroTik] /ip firewall filter>

Если вы желаете узнать о всех вариантах команд в разделе, то просто нажмите на клавишу “?”. Давайте пропишем первые правила и объясним с какой целью они применяются:

add action=accept chain=input comment="default configuration" connection-state=established,related

Итак, в данной команде содержится следующее:

  1. За прием пакетов отвечает – add action=accept;
  2. Указание цепочки, в данном случае правило для входящих запросов – chain=input;
  3. Комментарий для удобства дальнейшей настройки – comment=”default configuration”;
  4. Прописываем статусы соединения, которые будут обрабатываться – connection-state=established,related.

Если рассматривать упомянутую команду в общем, то она означает - прием всех пакетов данных извне со статусом подключения Related и Established.

Рекомендуем указать еще одно правило, давайте его разберем:

add action=accept chain=input src-address-list=allowed_to_router

В команде один новый параметр – src-address-list=allowed_to_router. В дальнейшем нам потребуются списки IP адресов с уникальными именами. Такое правило обеспечивает обработку пакетов только из списка с указанным именем и будет полезно при формировании списка разрешенных IP.

И последнее правило:

add action=drop chain=input

Она обеспечит отказ в обработке пакетов, которые не соответствуют правилам выше.

Перейдем к созданию списков разрешенных IP. Зайдем в CLI – ip firewall и убедимся что список на данный момент пуст:

[admin@MikroTik] > ip firewall address-list
[admin@MikroTik] /ip firewall address-list> print

Flags: X - disabled, D - dynamic
# LIST           ADDRESS                CREATION-TIME           TIMEOUT

Выполним добавление всех адресов локальной подсети 192.168.88.0/24 кроме адреса самого маршрутизатора:

add address=192.168.88.2-192.168.88.254 list=allowed_to_router

Выполним проверку:

[admin@MikroTik] /ip firewall address-list> print   
Flags: X - disabled, D - dynamic
#   LIST                ADDRESS                         CREATION-TIME          TIMEOUT
0   allowed_to_router   192.168.88.2-192.168.88.254     feb/05/2021 13:01:55

Созданную конфигурацию мы будем использовать далее для отправки трафика маршрутизатору из локальной сети.

Разделение адресов локального сегмента и интернета

Далее в данном руководстве мы разделим IP адреса на 2 группы, а именно внешний и локальный сегмент, так мы сможем в будущем понимать какой IP адрес из интернета, а какой нет. Сделаем мы это с помощью списков и уже известной команды:

add address=”IP_address” list=not_in_internet

Это действие необходимо произвести несколько раз с каждой зарезервированной подсетью. Полный список подсетей специального назначения, созданный RFC 6890, вы можете найти в интернете.  В итоге все прописанные IP адреса будут считаться локальными.

Переходим ко второй цепочке – FORWARD, воспользовавшись уже сконфигурированными списками, мы обезопасим локальную сеть от аттак.

Создадим правило, которое будет отбрасывать попытки повторной установки соединения:

add action=fasttrack-connection chain=forward comment=FastTrack connection-state=established,related

Настроим прием транзитного трафика:

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

Исключим нежелательный трафик:

add action=drop chain=forward comment="Drop invalid" connection-state=invalid log=yes log-prefix=invalid

Исключим отправку трафика из локальной сети к частным IP:

add action=drop chain=forward comment="Drop tries to reach non public addresses from LAN" dst-address-list=not_in_internet in-interface=bridge1 log=yes log-prefix=!public_from_LAN out-interface=!bridge1

Исключим обработку пакетов, которые не отвечают требованиям NAT:

add action=drop chain=forward comment="Drop incoming packets that are not NATted" connection-nat-state=!dstnat connection-state=new in-interface=ether1 log=yes log-prefix=!NAT

Исключим трафик из внешней сети, но не с public IP:

add action=drop chain=forward comment="Drop incoming from internet which is not public IP" in-interface=ether1 log=yes log-prefix=!public src-address-list=not_in_internet

На этом базовая настройка завершена.

Защита от атак типа Brute Force (метод перебора)

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

Чтобы бороться с данной проблемой необходимо прописать правило брандмауэра:

add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment="Drop SSH brutforce" disabled=no

Оно сбрасывает все соединения с адресов IP, которые находятися в черном списке. Переходим к созданию blacklist. Идентифицировать бота мы будем по факту ошибки ввода пароля более 3х раз подряд за минуту. Конфигурируем 3 списка: ssh_lvl1, ssh_lvl2 и ssh_lvl3.

При формировании подключения через SSH IP пользователя попадет в первый список, но автоматически ликвидируется через минуту:

add chain=input protocol=tcp dst-port=22 connection-state=new action=add-src-to-address-list address-list=ssh_lvl1 address-list-timeout=1m comment="Level1" disabled=no

Вторую попытку установки соединения будем регистрировать в другом списке, который назовем ssh_lvl2:

add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_lvl1 action=add-src-to-address-list address-list=ssh_lvl2 address-list-timeout=1m comment="Level2" disabled=no

Когда ошибка повторится во 2й раз, то адрес IP автоматически переходит в третий список. Назовем его - ssh_lvl3:

add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_lvl2 action=add-src-to-address-list address-list=ssh_lvl3 address-list-timeout=1m comment="Level3" disabled=no

В случае ошибки подключения в третий раз адрес будет блокироваться на период в 10 суток. Назовем этот список - ssh_blacklist:

add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_lvl3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=10d comment="Blacklist" disabled=no

Базовая настройка NAT

Достаточно популярный метод настройки, который расшифровывается как Network Address Translation. Данная технология позволяет устройствам локальной сети выходить во внешнюю сеть используя только один публичный IP-адресом. В локальной сети устройства используют зарезервированные подсети, а в сеть выходят через маршрутизатор с NAT. Маршрутизатор получает пакет с локального IP и подменяет на нем обратный адрес с локального на внешний. Чтобы ответный пакет отправить нужному локальному устройству, изменяется также номер порта. Вся информация записывается в таблицу соответствия. Но когда из внешней сети приходит пакет, для которого нет записи в таблице, он отбросится, так как маршрутизатор не знает, какому устройству он предназначен.

Для предотвращения потери таких пакетов используется Port Forwarding. Мы явно указываем, какому устройству отправлять пакеты инициированные из внешней сети.

В статье рассмотрим один из способов настройки NAT, когда внешний IP-адрес может быть изменен.

Сперва необходимо сообщить маршрутизатору о намерении использовать NAT с помощью команды:

ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade

ether1 — интерфейс со стороны внешней сети.

Заключение

Мы рассмотрели только базовые нюансы по настройке firewall в Mikrotik. В данном материале не затрагивались сложные правила, так как мы пытались объяснить процесс настройки максимально просто. В открытом доступе существует много форумов, на которых можно обсудить более сложные правила и методы настройки.

Новости
5 апреля 202405.04.2024
читать 1 минутучитать 1 мин
ProCloud CPO Диана Беда в рейтинге ИТ-лидеров от Global CIO
28 марта 202428.03.2024
читать 1 минутучитать 1 мин
Запуск новой локации: Казахстан
6 марта 202406.03.2024
читать 1 минутучитать 1 мин
ProCloud №1 в Рейтинге облачных провайдеров 2023