Untracked mikrotik что это
Basic Concepts
The firewall implements stateful (by utilizing connection tracking) and stateless packet filtering and thereby provides security functions that are used to manage data flow to, from, and through the router. Along with the Network Address Translation (NAT), it serves as a tool for preventing unauthorized access to directly attached networks and the router itself as well as a filter for outgoing traffic.
Network firewalls keep outside threats away from sensitive data available inside the network. Whenever different networks are joined together, there is always a threat that someone from outside of your network will break into your LAN. Such break-ins may result in private data being stolen and distributed, valuable data being altered or destroyed, or entire hard drives being erased. Firewalls are used as a means of preventing or minimizing the security risks inherent in connecting to other networks. A properly configured firewall plays a key role in efficient and secure network infrastructure deployment.
MikroTik RouterOS has a very powerful firewall implementation with features including:
How It works
RouterOS utilizes 5 sub-facilities of the firewall:
Connection states
To completely understand firewall rules, first, you have to understand various states which might apply to a particular network packet. There are five connection states in RouterOS:
Configuration Example
Let’s look at the basic firewall setup to protect the router. By default RouterOS firewall accepts everything, blocking is achieved by adding a filter rule to drop everything at the end of all rules. For out router we want to allow only ICMP, ssh, and Winbox and drop the rest:
Additional /ip firewall filter configuration examples find under the Building Your First Firewall section.
Connection Tracking
Connection tracking allows the kernel to keep track of all logical network connections or sessions, and thereby relate all of the packets which may make up that connection. NAT relies on this information to translate all related packets in the same way. Because of connection tracking, you can use stateful firewall functionality even with stateless protocols such as UDP.
A list of tracked connections can be seen in the /ip firewall connection for ipv4 and /ipv6 firewall connection for IPv6.
Based on connection table entries arrived packet can get assigned one of the connection states: new, invalid, established, related, or untracked.
There are two different methods when the packet is considered new. The first one is in the case of stateless connections (like UDP) when there is no connection entry in the connection table. The other one is in the case of a stateful protocol (TCP). In this case, a new packet that starts a new connection is always a TCP packet with an SYN flag.
If a packet is not new it can belong to either an established or related connection or not belong to any connection making it invalid. A packet with an established state, as most of you already guessed, belongs to an existing connection from the connection tracking table. A related state is very similar, except that packet belongs to a connection that is related to one of the existing connections, for example, ICMP error packets or FTP data connection packets.
Connection state notrack is a special case when RAW firewall rules are used to exclude connection from connection tracking. This one rule would make all forwarded traffic bypass the connection tracking engine speeding packet processing through the device.
Any other packet is considered invalid and in most cases should be dropped.
Based on this information we can set a basic set of filter rules to speed up packet filtering and reduce the load on the CPU by accepting established/related packets, dropping invalid packets, and working on more detailed filtering only for new packets.
Such a rule set must not be applied on routers with asymmetric routing, because asymmetrically routed packets may be considered invalid and dropped.
FastTrack
IPv4 FastTrack handler is automatically used for marked connections. Use firewall action «fasttrack-connection» to mark connections for FastTrack. Currently, only TCP and UDP connections can be actually FastTracked (even though any connection can be marked for FastTrack). IPv4 FastTrack handler supports NAT (SNAT, DNAT, or both).
Note that not all packets in a connection can be FastTracked, so it is likely to see some packets going through a slow path even though the connection is marked for FastTrack. This is the reason why fasttrack-connection is usually followed by an identical «action=accept» rule. FastTrack packets bypass firewall, connection tracking, simple queues, queue tree with parent=global, IP accounting, IPSec, hotspot universal client, VRF assignment, so it is up to the administrator to make sure FastTrack does not interfere with other configuration.
Requirements
IPv4 FastTrack is active if the following conditions are met:
Example
For example, for SOHO routers with factory default configuration, you could FastTrack all LAN traffic with this one rule placed at the top of the Firewall Filter. The same configuration accept rule is required:
Queues (except Queue Trees parented to interfaces), firewall filter, and mangle rules will not be applied for FastTracked traffic.
Services
This section lists protocols and ports used by various MikroTik RouterOS services. It helps you to determine why your MikroTik router listens to certain ports, and what you need to block/allow in case you want to prevent or grant access to certain services.
The default services are:
Property | Description |
---|---|
telnet | Telnet service |
ftp | FTP service |
www | Webfig http service |
ssh | SSH service |
www-ssl | Webfig HTTPS service |
api | API service |
winbox | Responsible for Winbox tool access, as well as Tik-App smartphone app and Dude probe |
api-ssl | API over SSL service |
Properties
Note that it is not possible to add new services, only existing service modifications are allowed.
Property | Description |
---|---|
address (IP address/netmask | IPv6/0..128; Default: ) | List of IP/IPv6 prefixes from which the service is accessible. |
certificate (name; default: none) | The name of the certificate used by a particular service. Applicable only for services that depend on certificates (www-ssl, api-ssl) |
name (name; default: none) | Service name |
port (integer: 1..65535; Default: ) | The port particular service listens on |
To restrict Winbox service access to the device only from the 192.168.88.0/24 subnet, we have to configure the following:
We recommend disabling unused services.
Address List
Firewall address lists allow a user to create lists of IP addresses grouped together under a common name. Firewall filter, Mangle, and NAT facilities can then use those address lists to match packets against them. The address list records can also be updated dynamically via the action=add-src-to-address-list or action=add-dst-to-address-list items found in NAT, Mangle, and Filter facilities.
Firewall rules with action add-src-to-address-list or add-dst-to-address-list works in passthrough mode, which means that the matched packets will be passed to the next firewall rules. A basic example of a dynamically created address-list:
Layer7-protocol
Layer7-protocol is a method of searching for patterns in ICMP/TCP/UDP streams. It collects the first 10 packets of a connection or the first 2KB of a connection and searches for the pattern in the collected data. If the pattern is not found in the collected data, the matcher stops inspecting further. Allocated memory is freed and the protocol is considered unknown. You should take into account that a lot of connections will significantly increase memory and CPU usage. To avoid this, add regular firewall matches to reduce the amount of data passed to layer-7 filters repeatedly.
An additional requirement is that the layer7 matcher must see both directions of traffic (incoming and outgoing). To satisfy this requirement l7 rules should be set in the forward chain. If a rule is set in the input/prerouting chain then the same rule must be also set in the output/postrouting chain, otherwise, the collected data may not be complete resulting in an incorrectly matched pattern.
In this example, we will use a pattern to match RDP packets.
If the Layer7 matcher recognizes the connection, then the rule marks this connection as its «own» and other rules do not look at this connection anymore even if the two firewall rules with Layer7 matcher are identical.
When a user uses HTTPS, Layer7 rules will not be able to match this traffic. Only unencrypted HTTP can be matched.
Настройка Firewall на шлюзе MikroTik
Настроить firewall на MikroTik достаточно просто, но пользователи либо не сильно много уделяют внимания этой одной из важных элементов настройки устройства, либо настраивают его неправильно, что показало большое количество взломанных устройств в 2019 году, когда была найдена уязвимость WinBox. Данная статья пытается помочь понять, как работает фильтрация трафика в MikroTik, что необходимо делать что бы защитить свои устройства, но не претендует на руководство к действию, каждый выбирает свой путь сам.
Для правильной настройки межсетевого экрана на любом устройстве необходимо понимать несколько вещей:
Схемы работы Firewall
Их две, и они применимы к любому межсетевому экрану:
В первой схеме по умолчанию на все пакеты не накладывается никаких ограничений и по необходимости блокируются только какие-то критические сервисы, например, сервисы предоставляющие удаленный доступ. По данной схеме работают большинство домашних маршрутизаторов, у которых разрешен весь трафик кроме соединений из вне, которые не были инициированы этим устройством или устройствами локальной сети, работающими через этот шлюз.
Во второй схеме все подключения по умолчанию блокируются, если необходим доступ к какому-либо сервису, то разрешаем его.
FireWall в MikroTik
Правила состоят из цепочек (Chain), в таблице Filter Rules по умолчанию три цепочки:
Помимо стандартных цепочек можно создавать пользовательские цепочки, это может быть полезно для создания блоков обработки пакетов и более наглядного его восприятия.
В настройках MikroTik есть еще одно состояние:
Создание правил в Firewall
Возможные параметры для фильтрации трафика:
В результате, если обрабатываемый пакет подпадает под условия правила, с этим пакетом выполняются указанные в настройке действия (Actions). Основные действия при обработке:
Примеры защиты устройств
В командной строке правила будут выглядеть так:
Пример #2. У нас firewall настроен как в примере #1, но нам необходимо чтобы устройство было доступно по протоколу ICMP (можно было проверить доступность устройства с помощью команды ping ) откуда угодно.
Наш firewall работает по схеме разрешено всё кроме того, что запрещено, то, из локальной сети доступ к устройству не ограничен, а из внешней сети доступ ограничивают правила из примера #1. Что бы реализовать доступ к устройству из сети интернет все правила, связанные с этим должны в списке правил располагаться выше запрещающего.
Добавление правила из командной строки будет выглядеть так:
После нажатия кнопки OK правило добавится в самый низ таблицы, перетаскиваем его выше запрещающих правил захватив мышкой.
Пример #3. Firewall настроен как в примерах #1 и #2. Необходимо разрешить доступ RDP (порт 3389) к одному из компьютеров в локальной сети с определенного (доверенного) IP адреса, настройки NAT опускаем, рассматриваем только фильтрацию.
Как и в предыдущем примере разрешающее правило должно располагаться выше запрещающих ввиду того, что запрещающие правила блокируют доступ из внешней сети.
Напоминаю, что здесь мы рассматриваем только фильтрацию трафика, настройки NAT опущены.
В командной строке добавление правила будет выглядеть следующим образом:
Пример #4. Необходимо настроить firewall по схеме #2 (запрещено всё, что не разрешено), при этом необходимо что бы ходил трафик локальной сети от маршрутизатора и обратно, был доступ к маршрутизатору из вне по списку определенных IP и в сеть интернет был доступ только с определенных IP адресов локальной сети.
Отладка
При возникновении проблем любое из правил можно отправить в Log, для этого в свойствах правила на вкладке Action включаем логирование и в поле Log Prefix добавляем пояснение для упрощения поиска в логах.
В разделе Log при отработке правила будут примерно такие записи:
После отладки не забываем отключать в правилах логирование.
IPv6 Firewall
Untracked mikrotik что это
Бесплатный чек-лист
по настройке RouterOS
на 28 пунктов
Что такое «Untracked» и прочий глоссарий для новичка
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.
1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку «Действия до настройки роутера».
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Здравствуйте все участники форума!
После мучений с DLNA на МТС-овском S1010 решил купить что-т достойное.
Поскольку по дому установлено 8 розеток RG45, плюс еще NAS DS218Play, то вместе с WAN уже 10 получается.
В общем, после тренировок на RB951Ui-2HnD, конфигурацию которого я по не знанию снес, а потом сделал с нуля, я решил и уже купил замечательный RB4011iGS+5HacQ2HnD-IN, который сейчас конфигурирую.
Много вещей мне потихоньку становятся понятными. Но на данный момент времени есть пара вопросов.
2. Что такое «Fasttrack»? И куда надо ставить правило проброса соединений такого типа?
/ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related
В настройках «из коробки» это правило идет последним, но есть мнения, что это правило нужно ставить первым.
С благодарностью приму все Ваши советы.
В общем, для увеличения скорости работы аппарата первыми правилами должны стоять
/ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related
/ip firewall filter add chain=forward action=accept connection-state=established,related
Это позволит пропускать непрямую все установленные и связанные цепочки соединений.
А потом уже, после дропа инвалидных входящих и пересланных цепочек, можно принять те входные, которые и есть те, кто по RAW не отслеживается.
/ip firewall filter add chain=input action=accepot connection-state=established,related,untracked
вот только ответьте мне, пожалуйста на вопрос. если я ставлю галочки на поля «established», «related» и «untracked», то как читает правило? Или «established» или «related» или «untracked», то есть выполнение любого из трех или все три условия должны при этом выполняться?
Если кто из вас посмотрит на это создание и даст мне свои замечания, то я буду ему очень благодарен.
Предисловие
Для кого эта статья
Если вы умеете работать с iptables, то дерзайте и настраивайте firewall, для вас в этой статье не будет ничего нового (ну разве что в таблице NAT используются цепочки с другими именами). Если вы впервые видите firewall в RouterOS и хотите получить готовый скрипт для конфигурации, то вы его здесь не найдете. Материал нацелен на тех, кто хочет получить базовое представление о том как работает firewall и что происходит с ip пакетом на разных этапах его обработки. Более глубокое понимание прейдет с опытом и решением повседневных и необычных задач с использованием пакетного фильтра.
Теоретическая часть
Что такое Layer3 Firewall
Предположим, что у вас есть роутер с выходом в интернет и двумя bridge интерфейсами: bridge-lan(ether2-ether5) и bridge-dmz(ether6-ether10).
В пределах Bridge интерфейса устройства самостоятельно находят соседей из свой подсети и обмениваются пакетами, роутер выполняет функции свича и не отслеживает такой трафик на сетевом уровне (конечно можно принудительно заставить его это делать, но про Layer2 Firewall поговорим в другой раз).
При необходимости связаться с устройством подключенного к другому bridge интерфейсу или находящемуся в глобальной сети устройства передают пакеты маршрутизатору, который определяет маршрут следования и обрабатывает их на сетевом(Layer 3) уровне.
Packet Flow Diagram
Полный путь трафика описан в Packet Flow Diagram, есть несколько официальных(v5, v6) версий, их необходимо знать и использовать в повседневной работе, но для понимания работы пакетного фильтра они перегружены, поэтому я буду объяснять на облегченном варианте.
Особенности терминологии
Изучая packet flow для iptables, можно встретить описания через «цепочки в таблицах» либо «таблицы в цепочках». На схеме представлены таблицы в цепочках, при добавлении правил в firewall все будет наоборот.
Но на самом деле пакет перемещается между блоками [цепочка+таблицы], например если вы сделайте accept в блоке [prerouting+mangle] транзитный пакет все-равно будет обработан в [forward+mangle]. Это важно помнить в сложных конфигурациях с pbr и queues.
В документации iptables есть более точные определения, но простыми словами:
Цепочки отвечают за место обработки пакета и последовательность правил.
Таблицы определяют действия, которые можно произвести над пакетом.
Базовые варианты следования пакета
Транзитный
Входящий
Исходящий
Connection Tracker
Для начала необходимо понять, что представляет из себя stateful и stateless пакетные фильтры.
Пример. Компьютер 192.168.100.10 открывает tcp соединение с сервером 192.0.2.10. На стороне клиента используется динамический порт 49149, на стороне сервера 80. Еще до получения контента клиент и сервер должны обменяться пакетами для установки tcp сессии.
В stateless потребуется открыть трафик из локальной сети в интернет и из интернета в локальную сеть (как минимум для диапазона динамических портов). Что в целом является дырой.
В stateful маршрутизатор анализирует пакеты и получив tcp syn от 192.168.100.10:49149 для 192.0.2.10:80 считает это началом нового (new) соединения. Все дальнейшие пакеты (в любом направлении) между 192.168.100.10:49149 и 192.0.2.10:80 будут считаться частью установленного (established) соединения, до закрытия tcp сессии или истечения таймеров.
Для UDP/ICMP и других видов трафика, где нельзя четко выделить начало и конец соединения, новым пакетом является первый, остальные считаются частью установленного соединения и обновляют таймеры, маршрутизатор забывает про подобные соединения по истечению таймеров.
Connection tracker делит пакеты на несколько типов:
Конфигурация Connection tracker
enabled=yes — включен.
enabled=no — отключен.
enabed=auto — отключен, пока в firewall не появится правило использующее возможности conntrack. Используется по умолчанию.
Остальные параметры являются различными таймерами и обычно не требуют тюнинга.
Администратор может просматривать и удалять соединения, например так выглядит соединение с NAT:
Использование conntrack сказывается на производительности и потреблении ресурсов (особенно при большом числе соединений), но отключить его в большинстве конфигураций не получится, т.к. у вас останется stateless firewall без NAT.
Список функций зависящих от connection tracker:
Time To Live — поле в заголовке IP пакета определяющее число маршрутизаторов через которые может пройти пакет прежде чем будет уничтожен, защищает от бесконечной пересылки пакетов при петлях маршрутизации.
При пересылке (forwarding) роутер уменьшает значение TTL на 1 отбрасывает, если TTL=0. При этом пакет с TTL=1 попадет локальному процессу роутера.
Некторые операторы связи используют трюки с TTL для пресечения использования роутеров. Все эти ограничения прекрасно обходятся увеличением значения ttl в таблице mangle.
Network Address Translation — технология изменения адресов в заголовке ip пакета. Как и в linux, NAT является частью пакетного фильтра. NAT работает на основе connection tracker.
Изначально NAT был разработан как быстрое решение проблемы исчерпания IPv4 адресов, для локальных сетей было предложено использовать подсеть из диапазонов: 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16 и транслировать их в один(или несколько) маршрутизируемых адресов. На самом деле есть еще несколько служебных подсетей, которые можно использовать в частных сетях и роутеру в принципе все-равно что и как NAT’ить, но рекомендуется следовать стандартам.
NAT обрабатывает только: tcp, udp, icmp и некоторых мультипротоколов из [IP]->[Firewall]->[Service Port]. Обрабатывается только первый (connection-state=new) пакет в соединении, оставшиеся обрабатываются автоматически без участия таблицы NAT. Это можно отследить по изменению счетчиков в правилах.
В заголовке пакета присутствует Source и Destenation address, соответственно и NAT делится на Source и Destenation NAT.
Source NAT — подмена адреса отправителя, присутствует на подавляющем большинстве домашних и корпоративных роутеров в мире.
Позволяет множеству устройств с «серыми» адресами в локальной сети общаться с интернетом используя один (или несколько) реальных адресов.
Возвращаясь к Packet Flow смотрим, что SRC-NAT находится в Postrouting, после принятия решения о маршрутизации пакета.
Ответный пакет проходит неявный DST-NAT в котором адрес получателя меняется на локальный.
Destenation NAT — подмена адреса получателя.
Применяется при необходимости переслать пакет на другой адрес, обычно используется для «проброса портов» из внешней сети в локальную.
По Packet Flow работа DST-NAT происходит до принятия решения о маршрутизации в Prerouting, присутствует неявный SRC-NAT для ответного трафика.
NAT является довольно мощным инструментом управления трафиком, но применять его стоит в последнюю очередь (когда остальные инструменты не могут помочь).
Цепочки(chains) базовые и пользовательские
Цепочки состоят из правил и форсируют логику обработки пакета.
Есть несколько базовых цепочек, отображенных на packet flow:
Prerouting(dstnat) — обработка пакета до принятия решения о маршрутизации
Input — обработка пакетов предназначеных локальным процессам маршрутизатора
Output — обработка пакетов пакетов сгенерированных локальными процессами маршрутизатора
Forward — Обработка проходящего трафика
Postrouting(srcnat) — Обработка трафика готового к передаче на интерфейс
Все как в iptables, но цепочки в nat переименованы. С чем это связано (скорее всего с hotspot или аппаратной разгрузкой nat) мне неизвестно, но в корне ничего не меняет.
Пакет проходит правила в цепочке последовательно, если он подходим по всем условиям, то к пакету применяется действие. Если действие является терминирующим и не отбрасывает пакет, то он передается в следующий блок packet flow.
У всех цепочек базовых есть действие по умолчанию (если пакет не подошел ни под одно из правил) — accept.
Пользовательские цепочки необходимы для уменьшения количества правил которые проходит каждый пакет и для построения сложных правил обработки трафика. У всех пользовательских цепочек есть действие по умолчанию — return.
В пределах таблицы можно пересылать правила из нескольких различных базовых (и пользовательских) цепочек в пользовательскую, но вернется пакет в ту цепочку из которой пришел.
Условия в правилах
Цепочки состоят из правил, каждое правило состоит из условий и действия. Условий достаточно много, но далеко не все вы будете использовать в реальных конфигурациях. Большинству условий можно поставить префикс «не» (знак «!»). Для совпадением с правилом, пакет должен подходить под все указанные условия.
Некоторые из условий:
Условие | Описание |
---|---|
src-address | Адрес источника |
dst-address | Адрес получателя |
src-address-list | Адрес источника присутствует в списке |
dst-address-list | Адрес получателя присутствует в списке |
protocol | Протокол транспортного уровня |
src-port | Порт источника |
dst-port | Порт получателя |
port | Порт источника или получателя |
in-interface | Интерфес на который пришел пакет |
out-interface | Интерфейс с которого пакет будет отправлен в сеть |
in-interface-list | Интерфес на который пришел пакет присутствует в списке |
out-interface-list | Интерфейс с которого пакет будет отправлен в сеть присутствует в списке |
layer7-protocol | Анализ содержимого первых 10 пакетов в соединениий |
content | Поиск заданной строки в пакете |
tls-host | Поиск хоста в заголовке tls |
ipsec-policy | Проверить подпадает пакет под политику ipsec или нет |
packet-size | размер пакета в байтах |
src-mac-address | mac адрес источника пакета |
connection-mark | Метка соединения |
packet-mark | Метка пакета |
routing-mark | Маршрутная метка пакета |
connection-state | Состояние пакета в соединении |
tcp-flags | Флаги tcp пакета |
icmp-options | Опции icmp пакета |
random | Правило срабатывает(при совпадении остальных условий) с заданной вероятностью |
time | Можно указать рабочее время правила, к сожалению без конктеризации даты |
ttl | Значение поля ttl в пакете |
dscp | Значение поля DSCP(ToS) в пакете |
—//— | —//— |
place-before | Консольная опция(не условие), позволяет добавить правило перед указанным |
disabled | Консольная опция(не условие), позволяет отключить правило |
Примечания
В качестве src.(dst.) address можно указывать: одиночный ip, диапазон адресов через дефис, либо подсеть.
Списки адресов необходимы для объединения под одним именем нескольких несвязанных ip. В отличии от ipset в netfilter, записи в списках MikroTik могут удаляться через заданный промежуток времени. Просмотреть списки и внести изменения можно в [IP]->[Firewall]->[Address Lists].
В качестве номера порта(port, src-port, dst-port) можно указывать одиночный порт, несколько портов через запятую, либо диапазон портов через дефис.
На последнем MUM в МСК была неплохая презентация на тему влияния различных условий на скорость обработки пакетов (там же вы узнаете как использовать таблицу raw для снижения нагрузки на роутер), кому интересно: запись и презентация.
Действия в таблицах
Набор доступных действий над пакетом, зависит от таблицы в которой он обрабатывается.
Filter — таблица фильтрации трафика, одно из двух мест, где можно отбросить пакет.
NAT — таблица модификации ip адресов и портов(tpc, udp) в заголовке ip пакета.
Mangle — таблица для модификации других полей ip пакета и установки различных меток.
Существует три типа внутренних меток пакетов: connection, packet, route. Сетки существуют только в пределах роутера и не уходят в сеть. Пакет может иметь по одной метке каждого типа, при последовательном прохождении нескольких mark-* правил метки перезаписываются.
Маршрутные метки можно ставить только в цепочках prerouting и output, остальные в любых цепочках.
Хорошей практикой считается сначала маркировать соединение (connection), а потом пакет (packet) либо маршрут (route). Проверка наличия метки происходит быстрее чем полей пакета. На практике, это не всегда так и в сложных очередях или pbr дополнительная маркировка соединения не приносит пользы.
RAW — таблица позволяющая пакетам обходить механизм трекинга соединений (connection tracker). Используется для противодействия DoS и снижения нагрузки на cpu (например исключением multicast трафика). Позволяет отбросить пакет.
Терминирующие действия завершают обработку пакета в цепочке и передают следующему блоку в packet flow, либо отбрасывают.
Таблица | Действие | Описание | Терминирующее? |
---|---|---|---|
Все | accept | Прекратить обработку пакета и передать в следующий блок Pakcet flow | Да |
Все | log | Записать в log информацию о пакете.В современных версиях можно добавить log к любому другому действию | Нет |
Все | passtrough | Посчитать число пакетов. Используется для отладки | Нет |
Все | add src to address list и add dst to address list | Добавить source (destenation) адрес из пакета в заданный список | Нет |
Все | jump | Перейти в пользовательскую цепочку | Да |
Все | return | Вернуться в родительскую цепочку. В базовых цепочках работает как accept | Да |
Filter и Raw | drop | Остановить движение пакета по packet flow и отбросить | Да |
Filter и Prerouting | fasttrack | Пометить пакет для быстрого прохождения packet flow | Да |
Filter | reject | Аналогично drop, но отправителю пакетов отправляется уведомление(tcp или icmp) о отброшенном пакете | Да |
Filter | trapit | Эмулировать наличие открытого порта. Используется для защиты от DoS, ввода в заблуждение и(иногда) отладке | Да |
NAT | src-nat | Подмена адреса отправителя на указанный | Да |
NAT | masquerade | Частный случай src-nat, подменяет адрес отправителя на один из адресов с интерфейса, используется на динамических(dhcp, vpn) интерфейсах. Не рекомендуется использовать при наличии нескольких ip на интерфейсе | Да |
NAT | same | Частный случай src-nat. Подменяет адрес отправителя на адрес из заданного диапазона | Да |
NAT | dst-nat | Подменяет адрес получателя на указанный | Да |
NAT | redirect | Частный случай dst-nat, подменяет адрес получателя на адрес интерфейса роутера на который пришел пакет | Да |
NAT | netmap | Не замена dst-nat. Применяется при трансляции сеть-в-сеть, смотрите примеры | Да |
Mangle | mark connection | Метка соединения | Нет |
Mangle | mark packet | Метка пакета, применяется в очередях | Нет |
Mangle | mark routing | Метка маршрута, применяется в Policy base routing | Нет |
Mangle | change ttl | Изменить ttl | Нет |
Mangle | change dcsp(tos) | Изменить dcsp, в десятичном виде | Нет |
Mangle | change mss | Изменить mss в tcp syn | Нет |
Mangle | clear df | Очистить флаг do not fragmet | Нет |
Mangle | strip ipv4 options | Очистить дополнительные опции ipv4 | Нет |
Mangle | set priority | Установить приоритет для CoS | Нет |
Mangle | route | Задать gateway для пакета. Простая версия PBR | Нет |
Mangle | sniff tzsp | Инкапсулировать пакеты в udp и отправить на указанный ip | Нет |
Mangle | sniff pc | Аналог tzsp, но с другим типом инкапсуляции. В wiki если примеры использования с calea | Нет |
Mangle | passtrough | По умолчанию большинство правил в mangle не останавливает прохождение пакета, можно изменить это поведение установить passtrough=no | Нет |
Raw | notrack | Не отслеживать пакет в connection tracker | Да |
Если найдутся желающие, могу написать подробнее про FastTrack и FastPath, но чудес от этих технологий ждать не стоит.
Пара слов про DPI
Существует несколько возможностей заглядывать в пакет чуть глубже заголовка транспортного уровня:
content — производит поиск заданной строки в пакете.
layer7-protocol — буферезирует первые 10 пакетов (или 2KiB) из соединения и производит поиск по regexp в буферезированных данных. Большое число layer7 правил существенно влияют на производительность.
tls-host — адрес имени хоста в заголовке TLS/SNI соединения HTTPS.
Примеры
Не копируйте примеры бездумно, лучше возбмите устройство и постарайтесь написать конфигурацию самостоятельно (или переписать примеры, но вникнуть что делает каждое из правил). Если не знаете как дополнить правила: в дефолтной и минимальной домашней конфигурациях нет доступа на роутер с wan интерфейса, добавьте его с фильтрацией по списку адресов.
Дефолтный Firewall RouterOS
Достаточно защищенная конфигурация, но местами сильно замороченая:
Никогда не использовал дефолтный конфиг, но раньше дефолтный firewall был значительно хуже.
Минимальный «домашний» firewall
Самый простой, что удалось придумать. Да в нем не разрешен untracked трафик (но на этапе базового изучения firewall он вам всеравно не нужен) и будут проблемы с туннельным ipsec (опять-же, если вы умеете настраивать ipsec, то сами знаете что необходимо сделать).
Пример с DMZ
На «домашних» роутерах аббревиатурой DMZ любят обзывать компьютер в локальной подсети для которого проброшены все порты из внешней сети.
На самом деле это не так и один из вариантов DMZ — отделение ресурса на который необходимо предоставить доступ из сети интернет и может быть проведена успешная атака (web server с cms в которых постоянно находят дыры — хорошая цель для взломщика). В случае взлома, злоумышленник не сможет повлиять на участников локальной сети.
HairPin NAT
Типичная ситуация, когда вы делайте проброс порта на сервер в локальной сети и извне все работает, а вот внутри локальной сети сервер не доступен по внешнему адресу.
Давайте разберем что происходит:
Решение — добавить дополнительное правило изменяющее адрес источника на адрес роутера, таким образом сервер вернет пакет на роутер, который отправит его на компьютер инициализатор.
На практике такую схему используют не часто, но как пример отладки firewall мне очень нравится.
Правильное использование netmap
Netmap — технология трансляции адресов из одной подсети в адреса другой подсети.
IP адрес (в записи с маской) состоит из двух частей: сетевой (число бит указанных в маске подсети) и хостовой (оставшиеся биты). Netmap изменяет сетевую часть адреса, но не трогает хостовую.
Есть два роутера соединенные VPN каналом. Роутеры обслуживают подсети с одинаковой адресацией. Необходимо сделать доступ между подсетями.
Без дополнительной адресации тут не обойтись.
Пользователи из левой подсети будут стучаться в правую через подсеть 192.168.102.0/24
Пользователи из правой подсети будут стучаться в левую через подсеть 192.168.101.0/24
Конфигурация на MikroTik 1.
Конфигурация MikroTik2 практически аналогична:
Есть более сложные конфигурации с использованием netmap, например если у вас множество подключений к удаленным точкам с пересекающимеся подсетями и нет возможности изменить настройки на удаленном оборудовании, но это уже advanced routing.
Если вы ничего не поняли (про netmap), значит оно вам не нужно и просто не используйте данное действие при пробросе портов.