Тема настройки фаервола Mikrotik всплывает с прямо-таки пугающей частотой и периодичностью. Видимо, большинство юзеров либо не желает разбираться в руководствах, либо просто не может осилить основные понятия. Итак начну.
Через всю настройку фаервола красной строкой проходят несколько понятий. Например, два сокращения src и dst . Осмыслить их просто, если знать происхождение терминов.
SRC происходит от английского source - источник.
DST происходит от английского destination - назначение.
Следавательно, сразу становится ясным, на что направлено то или иное действие. Дальше сами действия. Основная масса действий производится в Filter rules. Есть три основные цепочки input, output и forward. Можно создавать дополнительные, но на начальном этапе настройки я бы не стал этим заморачиваться, можно просто запутаться.
Input - действия с пакетами, которые направляются в роутер, то есть адресованы именно на адрес роутера и дальше не пойдут.
Output - действия с пакетами, источником которых является сам роутер.
Forward - действия с пакетами, проходящими через роутер. То есть пакеты посылаются какому-то адресату от какого-то адресата и через роутер проходят по пути следования.
На начальном этапе нужно стремится произвести минимальное количество действий (правил) . Каждое правило нужно обдумать, прежде, чем его запустить в работу.
У фаервола Mikrotik первоначально при отсутствии правил в Filter rules разрешено всё.
Правила начинают работать от первого к последнему. Поэтому сначала размещаем те правила, которые регулируют деятельность вашей сети, а самыми последними ставим правила, которые запрещают всё остальное.
Есть изначальный набор правил, который советуют знающие люди на различных ресурсах. Количество правил в нем всегда колеблется, но смысл остается одним - необходимо разрешить определенные правила для нормального функционирования интернет-соединений роутера и оборудования за ним. Я приведу примерный набор, которым пользуюсь сам.
Сначала надо разрешить пинг как роутера, так и оборудования за ним:
/ip firewall filter add chain=input protocol=icmp action=accept comment=”Allow Ping Mikrotik”
/ip firewall filter add chain=forward protocol=icmp action=accept comment=”Allow Ping My Network"
Далее у меня стоит запрещающее правило для дропа флуда на 53 порту. Дело в том, что в сети моего провайдера с этим просто беда и без данного правила входящие запросы грузят роутер практически на всю катушку:
/ip firewall filter add chain=input action=drop protocol=udp in-interface=ether2 dst-port=53 comment="Drop flood on port 53"
Далее надо разрешить успешно установленные соединений:
/ip firewall filter add chain=input connection-state=established action=accept comment=”Accept established connections Mikrotik”
/ip firewall filter add chain=forward connection-state=established action=accept comment=”Accept established connections My Network”
родственные соединения:
/ip firewall filter add chain=input connection-state=related action=accept comment=”Accept related connections Mikrotik”"
/ip firewall filter add chain=forward connection-state=related action=accept comment=”Accept related connections My Network”
Запрещаем недействительные соединения:
/ip firewall filter add chain=input connection-state=invalid action=drop comment=”Drop invalid connections Mikrotik”
/ip firewall filter add chain=forward connection-state=invalid action=drop ”Drop invalid connections My Network”
Разрешаем входящие соединения на роутер из нашей локалки (можно разрешить только какому-то адрес-листу, или, по аналогии, разрешить соединение из внешней сети с определенных адресов):
ip firewall filter add chain=input src-address=192.168.0.0/24 action=accept comment="Access to router only from My Network"
Следующим шагом будет тот комплект правил, который разрешает выход в интернет компьютерам моей сети. Какие порты открывать, личное дело каждого, как правило обязательными считаются 80, 443. Это очень минимальный набор. Для каждой работы программы, требующей интернет-соединения, необходимы соединения по определенным протоколам и портам. Узнавать, какие протоколы и порты нужны той или иной программе лучше сайте производителя. Предположим, что я решил открыть минимальный набор портов 80, 443 для tcp и все соединения по udp:
/ip firewall filter add chain=input protocol=udp action=accept comment=”Allow UDP Mikrotik”
/ip firewall filter add chain=forward protocol=udp action=accept comment=”Allow UDP My Network
/ip firewall filter add chain=forward src-address=192.168.0.0/24 src-port=80,443 protocol=tcp action=accept comment="Minimum access"
/ip firewall filter add chain=forward dst-address=192.168.0.0/24 dst-port=80,443 protocol=tcp action=accept comment="Minimum access"
Обращаем внимание, что правил для протокола tcp пара, отдельно на исходящие и входящие соединения. Для нормального понимания проще всего попробовать прочитать правила на человеческом языке:
" Добавляем в правила фаервола разрешение на прохождение через роутер для пакетов с источника адресов 192.168.0.0/24 с портов источника 80 и 443 по протоколу tcp"
" Добавляем в правила фаервола разрешение на прохождение через роутер для пакетов с назначением в адреса 192.168.0.0/24 и в порты назначения 80 и 443 по протоколу tcp"
Можно перечислять нужные порты через запятую, или, если нужен диапазон, то ввести через дефис. Например src-port=32500-32700.
Как последний штрих, запрещаем всё, что мы не разрешили:
/ip firewall filter add chain=input action=drop comment="All other drop"
/ip firewall filter add chain=forward action=drop comment="All other drop"
Это, конечно, абсолютно гипотетическая конфигурация. В действительности, как правило, открывается много больше портов, иногда открывают просто определенные протоколы без перечисления портов. Но сам принцип написания правил именно таков.
Определенную трудность для начинающих представляет так же проброс портов через Nat к определенному адресу (например для торрентов). В этом случае открывать порты следует не в forward, как казалось бы, а в цепочке input и dst-address будет адресом роутера. Предварительно следует выполнить сам проброс на вкладке /ip firewall nat.
Пример:
Внешний адрес роутера 78.5.48.122
Внутренний адрес машины с торрен-клиентом: 192.168.0.15
Нужно пробросить порт 26897
/ip firewall nat
add action=dst-nat chain=dstnat comment="Torrent-client" dst-address=78.5.48.122 dst-port=23815 protocol=tcp
to-addresses=192.168.0.15 to-ports=26897
/ip fireawll filter add chain=input dst-address=78.5.48.122 dst-port=26897 action=accept