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. В данном материале не затрагивались сложные правила, так как мы пытались объяснить процесс настройки максимально просто. В открытом доступе существует много форумов, на которых можно обсудить более сложные правила и методы настройки.

Новости
13 сентября 202413.09.2024
читать 2 минутычитать 2 мин
Дайджест обновлений продуктов
18 апреля 202418.04.2024
читать 2 минутычитать 2 мин
Дайджест обновлений продуктов Q1
5 апреля 202405.04.2024
читать 1 минутучитать 1 мин
ProCloud CPO Диана Беда в рейтинге ИТ-лидеров от Global CIO
Создать учетную
запись ProCloud
arrow
arrow hover
 
Имя, Фамилия*
Номер телефона
Электронный адрес*
Ваше сообщение*
Файл
Файл
Файл
Файл
Файл
Файл
Файл
Файл
Файл
Файл
Тип формы
ID тикета Zendesk
Продукт
IP
 

Создайте бесплатную учетную запись или напишите нам, чтобы узнать больше.

Нажимая «Отправить заявку» вы даете свое согласие на обработку своих персональных данных