UMGUM.COM (лучше) 

Простейший фильтр на MikroTik (CLI) ( Формируем простейший набор правил защитного экрана маршрутизатора "MikroTik". )

6 января 2015  (обновлено 28 января 2019)

OS: "RouterOS v5/6".

Задача: сформировать простейший набор правил защитного экрана маршрутизатора "MikroTik".

Предварительная проверка состояния "Firewall".

Прежде всего в обязательном порядке необходимо ознакомиться с действующим набором правил, дабы не навредить уже налаженной работе.

Просматриваем правила основной таблицы "filter", с цепями обработки входящего, транзитного и исходящего трафика:

> /ip firewall filter print

Просматриваем правила таблиц расширенной обработки (здесь мы их не затрагиваем, но для полноты картины знать все пути пакетов необходимо):

> /ip firewall nat print
> /ip firewall mangle print

У каждого правила есть порядковый номер, исчисление которого начинается с нуля. Правила отрабатываются по очереди, в порядке по возрастанию номера. Если потребуется вставить правило перед уже имеющимся - следует использовать опцию "place-before". Важно понимать, что после каждого считывания для просмотра нумерация пересчитывается, и потому порядок место вставки вдруг может оказаться неверным - пакетными такие операции быть не должны.


Задаём простейшую конфигурацию защитного экрана.

Первым правилом разрешаем прохождение входящих и транзитных пакетов в уже установленных соединениях (исключение избыточной аналитики существенно снижает нагрузку на защитный экран):

> /ip firewall filter add action=accept chain=input connection-state=established,related comment="ALLOW ESTABLISHED,RELATED inbound"
> /ip firewall filter add action=accept chain=forward connection-state=established,related comment="ALLOW ESTABLISHED,RELATED forward"

Обрубаем входящие и транзитные соединения, не укладывающиеся в логику защитного экрана:

> /ip firewall filter add action=drop chain=input connection-state=invalid comment="DROP INVALID inbound"
> /ip firewall filter add action=drop chain=forward connection-state=invalid comment="DROP INVALID forward"

Подготовим список IP-подсетей ("bogon-сети"; RFC-1918), которые явно исключены из "зоны интернет" и запросы от их адресов не могут прийти извне на внешний сетевой интерфейс:

> /ip firewall address-list
> add address=0.0.0.0/8 disabled=no list=BOGON
> add address=10.0.0.0/8 disabled=no list=BOGON
> add address=100.64.0.0/10 disabled=no list=BOGON
> add address=127.0.0.0/8 disabled=no list=BOGON
> add address=169.254.0.0/16 disabled=no list=BOGON
> add address=172.16.0.0/12 disabled=no list=BOGON
> add address=192.0.0.0/24 disabled=no list=BOGON
> add address=192.0.2.0/24 disabled=no list=BOGON
> add address=192.88.99.0/24 disabled=no list=BOGON
> add address=192.168.0.0/16 disabled=no list=BOGON
> add address=198.18.0.0/15 disabled=no list=BOGON
> add address=198.51.100.0/24 disabled=no list=BOGON
> add address=203.0.113.0/24 disabled=no list=BOGON
> add address=224.0.0.0/4 disabled=no list=BOGON
> add address=240.0.0.0/4 disabled=no list=BOGON

Одним из первых правил отвергаем запросы от "bogon-сетей", поступающие через WAN-интерфейс:

> /ip firewall filter add action=drop chain=input in-interface=ether1-WAN1 src-address-list=BOGON comment="DROP BOGON"

Разрешаем входящие управляющие соединения SSH и Winbox:

> /ip firewall filter add action=accept chain=input connection-state=new dst-port=22,8291 protocol=tcp comment="ALLOW SSH and Winbox"

Разрешаем прохождение трафика протокола туннелирования GRE, терминированного на маршрутизаторе:

> /ip firewall filter add action=accept chain=input protocol=gre comment="ALLOW GRE protocol"

Разрешаем прохождение трафика протокола туннелирования IPSec-ESP, терминированного на маршрутизаторе:

> /ip firewall filter add action=accept chain=input protocol=ipsec-esp comment="ALLOW IPSec-ESP protocol"
> /ip firewall filter add action=accept chain=input dst-port=500,4500 protocol=udp comment="ALLOW IKE, IPSec-NAT (UDP)"

Разрешаем прохождение трафика протокола туннелирования L2TP (возможно инкапсулируемого в IPSec-ESP), терминированного на маршрутизаторе:

> /ip firewall filter add action=accept chain=input dst-port=1701 protocol=udp comment="ALLOW L2TP (UDP)"

Разрешаем прохождение управляющего трафика протокола туннелирования PPTP (требуется также разрешение GRE), терминированного на маршрутизаторе:

> /ip firewall filter add action=accept chain=input dst-port=1723 protocol=tcp comment="ALLOW PPTP control (TCP)"

Разрешаем входящие ICMP-запросы:

> /ip firewall filter add action=accept chain=input protocol=icmp comment="ALLOW ICMP"

Опционально разрешаем входящие соединения к DNS-серверу (для дальнейшего DNAT):

> /ip firewall filter add action=accept chain=input dst-address=123.45.67.92 dst-port=53 protocol=tcp comment="ALLOW DNS (TCP) inbound"
> /ip firewall filter add action=accept chain=input dst-address=123.45.67.92 dst-port=53 protocol=udp comment="ALLOW DNS (UDP) inbound"

Опционально разрешаем входящие соединения к web-серверу (для дальнейшего DNAT):

> /ip firewall filter add action=accept chain=input dst-address=123.45.67.93 dst-port=80,443  protocol=tcp comment="ALLOW HTTP,HTTPS inbound"

Опционально разрешаем входящие соединения к mail-серверу (для дальнейшего DNAT):

> /ip firewall filter add action=accept chain=input dst-address=123.45.67.93 dst-port=25,465,587,143,993,110,995 protocol=tcp comment="ALLOW SMTP,IMAP,POP3 inbound"

Опционально разрешаем SNMP-мониторинг (ограничив источник запроса опцией "src-address"):

> /ip firewall filter add action=accept chain=input src-address=123.45.67.89 protocol=udp dst-port=161,162 comment="ALLOW SNMP inbound"

Опционально разрешаем трафик, предназначенный для дальнейшего DNAT (например в RDP:3389):

> /ip firewall filter add action=accept chain=input dst-port=38390 protocol=tcp comment="ALLOW RDP inbound"

Удаляем ненужное правило, если это потребуется (где "X" - порядковый номер правила в таблице):

> /ip firewall filter print
> /ip firewall filter remove numbers=X

Можно не удалять правило, а деактивировать его - тогда, при необходимости, его можно будет быстро включить в работу без возни с подбором параметров:

> /ip firewall filter disable numbers=X

Финализирующее запретительное правило.

Обращаю внимание, сейчас мы сделаем важный и небезопасный шаг - запретим всё, что не разрешили ранее. Трижды перепроверьте логику обработки входящего трафика и удостоверьтесь, что не зарубите себе вход на устройство, а пользователям доступ к производственным сервисам.

Завершающим правилом блокируем все новые соединения извне (через внешний интерфейс):

> /ip firewall filter add action=drop chain=input connection-state=new in-interface=ether1-WAN1 comment="DROP ALL WAN inbound"

Правила защитного экрана, как и вообще вся конфигурация в "MikroTik" сохраняются автоматически, немедленно после применения.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )