В предыдущей статье был рассмотрен проброс портов и всё, что с ним связано. Теперь остановимся на фильтрации трафика (раздел Сетевой Экран / Firewall web-интерфейса) — как транзитного, так и обращенного к локальным сервисам маршрутизатора.
1. Настройки фильтрации транзитного трафика
Данный блок позволяет создать набор правил, регламентирующих (как запрещающих, так и разрешающих) прохождение трафика через маршрутизатор из глобальной сети в сторону клиентов и наоборот. Фильтрация может осуществляться по MAC адресам устройств, подключенных к роутеру, IP адресам устройств и внешних ресурсов, а также портам.
Чтобы начать работать с фильтрами, необходимо:
- Включить фильтрацию (по умолчанию опция отключена).
- Определиться, что будет происходить со всеми соединениями, не попадающими под правила. Варианта два: либо они пропускаются , либо блокируются. Грубо говоря, понять, какая задача стоит: разрешить доступ лишь к определенным ресурсам и определенному кругу лиц, а всё остальное — запретить; или напротив — в общем случае разрешать любые соединения всем пользователям, за определенными исключениями, оформленными в правила.
Включение фильтрации транзитного трафика на роутере
Далее, чтобы создать правило, необходимо, как и в случае с пробросом портов, внести ряд данных.
- Интерфейс, на который поступил трафик, обрабатываемый правилом. Если цель — фильтровать соединения, инициированные пользователями локальной сети, необходимо указать LAN, в случае соединений извне — WAN либо VPN в зависимости от типа подключения роутера к операторской сети.
- Протокол, на который будет распространяться правило. По умолчанию значение None, т.е любой трафик без уточнения. Но возможен выбор : TCP, UDP или ICMP.
- Если фильтрация осуществляется по MAC адресу источника соединения, то необходимо его указать.
- Также доступен вариант фильтрации по IP адресу источника соединения (как единственному, так и подсети).
- Порт, с которого производится соединение. Для ICMP протокола это поле недоступно.
- IP адрес назначения, т.е IP адрес, к которому устанавливается соединение. Это может быть как один адрес, так и подсеть.
- Порт назначения, на который производится соединение. Для ICMP протокола это поле недоступно.
- Политика, т.е определение того, что будет происходить с соединениями, попадающими под правило. Варианта два: правило может быть либо запрещающим, либо разрешающим.
- Комментарий в свободнонй форме, позволяющий не держать в голове, какое правило и зачем было создано.
- Действие, а именно — что вы хотите сделать с правилом: добавить (новое) либо удалить (уже существующее).
Настройка фильтрации трафика (firewall) на роутере
Важно: не обязательно заполнять все доступные поля. В этом случае, проверка соответствия не заполненному критерию просто не будет производиться.
Например, правило, рассмотренное на скриншоте, вида:
Интерфейс = LAN;
Протокол = ICMP;
MAC не указан;
IP источника (src) = 192.168.1.124, Маска не указана;
Порт ист. (src) / Порт назн. (dst) недоступны;
IP назначения (dst) = 8.8.8.8, Маска не указана;
Политика = Запретить;
приводит к тому, что мы теряем возможность пинговать адрес 8.8.8.8 (google dns) с устройства в локальной сети, расположенного по адресу 192.168.1.124 . К такому же результату приведет правило, в котором не будет указан IP источника, но будет указан MAC адрес этого устройства.
— Правила для LAN
Правила, созданные для интерфейса LAN, подразумевают, что в качестве источника выступает устройство, находящееся в локальной сети (т.е, инспектируемый трафик пришел на LAN интерфейс). Т.о, в качестве src (исходящего) IP будут выступать локальные IP адреса устройств , а src (исх) портами будут являться порты, с которых улетает пакет в сторону интерфейса LAN с локальных устройств.
Если необходимо ограничить доступ к определенным web-ресурсам пользователю или группе пользователей, то в IP источника (src) необходимо указать IP адрес пользователя, либо, если речь о группе, — маску, которая будет в себе содержать диапазон адресов пользователей, которых мы ограничиваем. В IP назначения (dst) необходимо будет указать адреса запрещаемого ресурса, также можно указать порты, соответствующие сервисам, которые стоит цель ограничить (например, стандартные 80, 8080 – http и 443 — https) — в случае, если заблокировать необходимо лишь часть сервисов, но не адрес целиком.
Важно: необходимо помнить, что одному доменному имени может соответствовать несколько IP адресов, а также — ограничиваемый сервис может быть доступен через не стандартные порты. Для определения IP адресов, соответствующих доменному имени, можно воспользоваться утилитой nslookup:
Вывод nslookup
Аналогичным образом можно ограничить работу любых несанкционированных служб, если известны их IP адреса назначения, или же диапазоны портов (как тех, с которых происходят обращения со стороны локальных пользователей, так и тех, на которые пользователь обращается), характерные для работы этих служб / приложений.
Если же стоит задача ограничить свободу пользователя до определенного набора разрешеных ресурсов и сервисов, то необходимо выбрать значение «Блокированы» для параметра «пакеты, которые не подходят ни под одно правило, будут:» (т.е, политика по умолчанию – запрещающая). В IP и портах назначения (dst) указываются данные (адреса/подсети и порты) тех ресурсов, которые должны быть доступны. Что касается IP адресов источников (src), то их можно не указывать вообще (тогда правило распространится на всех пользователей, работающих в локальной сети маршрутизатора), либо указать конкретный IP адрес, на который действует разрешающее правило (в этом случае, на всех, для кого не создано такое правило, по умолчанию будет действовать запрещающая политика на любую активность). Либо же — указать подсеть, если правило создается для группы пользователей (по аналогии с указанием одного адреса, на всех, кто не попал в подсеть, будет действовать общая запрещающая политика).
Важно: если необходимо создать идентичные правила для нескольких IP адресов, то можно ограничиться одним правилом, если все адреса находятся в одной подсети. Например, указанный адрес 192.168.1.1 и маска 255.255.255.240 будут означать, что правило распространяется на адреса из диапазона 192.168.1.1-192.168.1.14. Если же невозможно объединить адреса, для которых распространяется правило, в подсеть, необходимо создавать несколько дублирующих правил для каждого IP-адреса.
— Правила для WAN / VPN
Правила, созданные для WAN или VPN интерфейса, регулируют политику относительно входящего трафика в сторону маршрутизатора из внешней сети.
Например, создавая запрещающее правило для интерфейса WAN, в котором выбран протокол TCP, указан исходящий адрес 217.118.91.73 и порт 433, мы подразумеваем, что все соединения в сторону маршрутизатора, устанавливаемые со стороны 217.118.91.73:433, будут отброшены (в том случае, если мы точно знаем, с какого порта будет устанавливаться соединение).
Аналогично, если необходимо запретить входящие соединения на конкретный адрес / к конкретной службе в локальной сети, правило будет содержать адрес и порт назначения, которые нам необходимо «закрыть» снаружи.
Пример:
Запрещающее правило фильтрации транзитного трафика
Данное правило будет означать, что вне зависимости от исходящего адреса в глобальной сети, соединения, назначением которых является 80 порт устройства, проживающего по адресу 192.168.1.124, будут отброшены. В предыдущей статье мы настраивали проброс портов с WAN / 8888 на 192.168.1.124:80, таким образом отбрасываться будут соединения , устанавливаемые на 8888 порт глобального адреса маршрутизатора.
Важно: если добавленные правила противоречат друг другу , то применено будет первое, под которое попадет трафик. Порядок прохождения правил при фильтрации соответствует порядку следования этих правил в web интерфейсе.
Пример: мы хотим ограничить доступ к web интерфейсу устройства с адресом в локальной сети 192.168.1.124 (пример выше) для всех внешних соединений, кроме одного доверенного IP адреса источника. В этом случае, мы создаем два правила:
Создание двух противоречащих друг другу правил Firewall
первое из них разрешает доступ к web интерфейсу 192.168.1.124 с внешнего IP адреса 217.118.91.73, второе — запрещает все без исключения соединения извне. Таким образом, если мы с адреса 217.118.91.73 обратимся на http://my_ip:8888 (в предыдущей статье мы настроили проброс портов следующим образом: при обращении по адресу http://Ваш_IP_адрес:8888 либо http://Ваш_Домен:8888 весь TCP трафик будет перенаправляться на устройство, имеющее IP адрес 192.168.1.124 в Вашей локальной сети, а именно — на 80 порт), то на соединение распространится первое в списке правило (разрешающее) , и соединение будет установлено. Если же поменять правила местами, т.е , первым в списке сделать правило, запрещающее все соединения к 80 порту 192.168.1.124, то соединение с 217.118.91.73 будет отклонено , попросту не дойдя до разрешающего правила, под которое попадает.
2. Подключение к локальным сервисам
Для лимитирования доступа к локальным сервисам самого маршрутизатора (не транзитного трафика!) выделен блок настроек «Подключение к локальным сервисам». По умолчанию сервис выключен. Для включения необходимо перейти в Сетевой экран → Сетевой экран → Подключение к локальным сервисам → Разрешить подключение → Включить.
Включение фильтрации трафика, обращенного к локальным сервисам маршрутизатора
Как следует из названия, данный блок настроек позволяет создавать разрешающие правила определенным хостам для доступа с указанного интерфейса к службам, запущенным на самом маршрутизаторе, при общей запрещающей политике для этого интерфейса.
По аналогии с правилами для транзитного трафика необходимо указать данные:
- Интерфейс, со стороны которого устанавливается соединение, которое необходимо разрешить. WAN, VPN или LAN.
- Протокол, на который будет распространяться правило. По умолчанию значение None, т.е любой трафик без уточнения. Но возможен выбор : TCP, UDP или ICMP.
- MAC адрес источника соединения.
- IP адрес, с которого устанавливается соединение.
- Подсеть, с которой устанавливается соединение.
- Порт, с которого производится соединение (src / ист). Для ICMP протокола это поле недоступно.
- Порт, на который устанавливается соединение (dst / назн). Для ICMP протокола это поле недоступно.
- Комментарий в свободнонй форме.
- Действие, а именно — что вы хотите сделать с правилом: добавить (новое) либо удалить (уже существующее).
Настройка правил подключения к локальным сервисам
Пример:
На маршрутизаторе запущен UDP Proxy (udpxy) на 81 порту. С целью обеспечения безопасности, соединение разрешено только со стороны LAN.
Включение UDPXY на роутере
При этом, стоит задача обеспечения работы iptv посредством нашего proxy для конкретного клиенского устройства, находящегося в глобальной сети. Здесь нам поможет создание правила доступа к локальным сервисам.
Правило, регулирующее доступ к локальному сервису маршрутизатора udpxy
Созданное правило означает, что соединения, устанавливаемые с WAN с IP адреса 217.118.91.120 на 81 порт маршрутизатора не будут отклоняться, несмотря на то, что в общем случае, политика доступа к udpxy на 81 порт доступны только для LAN интерфейса. Т.е, клиент находящийся на указанном IP-адресе сможет в порядке исключения пользоваться сервисом.
Важно: данный блок в частности призван управлять разрешениями доступа для сервисов, установленных из Entware, т.к по умолчанию все они имеют политику drop без каких-либо разрешающих правил и исключений. Следовательно, для сервисов из entware всегда необходимо создавать правила доступа, в противном случае доступ по умолчанию будет закрыт.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Маршрутизаторы MikroTik предоставляют гибкие возможности для настройки фильтрации и распределения трафика.
Комментариев: 2Просмотров: 1804273
Введение
«Сетевая безопасность бывает хай и нехай».
Фраза, найденная в сети Интернет
С момента своего появления сеть Интернет многократно выросла. Также многократно увеличились такие показатели сети, как предоставляемые ресурсы, скорости обмена информацией, скорости подключения. Однако вместе с ростом полезных ресурсов, многократно выросли риски кражи информации, использования ресурсов не по назначению и другие опасности.Таким образом, каждый системный администратор ежедневно сталкивается с вопросами защиты обслуживаемых ресурсов.
Данная статья написана с целью описать функционал фильтрации трафика в операционной системе RouterOS, производства компании MikroTik.
Особенности работы файрвола
Для базового понимания работы файрвола, необходимо ознакомиться с понятиями цепочки (chain), состояния соединения (connection state), условия и действия (action).
Цепочки (chain)
При фильтрации трафик, в зависимости от своего предназначения попадает в одну из цепочек (chain) обработки трафика. В фильтре предопределены три основные цепочки:
- input входящий трафик предназначенный для маршрутизатора. Например, когда вы подключаетесь к маршрутизатору при помощи приложения winbox, трафик как раз попадает в эту цепочку.
- output Исходящий трафик. Трафик, создаваемый самим маршрутизатором. Например, если вы выполните команду ping непосредственно с самого маршрутизатора, трафик попадет в эту цепочку.
- forward Трафик, идущий через маршрутизатор. Например, если компьютер из локальной сети, установил соединение с внешним сайтом, данный трафик попадает в цепочку forward.
Таким образом мы видим, что для защиты самого маршрутизатора необходимо использовать цепочку input, а для защиты и фильтрации трафика между сетями необходимо использовать цепочку forward.
Кроме того, администратор имеет возможность создавать свои собственные цепочки обработки трафика, к которым можно обращаться из основных цепочек. Данная возможность будет рассмотрена в дальнейшем.
Состояние соединения (connection state)
Каждое из сетевых соединений MikroTik относит к одному из 4 состояний:
- New – Новое соединение. Пакет, открывающий новое соединение, никак не связанное с уже имеющимися сетевыми соединениями, обрабатываемыми в данный момент маршрутизатором.
- Established – Существующее соединение. Пакет относится у уже установленному соединению, обрабатываемому в данный момент маршрутизатором.
- Related – Связанное соединение. Пакет, который связан с существующим соединением, но не является его частью. Например, пакет, который начинает соединение передачи данных в FTP-сессии (он будет связан с управляющим соединением FTP), или пакет ICMP, содержащий ошибку, отправляемый в ответ на другое соединение.
- Invalid – Маршрутизатор не может соотнести пакет ни с одним из вышеперечисленных состояний соединения.
Исходя из вышеизложенного, мы видим, что хорошим вариантом настройки фильтрации пакетов будет следующий набор условий:
- Обрабатывать новые соединения (connection state = new), принимая решение об пропуске или блокировке трафика.
- Всегда пропускать соединения в состоянии established и related, так как решение о пропуске этого трафика было принято на этапе обработки нового соединения.
- Всегда блокировать трафик, для которого состояние соединения равно invalid, потому что этот трафик не относится ни к одному из соединений и фактически является паразитным.
Условие
При прохождении пакета через фильтр, маршрутизатор последовательно проверяет соответствие пакета заданным условиям, начиная от правила, расположенного первым. и последовательно проверяя пакет на соответствие правилам номер два, три и так далее, пока не произойдет одно из двух событий:
- Пакет будет соответствовать заданному условию. При этом сработает соответствующее правило, в котором это условие было задано, после чего обработка пакета будет завершена.
- Закончатся все условия и пакет не будет признан соответствующим ни одному из них. При этом, по умолчанию он будет пропущен дальше.
Исходя из п.2, нельзя не отметить, что есть две стратегии построения фильтра пакетов:
- Нормально открытый файрвол. Данный тип настройки можно определить как «Все разрешено, что не запрещено». При этом мы запрещаем прохождение только некоторых типов трафика. Если пакет не соответствует этим типам – он будет пропущен. Обычно данный тип файрвола характерен для мест, где не предъявляется высоких требований к безопасности пользователей, а трафик может быть самым разнообразным и не поддающимся жесткой квалификации. Такая настройка характерна для операторов связи (Интернет-провайдеров), открытых точек доступа, домашних маршрутизаторов.
- Нормально закрытый файрвол. Данный тип настройки можно определить как «Все запрещено, что не разрешено». При этом разрешается прохождение только определенных типов трафика, а последним правилом в файрволе стоит правило, запрещающее прохождение любого типа трафика. Такой тип настройки файрвола характерен для корпоративного использования, где существуют жесткие требования к безопасности.
Не могу сказать, что какая-то из стратегий является правильной, а какая-то неправильной. Обе стратегии имеют право на жизнь, но каждая — в определенных условиях.
Теперь подробнее распишем все варианты условий, на основании которых мы можем принимать решение о действии.
Закладка general
Наименование |
Описание |
Chain |
Цепочка (см. выше). Если ввести свое название – получим свою цепочку. |
Src. Address |
Адрес источника пакета. Варианты заполнения поля: Один адрес. Например, 192.168.0.5 Подсеть. Например, 192.168.0.0/24 Диапазон адресов. Например, 192.168.0.5-192.168.0.15 Обратите внимание: если вам надо задать несвязанный диапазон адресов, то это нельзя сделать в этом поле, но можно сделать через Src. Address List на закладке Advanced |
Dst. Address |
Адрес назначения пакета. Варианты заполнения поля см. выше |
Protocol |
Протокол соединения. TCP, UDP, ICMP и т.п. |
Src. Port |
Порт, с которого пришел пакет. Поле можно заполнить только если протокол соответствует TCP или UDP. Один порт. Например, 22. Диапазон портов. Например, 10000-20000. Несколько портов. Например ,22,23,25. Несколько диапазонов портов. Например, 5060-5070,10000-20000 . Диапазон и несколько портов. Например, 22,23,10000-20000. |
Dst. Port |
Порт, на который пришел пакет. Поле можно заполнить, только если протокол соответствует TCP или UDP. |
Any Port |
Любой порт. Например, или Src. Port, или Dst. Port |
P2P |
Peer-to-Peer протокол. Пакет относится к одному из P2P протоколов. Например, edonkey или BitTorrent. |
In Interface |
Интерфейс, с которого пришел проверяемый пакет. (Не работает, если chain=output, т.к. источник трафика — сам маршрутизатор) |
Out Interface |
Интерфейс, куда будет передан пакет. (Не работает, если chain=input, так как трафик предназначен для маршрутизатора и дальше передан быть не может). |
Packet Mark |
Пакет имеет определенную маркировку, полученную ранее через Mangle. |
Connection Mark |
Пакет имеет определенную маркировку, полученную ранее через Mangle. |
Routing Mark |
Пакет имеет определенную маркировку, полученную ранее через Mangle. |
Connection Type |
Пакет относится к определенному типу соединения, включенному на закладке Firewall/Service Ports |
Connection State |
Состояние соединения. Описывалось выше. |
Обратите внимание, что перед частью полей можно поставить флаг восклицательного знака. Этот флаг будет обозначать отрицание. Например:
обозначает что адрес источника любой, кроме 192.168.0.0/24 . Также обратите внимание, что если поле не заполнено, оно должно быть серым. Если вы передумали заполнять поле, чтобы его исключить и сделать серым – нажмите стрелку «вверх», справа от поля.
Закладка Advanced
На этой закладке собраны расширенные опции выбора пакета.
Наименование |
Описание |
Src. Address List |
Адрес источника пакета совпадает с одним из адресов в именованном списке адресов, заданном на закладке Firewall/Address Lists. |
Dst. Address List |
Адрес назначения пакета совпадает с одним из адресов в именованном списке адресов, заданном на закладке Firewall/Address Lists. |
Layer 7 Protocol |
При проверке пакета L7-фильтром, заданным на закладке Firewall/Layer 7 Protocols, он был отнесен к одному из определенных на этой закладке протоколов. |
Content |
Внутри пакета содержится определенная строка символов. |
Connection Bytes |
Количество байт, прошедших через соединение. При этом 0 обозначает бесконечность. Например, 1000000-0 = более 1МБ. |
Connection Rates |
Скорость соединения. Например, 0-128000. Это правило сработает, если скорость подключения менее 128 килобит в секунду. (Поставив флаг [!] перед таким правилом, мы заставим срабатывать правило на соединение более 128kbps) |
Per Connection Classifier |
Используется при необходимости разделения трафика на несколько потоков. Позволяет держать пакеты с определенным набором опций в одном потоке. Подробнее: https://wiki.mikrotik.com/wiki/Manual:PCC |
Src. MAC Address |
MAC-адрес сетевой карты источника. Сработает, только если источник пакета находится в одном Ethernet-сегменте с маршрутизатором. |
Out Bridge Port |
Порт назначения интерфейса типа bridge, при активированной в Bridge опции Use IP Firewall. |
In Bridge Port |
Порт источника интерфейса типа bridge, при активированной в Bridge опции Use IP Firewall. |
Ingress Priority |
Приоритет пакета. Может быть получен из VLAN, WMM или MPLS ext. bit |
DSCP (TOS) |
Определяет DSCP, заданный в заголовке пакета. |
TCP MSS |
Размер MSS (Maximum segment size) TCP пакета. |
Packet Size |
Размер пакета. |
Random |
Случайное срабатывание правила. Число задается в диапазоне 1-99, что соответствует вероятности срабатывания правила от 1 до 99 процентов. Обычно используется при тестировании сервисов, когда надо изобразить случайную потерю пакетов на нестабильном канале. |
TCP Flags |
Флаги TCP соединения. |
ICMP Options |
Опции (типы сообщения) ICMP. |
IPv4 Options |
В заголовке пакета имеется заданная опция протокола Ipv4. |
TTL |
Time To Live – Время жизни пакета соответствует … |
Закладка Extra
Эта закладка продолжает список расширенных опций, не поместившихся на закладку Advanced.
Итак:
Наименование |
Описание |
Connection Limit |
Предел количества соединений для адреса или подсети. Адрес или подсеть задается полем netmask (для 1 адреса 32). |
Limit |
Предназначено для ограничения количества передаваемых пакетов: Поля: Rate – количество пакетов в секунду (минуту/час). Burst – Количество неучитываемых пакетов (пакетов не входящих в packet rate). |
Dst. Limit |
Ограничение количества передаваемых пакетов по адресу источника/назначения. В отличии от limit, учитываются пакеты для каждого адреса или адреса/порта в зависимости от выбранных опций. Дополнительный поля: Limit By – по какому критерию (src|dst address | address/port) учитывать пакеты. Expire — через какой промежуток времени запомненный адрес/порт будут удалены. |
Nth |
Каждый из: Every – из какого числа пакетов. Packet – сколько. Например Every=3, packet=2 Обозначает «Каждые 2 из 3 пакетов или проще 2/3 пакетов). |
Time |
Время действия правила. Позволяет ограничить действие правила во времени и по дням недели. Так как у маршрутизатора нет аппаратно-независимых часов, для корректной работы опции требуется настроенный SNTP-клиент (System/SNTP-Client) и часовой пояс (System/Clock) |
Src. Address Type |
Тип IP-адреса источника (Local, Unicast, Broadcast, Multicast) |
Dst. Address Type |
Тип IP-адреса назначения (Local, Unicast, Broadcast, Multicast) |
PSD |
Port Scan Detect. Опция позволяющая настроить определение события сканирования портов. Поля: Weight Threshold = При каком значении сработает. Delay Threshold = Максимальная задержка между пакетами с разными портами назначения, пришедшими с одного адреса. Low Port Weight = сколько при подсчете стоит каждый порт в диапазоне 0-1023. High Port Weight = сколько при подсчете стоит каждый порт в диапазоне 1024-65535. Например, на скриншоте правило сработает, если будет просканировано 7 и более портов в привилегированном диапазоне; Или 21 и более портов в непривилегированном диапазоне. При этом пауза между поступающими пакетами с одного источника, направленного на разные порты будет не более 3 секунд. |
Hotspot |
Опции, связанные с работой хотспот, если он настроен на маршрутизаторе. |
IP Fragment |
Пакет является фрагментом другого пакета. |
Как мы видим, в маршрутизаторе существует достаточно большое количество правил выбора пакетов, которые позволяют очень гибко и тонко настраивать работы с трафиком.
Теперь, когда мы поняли, на основании каких правил мы можем найти интересующий нас пакет, давайте посмотрим, что можно сделать после срабатывания правила.
Действия при фильтрации пакетов
Действия задаются на закладке Action сформированного правила.
Рассмотрим их:
Accept
Разрешить прохождение пакета. Дальнейшие действия по фильтрации прекращаются, пакет передается на следующий этап обработки.
add-dst-to-address-list
Добавить адрес назначения пакета в именованный список адресов (address list).
Опции:
- Address-List – Имя списка адресов. Выбирается из списка или задается новое.
- Timeout – Время, которое данный адрес будет присутствовать. По истечении заданного времени адрес будет удален из списка.
add-src-to-address-list
Добавить адрес источника пакета в именованный список адресов (address list).
Опции:
- Address-List – Имя списка адресов. Выбирается из списка или задается новое.
- Timeout – Время, которое данный адрес будет присутствовать. По истечении заданного времени адрес будет удален из списка.
Обратите внимание, что динамические списки адресов являются очень мощным инструментом. Так как мы можем учитывать списки адресов в правилах выбора пакета на закладке Advanced, фактически, таким образом мы можем динамически менять правила фильтрации трафика.
Drop
Удалить пакет. Пакет уничтожается и никуда дальше не передается.
Jump
Перейти на собственную цепочку (chain) обработки пакетов.
Опция – наименование цепочки.
Log
Занести информацию о пакете в Log-файл маршрутизатора. При этом пакет будет передан на следующее правило. Данная опция часто используется при отладке.
Passthrough
Ничего не делать. Передать пакет на следующее правило. Однако при этом счетчики работают, показывая сколько пакетов соответствовало этому правилу. Обычно используется для статистики.
Reject
Запретить прохождение пакета и отправить отправляющему узлу ICMP-сообщение об ошибке.
Опция – вид сообщения.
Return
Досрочно прервать обработку собственной цепочки (chain) и вернуться на следующее правило за правилом с Action=jump, которое передало пакет в эту цепочку.
Tarpit
Очень интересная опция. Может использоваться только с протоколом TCP. Суть в том, что маршрутизатор дает разрешение на создание соединения, при этом выставляя нулевое окно передачи (т.е. скорость соединения = 0). Позволяет «завесить» атакующий хост на этом соединении.
Заключение
В этой части мы разобрались с основными опциями файрвола. Обратите внимание, что условия выбора пакетов одинаковы для всего файрвола и будут нам требоваться в дальнейшем при изучении NAT и расширенной обработки трафика (Mangle). А вот названия цепочек и действия там будут совершенно другими.
Технический директор Илья Князев
Настройка фильтрации трафика на роутере — это важный шаг для обеспечения безопасности вашей домашней или офисной сети. Фильтрация трафика позволяет вам контролировать и ограничивать доступ к определенным сайтам, приложениям или услугам, что помогает защитить вас от вредоносного программного обеспечения, атак и других угроз.
В этой статье мы расскажем вам, как настроить фильтрацию трафика для роутера с подробными инструкциями. Мы рассмотрим различные способы фильтрации трафика, включая блокировку по IP-адресам, доменным именам и портам. Вы узнаете, как изменить настройки безопасности, создать черный и белый списки и настроить расписание для фильтрации трафика.
Прежде чем начать, вам понадобится доступ к административной панели вашего роутера. Откройте веб-браузер и введите IP-адрес роутера в адресной строке. Обычно это 192.168.0.1 или 192.168.1.1, но вам может потребоваться обратиться к документации или поставщику услуг интернета для получения точной информации.
После того, как вы вошли в административную панель, найдите и откройте раздел «Настройки безопасности» или «Фильтрация трафика». В этом разделе вы найдете все необходимые инструменты и опции для настройки фильтрации трафика на вашем роутере.
Содержание
- Почему нужно настраивать фильтрацию трафика для роутера?
- Как выбрать подходящий фильтр для роутера?
- Важные параметры настройки фильтрации трафика
- Шаги по настройке фильтрации трафика на роутере
- Примеры правил фильтрации трафика для различных сценариев использования
Почему нужно настраивать фильтрацию трафика для роутера?
Ниже приведены основные преимущества настройки фильтрации трафика для роутера:
1. Безопасность сети: Фильтрация трафика помогает защитить вашу сеть от атак вроде DoS (отказ в обслуживании) и DDoS (распределенная атака отказом в обслуживании), а также от вирусов и зловредного программного обеспечения.
2. Контроль доступа: Фильтрация трафика позволяет установить правила для ограничения доступа к определенным веб-сайтам, портам или протоколам. Вы можете ограничить доступ к сайтам, которые нарушают политику организации, или заблокировать нежелательные контенты.
3. Повышение производительности: Благодаря фильтрации трафика вы можете управлять пропускной способностью сети, оптимизировать использование ресурсов и предотвратить перегрузки сети.
4. Защита конфиденциальности: Фильтрация трафика позволяет контролировать передачу конфиденциальной информации и предотвращать утечки данных.
5. Беспроводная безопасность: Если вы используете беспроводной роутер, фильтрация трафика поможет предотвратить несанкционированный доступ к вашей сети и защитить ее данные от перехвата.
Конфигурация фильтрации трафика для роутера — это дополнительная защита, которая позволяет вам принимать решения о том, какой трафик разрешен, а какой должен быть заблокирован. Это необходимый шаг для поддержания безопасности вашей сети и защиты ваших данных.
Как выбрать подходящий фильтр для роутера?
Выбор подходящего фильтра для роутера очень важный этап при настройке фильтрации трафика. Ведь от правильно выбранного фильтра зависит эффективность работы роутера и безопасность сети. В этом разделе мы рассмотрим несколько ключевых критериев, которые помогут вам сделать правильный выбор.
1. Тип фильтра:
При выборе подходящего фильтра для роутера важно обратить внимание на его тип. Существуют различные типы фильтров, такие как фильтры по IP-адресам, портам, протоколам и т.д. В зависимости от ваших целей и требований, выберите фильтр, который наилучшим образом соответствует вашим потребностям.
2. Уровень защиты:
Важно также учитывать уровень защиты, предоставляемый фильтром. Некоторые фильтры предлагают только базовую защиту, в то время как другие предлагают более продвинутые функции, такие как обнаружение вредоносных программ и защита от атак. Определитесь с необходимым уровнем защиты и выберите фильтр, который его обеспечивает.
3. Простота использования:
При выборе фильтра также обратите внимание на его простоту использования. Хороший фильтр должен быть интуитивно понятным и легким в использовании даже для тех, кто не имеет специальных навыков в настройке сети. Проверьте, есть ли у фильтра удобный пользовательский интерфейс, который позволяет удобно настраивать и управлять правилами фильтрации.
4. Совместимость:
Не забудьте также проверить совместимость выбранного фильтра с вашим роутером и операционной системой. Удостоверьтесь, что фильтр совместим с вашим оборудованием и программным обеспечением, чтобы избежать возможных проблем совместной работы.
Следуя этим критериям, вы сможете выбрать подходящий фильтр для настройки трафика на своем роутере. Помните, что правильно выбранный фильтр сможет обеспечить надежную защиту вашей сети и улучшить работу роутера в целом.
Важные параметры настройки фильтрации трафика
При настройке фильтрации трафика для роутера, следует обратить внимание на несколько важных параметров.
1. IP-адрес
Один из основных параметров для фильтрации трафика — это IP-адрес. IP-адрес может быть источником или назначением пакетов данных. Задавая определенные IP-адреса в правилах фильтрации, можно ограничить доступ к определенным сетевым ресурсам или соединениям.
2. Порты
Еще одним важным параметром настройки фильтрации трафика являются порты. Порт — это числовой идентификатор, который определяет конкретное приложение или сервис, с которым происходит обмен данными. Описывая правила фильтрации по портам, можно контролировать доступ к различным сетевым сервисам и протоколам.
3. Правила совпадения
При настройке фильтрации трафика необходимо задавать правила совпадения. Правило совпадения определяет условия, при которых применяется правило фильтрации. В качестве условий могут использоваться параметры, такие как источник IP, назначение IP, порт и протокол.
4. Действия
Каждому правилу фильтрации соответствует определенное действие, которое будет применяться при совпадении правила. Некоторые из основных действий включают отброс пакета, перенаправление пакета, блокирование соединения и т. д. Выбор действия зависит от требуемого результата и целей фильтрации.
5. Приоритет
Каждое правило фильтрации имеет приоритет, который определяет порядок применения правил. При совпадении нескольких правил, роутер применяет правило с наивысшим приоритетом. Задавая приоритеты, можно определить важность и порядок применения правил фильтрации.
Шаги по настройке фильтрации трафика на роутере
Настройка фильтрации трафика на роутере позволяет управлять передачей данных и обеспечивать безопасность вашей сети. Для этого необходимо выполнить следующие шаги:
1. Войдите в административную панель роутера, открыв веб-браузер и введя IP-адрес роутера в адресной строке браузера.
2. Введите свои учетные данные (логин и пароль), которые были указаны на коробке роутера или получены от вашего интернет-провайдера.
3. Найдите раздел «Настройки безопасности» или «Фильтрация трафика» в меню роутера.
4. Включите функцию фильтрации трафика, выбрав соответствующую опцию.
5. Укажите параметры фильтрации, такие как блокировка определенных портов, IP-адресов или URL-адресов.
6. Сохраните изменения и перезагрузите роутер, чтобы применить новые настройки.
7. Проверьте эффективность фильтрации трафика, выполнив тестовое подключение к различным ресурсам.
После выполнения всех этих шагов вы успешно настроили фильтрацию трафика на своем роутере. Обратите внимание, что процедура настройки может незначительно отличаться в зависимости от модели и производителя роутера. Рекомендуется обращаться к документации или службе поддержки для получения более подробной информации о настройке фильтрации трафика на вашем роутере.
Примеры правил фильтрации трафика для различных сценариев использования
Ниже представлены примеры правил фильтрации трафика для различных сценариев использования роутера:
Сценарий использования | Правило фильтрации |
---|---|
Ограничение доступа к определенным веб-сайтам | Заблокировать все пакеты с указанными IP-адресами или доменными именами, используя правило deny . |
Предоставление доступа к определенной службе или порту | Разрешить только пакеты по указанным IP-адресам или портам, используя правило allow . |
Ограничение пропускной способности для определенных устройств | Ограничить скорость загрузки/загрузки данных для определенных IP-адресов или MAC-адресов, используя правила rate limit . |
Блокировка определенных типов трафика | Заблокировать пакеты определенного протокола или порта с помощью правила deny . |
Разрешение доступа только для устройств внутри сети | Разрешить только пакеты с внутренними IP-адресами в качестве источника, используя правило allow . Ограничить доступ к устройствам с внешними IP-адресами, используя правило deny . |
Это всего лишь несколько примеров возможных сценариев использования и соответствующих правил фильтрации трафика для настройки роутера. Фактические правила и параметры будут зависеть от конкретных потребностей и требований пользователей.
Время на прочтение
10 мин
Количество просмотров 13K
Вторая и заключительная статья в цикле организации родительского контроля на оборудовании MikroTik. Ранее подробно рассмотрены организация DNS, работа Firewall Filter и Ip Kid-control. В текущей части поговорим о прикладном применении маркировки трафика посредством Firewall Mangle, а также сделаем общие за представленный цикл статей выводы, касающихся возможностей RouterOS по организации родительского контроля.
▍ 1. Firewall Mangle
Рассмотрим имеющиеся возможности по маркировке трафика в контексте родительского контроля. Firewall Mangle подробно изучается на курсе MikroTik Certified Traffic Control Engineer (MTCTCE), тема требует внимательности и сосредоточенности. Разметим проходящий через маршрутизатор трафик:
/ip firewall mangle
add action=mark-connection chain=prerouting comment="WAN=>LAN connections" connection-nat-state="" in-interface=WAN new-connection-mark="WAN=>LAN connections" passthrough=yes
add action=mark-packet chain=prerouting comment="WAN=>LAN packets" connection-mark="WAN=>LAN connections" new-packet-mark="WAN=>LAN packets" passthrough=yes
add action=mark-connection chain=forward comment="LAN=>WAN connections" connection-mark=no-mark in-interface=bridge_home new-connection-mark="LAN=>WAN connections" out-interface=WAN passthrough=yes
add action=mark-packet chain=forward comment="LAN=>WAN packets" connection-mark="LAN=>WAN connections" new-packet-mark="LAN=>WAN packets" passthrough=yes
add action=mark-packet chain=forward comment="LAN=>WAN packets Children" new-packet-mark="LAN=>WAN packets Children" packet-mark="LAN=>WAN packets" passthrough=yes src-address-list=children
add action=mark-packet chain=postrouting comment="WAN=>LAN connections Children" dst-address-list=children new-packet-mark="WAN=>LAN packets Children" packet-mark="WAN=>LAN packets" passthrough=yes
В текстовом варианте они плохо представляются, поэтому объясним их по скриншоту. Как видно, трафик пользователей размечается на входящий (WAN => LAN) и исходящий (LAN => WAN).
На самом деле, так делать не нужно, ведь достаточно маркировать только исходящий трафик, потому что входящий – это всегда ответ на исходящий, в контексте домашнего устройства. TCP соединение устанавливается по инициативе пользователя, так же как и UDP пакеты к нам идут в ответ на наши запросы.
Итого нам нужно пометить весь исходящий трафик. Сразу будем выделять только детские соединения. Весь трафик разделим на четыре категории: DNS, HTTPS, QUIC и остальные соединения. DNS будем отлавливать в цепочки prerouting, сначала помечая соединения, затем пакеты в этих соединениях:
add action=mark-connection chain=prerouting comment="LAN=>WAN connections DNS Children" connection-mark=no-mark dst-port=53 in-interface=bridge_home new-connection-mark="LAN=>WAN connections DNS Children" passthrough=yes protocol=udp src-address-list=children
add action=mark-packet chain=prerouting comment="LAN=>WAN packets DNS Children" connection-mark="LAN=>WAN connections DNS Children" new-packet-mark="LAN=>WAN packets DNS Children" passthrough=yes
Чтобы понять, почему это нужно делать именно в prerouting, следует обратиться к схеме прохождения трафика внутри маршрутизатора MikroTik. Например, можно воспользоваться рисунком от этой компании.
Если первичным DNS сервером (/ip dhcp-server network add address=10.0.0.0/24 dns-server=10.0.0.1 gateway=10.0.0.1 netmask=24) будет выступать ваш роутер, то запросы от клиентов пойдут именно к нему, т. е. в Input Interface. Далее уже будем работать с цепочкой Forward. Помечаем все детские соединения. Среди них выделяем соединения HTTPS и QUIC:
add action=mark-connection chain=forward comment="LAN=>WAN connections Children" connection-mark=no-mark in-interface=bridge_home new-connection-mark="LAN=>WAN connections Children" out-interface=WAN passthrough=yes src-address-list=children
add action=mark-connection chain=forward comment="LAN=>WAN connections HTTPS Children" connection-mark="LAN=>WAN connections Children" dst-port=443 new-connection-mark="LAN=>WAN connections HTTPS Children" passthrough=yes protocol=tcp
add action=mark-connection chain=forward comment="LAN=>WAN connections QUIC Children" connection-mark="LAN=>WAN connections Children" dst-port=443 new-connection-mark="LAN=>WAN connections QUIC Children" passthrough=yes protocol=udp
Одинаково помечаем пакеты в HTTPS и QUIC соединениях, так как к ним будет применена одинаковая логика обработки:
add action=mark-packet chain=forward comment="LAN=>WAN packets Children HTTPS+QUIC" connection-mark="LAN=>WAN connections HTTPS Children" new-packet-mark="LAN=>WAN packets Children HTTPS+QUIC" passthrough=yes
add action=mark-packet chain=forward comment="LAN=>WAN packets Children HTTPS+QUIC" connection-mark="LAN=>WAN connections QUIC Children" new-packet-mark="LAN=>WAN packets Children HTTPS+QUIC" passthrough=yes
Далее необходима перемаркеровка пакетов. Для чего это нужно, будет понятно далее. На выходе имеем все детские пакеты (HTTPS, QUIC, !HTTPS и !QUIC), идущие в цепочке Forward:
add action=mark-packet chain=forward comment="LAN=>WAN packets Children ALL" connection-mark="LAN=>WAN connections Children" new-packet-mark="LAN=>WAN packets Children ALL" passthrough=yes
add action=mark-packet chain=forward comment="LAN=>WAN packets Children ALL" new-packet-mark="LAN=>WAN packets Children ALL" packet-mark="LAN=>WAN packets Children HTTPS+QUIC" passthrough=yes
Для самоконтроля, рекомендую на каждом этапе проводить зеркалирование пакетов и их ручную обработку в Wireshark (как настроить прием трафика, рассмотрено ранее):
add action=sniff-tzsp chain=forward comment=Sniffer_for_Test disabled=yes packet-mark="LAN=>WAN packets Children" sniff-target=192.168.1.1 sniff-target-port=37008
Трафик размечен, теперь прикрутим сюда параметры блокировки. В Firewall Mangle во вкладке Advanced имеются следующие интересующие нас возможности: Content и TLS Hosts.
Параметр Content позволяет задать текст, который будет искаться во всех проходящих через маршрутизатор пакетах. В первую очередь, это подойдет для HTTP соединений по понятным причинам. Для HTTPS и QUIC это тоже работает. В качестве примера рассмотрим соединение с одним из сайтов, о которых нельзя говорить вслух:
openssl s_client -servername xvideos.com:443 -tlsextdebug -connect xvideos.com:443
CONNECTED(00000003)
TLS server extension "server name" (id=0), len=0
TLS server extension "renegotiation info" (id=65281), len=1
0000 - 00 .
TLS server extension "EC point formats" (id=11), len=4
0000 - 03 00 01 02 ....
TLS server extension "session ticket" (id=35), len=0
depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
verify return:1
depth=0 CN = *.xvideos.com
verify return:1
Certificate chain
0 s:CN = *.xvideos.com
i:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
1 s:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
i:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
2 s:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
i:C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
Server certificate
-----BEGIN CERTIFICATE-----
MIIFtzCCBJ+gAwIBAgIQCP+nsUrbzwj8B5SCxl4RzjANBgkqhkiG9w0BAQsFADCB
…….
kvUG3hiNVNNEK4n1a8M3a32muX6G9vm17N6j
-----END CERTIFICATE-----
subject=CN = *.xvideos.com
issuer=C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
Видно, что его доменное имя несколько раз проходит в устанавливаемом соединении. Используем его в качестве фильтра, для всех типов размеченных пакетов: DNS и остального трафика Именно поэтому нужна была перемаркеровка пакетов, выполненная ранее в цепочке Forward:
add action=mark-packet chain=prerouting comment="Children Filter Content \"xvideo\"" content=xvideo new-packet-mark="Children Filter" packet-mark="LAN=>WAN packets DNS Children" passthrough=no
add action=mark-packet chain=prerouting comment="Children Filter Content \"porn\"" content=porn new-packet-mark="Children Filter" packet-mark="LAN=>WAN packets DNS Children" passthrough=no
add action=mark-packet chain=prerouting comment="Children Filter Content \"drug\"" content=drug new-packet-mark="Children Filter" packet-mark="LAN=>WAN packets DNS Children" passthrough=no
add action=mark-packet chain=forward comment="Children Filter content \"porn\"" content=porn new-packet-mark="Children Filter" packet-mark="LAN=>WAN packets Children ALL" passthrough=no
add action=mark-packet chain=forward comment="Children Filter Content \"drug\"" content=drug new-packet-mark="Children Filter" packet-mark="LAN=>WAN packets Children ALL" passthrough=no
Конечно, такой анализ сильно грузит процессор роутера. Как видно, при срабатывании хотя бы одно из правил ставится запрет на дальнейшую перемаркировку трафика, что разгрузит маршрутизатор (passthrough=no).
Параметр TLS Hosts позволяет задать SNI или Server Name Indication – расширение популярного широко используемого криптографического протокола TLS. Смысл SNI в том, что если в настройках web сервера включена поддержка технологии, то на одном IP адресе может размещаться неограниченное количество сайтов, работающих по HTTPS. Изначально HTTPS можно было использовать только при наличии выделенного IP адреса. Если возникала необходимость разместить на сервере второй сайт, работа с которым была бы возможна по защищенному соединению, нужно было использовать другой белый IP. В современном мире, конечно, на одном сервере хостится огромное количество сайтов.
Рассмотрим как проверить SNI на сервере:
openssl s_client -servername xvideos.com:443 -tlsextdebug -connect xvideos.com:443 | grep 'TLS'
TLS server extension "server name" (id=0), len=0
TLS server extension "renegotiation info" (id=65281), len=1
TLS server extension "EC point formats" (id=11), len=4
TLS server extension "session ticket" (id=35), len=0…
Наличие в выводе строки TLS server extension «server name» (id=0), len=0 будет означать, что SNI используется, и на сервере с одним IP адресом можно разместить любое количество сайтов. Таким образом, можно помечать пакеты на основании параметра TLS Hosts:
add action=mark-packet chain=forward comment="Children Filter SNI \"habr.com\"" new-packet-mark="Children Filter" packet-mark="LAN=>WAN packets Children HTTPS+QUIC" passthrough=no protocol=tcp tls-host=habr.com
add action=mark-packet chain=forward comment="Children Filter SNI \"xvideo\"" content=xvideo new-packet-mark="Children Filter" packet-mark="LAN=>WAN packets Children HTTPS+QUIC" passthrough=no
Запретим дальнейшую перемаркеровку пакетов (passthrough=no) и поставим эти правила перед правилами с параметром Content. Говорят, таким же образом работает великий китайский firewall, но при этом он умеет лезть еще глубже. Жалко пока нет технических подробностей.
Во вкладке Mangle Extra для решения поставленной задачи нам ничего не подойдет, увы…
Теперь соберем все правила Mangle воедино по следующей схеме:
LAN=>WAN connections DNS Children
LAN=>WAN packets DNS Children
Children Filter
LAN=>WAN connections Children
LAN=>WAN connections HTTPS Children
LAN=>WAN connections QUIC Children
LAN=>WAN packets Children HTTPS+QUIC
Children Filter
LAN=>WAN packets Children ALL
Children Filter
Пакеты, помеченные как Children Filter, будем дропать в Firewall Filter. Иллюстрация ниже, взятая опять же у этих ребят, объясняет почему это нужно делать именно там, а не в результате, например, роутинга:
Блокирующее правило придется поставить самым первым в цепочке Forward, иначе пакеты, подлежащие фильтрации, перескочат через Firewall:
/ip firewall filter
add action=accept chain=input comment="Accept established,related" connection-state=established,related
add action=drop chain=input comment="Drop invalid" connection-state=invalid
add action=drop chain=forward comment="Drop Children Filter" packet-mark="Children Filter"
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_sites_by_address_list dst-address-list=Block_site_by_dns_name
В результате ограничиваемые соединения будут просто прибиваться, браузер ребенка не сможет загрузить ничего из запрещенного контента.
Упомяну еще про /ip firewall layer7-protocol. Данный фильтр позволяет искать совпадения в первых 2 KB трафика (или 10 первых пакетах) по регулярным выражениям в ICMP, TCP и UDP потоках. Не рекомендую его использовать, слишком вероятностно все там работает и очень сильно загружает процессор роутера.
▍ 2. Заключение
RouterOS обладает различными возможностями по организации родительского контроля. В статьях представлены различные подходы: работа с DNS протоколом, Firewall Filter, Firewall Mangle и Kid-Control. Последний является средством автоматизации от MikroTik и не несет самостоятельных инженерных решений. Что же лучше использовать: работу с DNS, Firewall Filter или Firewall Mangle?
Работа DNS протокола неизбежна связана с кешированием, как на промежуточных серверах, так и на вашем роутере и даже в операционной системе. Нельзя сказать, чтобы это прямо-таки был минус, но нужно учитывать. Чтобы вы, как родитель, не подставили в DNS ответ, но до него дело может даже не дойти. Устройство ребенка извлечет IP адрес запрашиваемого ресурса из своего собственного хранилища. А вот то, что рано или поздно шифрованный DNS прочно войдет в нашу жизнь, нужно понимать уже сейчас. Поэтому в будущем актуальность эксплуатации собственных DNS серверов или коммерческих аналогов, по моему мнению, сохранится. Для данного подхода придется задействовать дополнительные технические ресурсы и, самое главное, поддерживать всю эту инфраструктуру в исправном и актуальном состоянии, что, скорее всего ляжет на ваши сисадминские плечи.
Дропать пакеты по IP адресу в Firewall Filter – достаточно топорное решение. Автоматический резолвинг доменных имен работает хорошо. Однако поле TLS Hosts в Firewall Mangle имеет перед ним сильное преимущество, так как позволяет фильтровать и субдомены. Ведь забивать их все в address-list совсем не хочется. А если на одном IP адресе окажется несколько сайтов, что было достаточно частой проблемой в период известных блокировок Роскомнадзора, то ничего хорошего из подобного подхода не выйдет. Грамотно разметить трафик в Firewall Mangle – это хороший навык, который позволяет решать много инженерных задач, в том числе таких как, приоритезация трафика и балансировка. Поэтому он мне нравится больше других.
Параметр Content может показаться исключительно хорошим решением, однако прогон толстого трафика через не достаточно сильный MikroTik по множеству фильтров может перегрузить центральный процессор роутера. Поэтому это остается последней мерой качественной фильтрации трафика.
В статье не рассмотрены подходы к блокировкам различных VPN, которые позволят перепрыгнуть через все описанные фильтры, потому как, считаю, это не относится к родительскому контролю.
Получается, что все описанные технические возможности хороши с определенными оговорками. Выбираем, что нравится больше и используем, а лучше все сразу. И потолще и побольше. Если вы действительно хотите организовать родительский контроль за трафиком ребенка. Но это уже не тема нашей статьи.
Часть 1
Часть 2 (вы тут)
Настроить firewall на MikroTik достаточно просто, но пользователи либо не сильно много уделяют внимания этой одной из важных элементов настройки устройства, либо настраивают его неправильно, что показало большое количество взломанных устройств в 2019 году, когда была найдена уязвимость WinBox. Данная статья пытается помочь понять, как работает фильтрация трафика в MikroTik, что необходимо делать что бы защитить свои устройства, но не претендует на руководство к действию, каждый выбирает свой путь сам.
Для правильной настройки межсетевого экрана на любом устройстве необходимо понимать несколько вещей:
- Схема работы firewall.
- Как работает firewall на устройстве.
- Что мы хотим открыть и защитить.
- Схемы работы Firewall
- FireWall в MikroTik
- Создание правил в Firewall
- Примеры защиты устройств
- Отладка
- RAW
- IPv6 Firewall
Схемы работы Firewall
Их две, и они применимы к любому межсетевому экрану:
- Разрешить всё, что не запрещено.
- Запретить всё, что не разрешено.
В первой схеме по умолчанию на все пакеты не накладывается никаких ограничений и по необходимости блокируются только какие-то критические сервисы, например, сервисы предоставляющие удаленный доступ. По данной схеме работают большинство домашних маршрутизаторов, у которых разрешен весь трафик кроме соединений из вне, которые не были инициированы этим устройством или устройствами локальной сети, работающими через этот шлюз.
Во второй схеме все подключения по умолчанию блокируются, если необходим доступ к какому-либо сервису, то разрешаем его.
Какой режим работы firewall выбрать зависит от схемы сети, желания заморочиться понастраивать дополнительные правила и параноидальных наклонностей настраивающего. Для домашних и небольших сетей, где пара компьютеров и пара телефонов, вполне достаточно ограничить доступ нежелательного трафика из вне, а все остальное разрешить — схема #1, но применение схемы #2 может повысить общую безопасность в плане ограничения доступа к маршрутизатору из локальной сети или ограничения доступа к внешней сети из локальной. Если в сети используется несколько подсетей, например, для разделения основного сегмента сети и гостевой (Wi-Fi), то выбор очевиден — вариант #2.
FireWall в MikroTik
Доступ к настройке IP -> Firewall
, фильтрация настраивается во вкладках Filter Rules
и Raw
. Разница в правилах между вкладками в том, что правила на вкладке Raw
обрабатываются до того, как пакет попадет в Connection Tracker
, это позволяет фильтровать пакеты гораздо раньше, что требует меньших затрат ресурсов устройства, но и имеет меньше возможностей в правилах, эффективен при обработке большого объема трафика.
По умолчанию firewall в MikroTik работает по схеме #1 — разрешить всё, что не запрещено (обе вкладки пустые), все правила обрабатываются последовательно до тех пор, пока не будет найдено условие, под которое подпадает обрабатываемый пакет. Если правило, под которое подпадает пакет найдено, то выполняется действие, заданное в настройках для этого правила и обработка последующих правил не выполняется. Если обрабатываемый пакет не попадает не под одно условие, то по схеме #1, пакет будет передан далее согласно схеме прохождения пакетов:
Правила состоят из цепочек (Chain), в таблице Filter Rules по умолчанию три цепочки:
- Input — трафик, направленный к только этому устройству. На схеме такой трафик обрабатывается в блоке Filter Input.
- Output — трафик, направленный от этого устройства. На схеме такой трафик обрабатывается в блоке Filter Output.
- Forward — трафик, проходящий через это устройство, например, из локального компьютера в интернет и обратно, направление не имеет значение. На схеме такой трафик обрабатывается в блоке Filter Forward.
Помимо стандартных цепочек можно создавать пользовательские цепочки, это может быть полезно для создания блоков обработки пакетов и более наглядного его восприятия.
Следующим важным компонентом в работе firewall является Connection Tracking (блок голубого цвета на схеме прохождения пакетов). Connection Tracking определяет состояние соединений, результат хранится в таблице Connection. Именно состояния подключений позволяют фильтровать трафик так, чтобы удаленный ресурс не смог подключиться сам к нашему устройству, но трафик в установленных сессиях нашим устройством мог беспрепятственно проходить. Существуют следующие четыре состояния пакетов:
- New — Новый пакет, не относящийся к текущим подключениям.
- Established — Пакет принадлежит одному из существующих подключений из таблицы Connection.
- Related — Пакет был порожден уже существующим подключением. Один из примеров протокол FTP, в котором передача команд происходит на порту 21, а передача данных на порту 20.
- Invalid — Пакеты к которым не применимо не одно из предыдущих состояний.
В настройках MikroTik есть еще одно состояние:
- Untracked — пакет, обработанный до того, как он попал в Connection Tracking и был обработан в RAW таблице.
Создание правил в Firewall
Добавление правил: IP -> Firewall -> Filter Rules -> +. На вкладке General задаются условия при совпадении которых происходит отработка правила, вкладка Action задает действие, выполняемое при совпадении условий правила. На вкладке Advanced располагаются дополнительные условия для правила не вошедшие в основной раздел, из практики в этом разделе наиболее часто используются пункты Src. Address List и Dst. Address List, в которых указываются списки адресов, например, IP адреса с которых разрешен доступ к устройству.
Возможные параметры для фильтрации трафика:
- Chain — цепочка, направление трафика, значения по умолчанию: Input, Output, Forward. Единственный параметр обязательный к заполнению.
- Src. Address — IP адрес источника пакета.
- Dst. Address — IP адрес получателя пакета.
- Protocol — фильтр по протоколу.
- Src. Port — Порт(ы) с которого был отправлен пакет (доступен только при выборе соответствующего протокола).
- Dst. Port — Порт(ы) на который отправлен пакет (доступен только при выборе соответствующего протокола).
- Any. Port — Порт(ы) фигурирующий в пакете, не важно в каком направлении отправлен пакет (доступен только при выборе соответствующего протокола).
- In. Interface — Интерфейс на который прилетел пакет.
- Out. Interface — Интерфейс с которого отправлен пакет.
- In. Interface List — Интерфейс из списка, на который прилетел пакет (список составляется в Interfaces -> Interface List).
- Out. Interface List — Интерфейс из списка, с которого отправлен пакет (список составляется в Interfaces -> Interface List).
- Connection State — Состояние подключения, значение берется из таблицы Connection.
- Src. Address List (вкладка Advanced) — IP адрес из списка источников пакета (список составляется на вкладке IP -> Firewall -> Address List).
- Dst. Address List (вкладка Advanced) — IP адрес из списка получателей пакета (список составляется на вкладке IP -> Firewall -> Address List).
Все параметры, кроме параметра Chain, заполняются по необходимости для более точной фильтрации пакета. Что бы пакет попал под действие правила все указанные условия должны совпасть!
В результате, если обрабатываемый пакет подпадает под условия правила, с этим пакетом выполняются указанные в настройке действия (Actions). Основные действия при обработке:
- Accept — Обрабатываемый пакет считается доверенным и принимается для дальнейшей обработки устройством.
- Drop — Пакет считается не желательным и удаляется.
- Reject — Пакет считается не желательным и отбрасывается, но в отличии от предыдущего пункта, в ответ отсылается сообщение с причиной удаления. Это сделано для того, чтобы ускорить обработку запросов клиентом, т.к. если к пакету применить действие Drop, то клиент будет ожидать ответ до таймаута.
Примеры защиты устройств
Пример #1. Классический пример защиты домашнего роутера. На маршрутизаторе будет разрешен весь трафик для маршрутизатора и устройств в локальной сети выходящих через этот маршрутизатор в сеть интернет, кроме входящего трафика, не относящегося к Established и Related. Это означает, что если маршрутизатор или устройство в локальной сети установило соединение с ресурсом в сети интернет, например, зайти на сайт поисковика, то ответный трафик с сервера будет пропускаться, а весь остальной трафик из интернета будет блокироваться.
Необходимо создать два правила, первое для цепочки input, второе для цепочки forward, т.к. первая цепочка означает трафик, приходящий не посредственно на это устройство, вторая цепочка означает проходящий через роутер трафик. На вкладке General в поле Chain (цепочка) указываем Input (входящий трафик), в поле In Interface выбираем интерфейс, к которому подключен провод провайдера, в разделе Connection State выбираем Established, Related и в квадрате в начале поля ставим восклицательный знак нажав на него, это означает логическое НЕ, запись будет читаться как пакеты НЕ Established и НЕ Related. Другими словами, всё кроме выбранного.
На вкладке Action в поле Action выбираем Drop.
Создаем такое же правило для цепочки Forward. Что бы не заполнять все поля заново, дважды нажимаем на созданном правиле, в открывшемся окне нажимаем кнопку Copy, в открывшемся новом окне в поле Chain меняем input на forward. Нажимаем в обоих окнах кнопки OK, в списке Filter Rules появится два запрещающих правила.
В командной строке правила будут выглядеть так:
/ip firewall filter add chain=input in-interface=ether1-wan-main connection-state=!established,related action=drop /ip firewall filter add chain=forward in-interface=ether1-wan-main connection-state=!established,related action=drop
Пример #2. У нас firewall настроен как в примере #1, но нам необходимо чтобы устройство было доступно по протоколу ICMP (можно было проверить доступность устройства с помощью команды ping) откуда угодно.
Наш firewall работает по схеме разрешено всё кроме того, что запрещено, то, из локальной сети доступ к устройству не ограничен, а из внешней сети доступ ограничивают правила из примера #1. Что бы реализовать доступ к устройству из сети интернет все правила, связанные с этим должны в списке правил располагаться выше запрещающего.
Создаем новое правило для цепочки input, т.к. в данном случае доступ разрешается к этому устройству (маршрутизатору), в поле Protocol выставляем icmp, в поле In. Interface выбирается интерфейс, к которому подключен провод провайдера.
На вкладке Action выбираем accept.
Добавление правила из командной строки будет выглядеть так:
/ip firewall filter add chain=input protocol=icmp in-interface=ether1-wan-main action=accept
После нажатия кнопки OK правило добавится в самый низ таблицы, перетаскиваем его выше запрещающих правил захватив мышкой.
Пример #3. Firewall настроен как в примерах #1 и #2. Необходимо разрешить доступ RDP (порт 3389) к одному из компьютеров в локальной сети с определенного (доверенного) IP адреса, настройки NAT опускаем, рассматриваем только фильтрацию.
Как и в предыдущем примере разрешающее правило должно располагаться выше запрещающих ввиду того, что запрещающие правила блокируют доступ из внешней сети.
Создаем новое правило для цепочки forward, т.к. устройство находится за маршрутизатором, в поле Src. Address вносим IP адрес с которого разрешен доступ, в поле Protocol выставляем 6(tcp), в поле Dst. Port пишем 3389 (порт RDP по умолчанию) в поле In. Interface выбирается интерфейс, к которому подключен провод провайдера.
На вкладке Action выбираем accept, нажимаем OK и перемещаем правило выше запрещающих.
Напоминаю, что здесь мы рассматриваем только фильтрацию трафика, настройки NAT опущены.
В командной строке добавление правила будет выглядеть следующим образом:
/ip firewall filter add chain=forward src-address=8.8.8.8 protocol=tcp dst-port=3389 in-interface=ether1-wan-main action=accept
Пример #4. Необходимо настроить firewall по схеме #2 (запрещено всё, что не разрешено), при этом необходимо что бы ходил трафик локальной сети от маршрутизатора и обратно, был доступ к маршрутизатору из вне по списку определенных IP и в сеть интернет был доступ только с определенных IP адресов локальной сети.
Что бы запретить весь трафик в firewall в конец списка правил необходимо добавить три запрещающих правила для трех стандартных цепочек: input, output и forward. Но! Прежде чем их добавить необходимо позаботиться о разрешающих правилах, чтобы как минимум не потерять доступ к устройству.
- Разрешаем доступ к маршрутизатору для локальной сети и обратно.
Пусть у нас локальная сеть имеет адресацию 192.168.123.0/24, интерфейсы локальной сети объединены в бридж bridge-local-net, IP адрес маршрутизатора 192.168.123.1/32. Создаем два разрешающих правила, для входящего и исходящего трафика.
и
/ip firewall filter add chain=input src-address=192.168.123.0/24 dst-address=192.168.123.1/32 in-interface=bridge-local-net action=accept /ip firewall filter add chain=output src-address=192.168.123.1/32 dst-address=192.168.123.0/24 out-interface=bridge-local-net action=accept
- Разрешаем доступ к маршрутизатору из внешней сети для нескольких IP.
У нас есть несколько IP адресов, которым мы всецело доверяем (работа, дача, вайфайчик у любимой девушки) и с этих IP адресов мы хотим иметь доступ к нашему устройству. Создаем список с такими IP адресами в IP -> Firewall -> Address Lists назвав его WhiteList.
Создаем два разрешающих правила для цепочек input и output, соответственно указав для каждой цепочки в качестве входящего и исходящего интерфейса тот, к которому подключен провод провайдера.
На вкладке General задаем только тип цепочки и входящий/исходящий интерфейс.
На вкладке Advanced в поле Src. Address List выбираем созданный ранее список IP адресов WhiteList.
Обратное правило создается аналогично. Команды для добавления правил из терминала:/ip firewall filter add chain=input in-interface=ether1-wan-main src-address-list=WhiteList action=accept /ip firewall filter add chain=output out-interface=ether1-wan-main dst-address-list=WhiteList action=accept
-
Предоставляем доступ в сеть интернет только определенным IP адресам локальной сети. Что бы не создавать правила для каждого адреса на вкладке IP -> Firewall -> Address Lists создадим список InternetAccess.
На вкладке Filter Rules добавляем правила для доступа в интернет по созданному списку (настройки NAT в данной статье не рассматриваются, только фильтрация).
Исходящий трафик не ограничиваем, цепочку выставляем Forward, Out. Interface — WAN интерфейс.
На вкладке Advanced в поле Src. Address List выставляем созданный ранее список InternetAccess. На вкладке Action выставляем accept.
В обратном, входящем, правиле разрешаем подключения только Established и Related, цепочка, как и в предыдущем правиле, будет Forward, но WAN интерфейс мы теперь указываем в поле In. Interface.
На вкладке Advanced в поле Dst. Address List выставляем созданный ранее список InternetAccess. На вкладке Action выставляем accept.
Добавление правил из терминала:/ip firewall filter add chain=forward out-interface=ether1-wan-main src-address-list=InternetAccess action=accept /ip firewall filter add chain=forward in-interface=ether1-wan-main connection-state=established,related dst-address-list=InternetAccess action=accept
4. Предоставляем доступ во внешнюю сеть самому роутеру. Правила схожи с предыдущим примером, но делаются для цепочек Input и Output. Входящие/Исходящие адреса не указываются, т.к. со стороны роутера это будут все адреса, принадлежащие роутеру. Action = accept.
Правило для исходящего трафика:
Правило для входящего трафика, разрешаем только Established и Related:
Добавление правил из терминала:/ip firewall filter add chain=output out-interface=ether1-wan-main action=accept /ip firewall filter add chain=input in-interface=ether1-wan-main connection-state=established,related action=accept
5. Запрещаем весь трафик.
Так как считаем, что все что необходимо было разрешено ранее, то добавляем три запрещающих правила для трех цепочек: Input, Output и Forward.
Перед внесением запрещающих правил в WinBox включаем Safe Mode. Если мы что-то сделали не так и связь с устройством потеряется, то изменения автоматически будут отменены.
Вносим запрещающие правила, если после добавления правил связь не потерялась, то надо нажать на кнопку Safe Mode еще раз.
Action = drop.
Правила Output иForward
создаются аналогично, меняется только значение в поле Chain./ip firewall filter add chain=input action=drop /ip firewall filter add chain=output action=drop /ip firewall filter add chain=forward action=drop
В итоге мы должны получить список примерно такого вида:
Отладка
При возникновении проблем любое из правил можно отправить в Log, для этого в свойствах правила на вкладке Action включаем логирование и в поле Log Prefix добавляем пояснение для упрощения поиска в логах.
В разделе Log при отработке правила будут примерно такие записи:
После отладки не забываем отключать в правилах логирование.
RAW
Если посмотреть на схему прохождения пакета, то мы видим, что входящий пакет первым делом попадает в блок RAW Preroutig, а на выходе в RAW Output — это и есть первая стена Firewall, первым делом пакет проверяется здесь, далее уходит на дальнейшую обработку и попадает в раздел Filter. Получается, что, обработав пакет в RAW таблице мы потратим меньше вычислительных мощностей устройства, это может иметь весомое преимущество если, например, необходимо закрыться от DDOS атаки, пакеты будут отсеиваться уже на самом входе.
Настройка правил в RAW таблице схожа с настройкой в разделе Filter, отличия только в том, что пакет не еще прошел обработку в Connection Tracking, поэтому возможности для фильтрации меньше. В разделе Chain есть только два вида цепочек Prerouting и Output. Первый это пришедший на интерфейс пакет, второй отправляемый с интерфейса пакет, тип (Connection State) и маркировка пакета на данном этапе не доступны.
IPv6 Firewall
Настраивается в разделе IPv6 -> Firewall. Настройка схожа с firewall для IPv4, основные отличия в оперирование IPv6 адресами и отсутствии NAT. При настройке на устройстве IPv6 адресации не забываем настроить и Firewall!