Москва+7 (495) 103-4-103
Заказать звонок
  • Заказать звонок
  • Отложить 0 шт.
  • Сравнить 0 шт.
 03 Дек 2018    Настройка и установка оборудования , Практика и программирование , Firewall  MikroTik, firewall, Port knocking

Содержание:

1. Описание
2. “Port knocking” для MikroTik
2.1. Правила для MikroTik, основанные на “in-interface / out-interface”
2.2. Правила для MikroTik, основанные на “in-interface-list / out-interface-list”

 

1. Описание

Технология, а точнее, техника “Port knocking” или “Постукивание в порт” известна уже давно и ею пользуются многие администраторы. Она призвана повысить защищенность сетевого устройства. Благодаря данной технике доступ к устройству из интернета по всем портам по умолчанию закрыт, и открывается только тогда, когда это угодно всевыш администратору. Также данная техника повышает защищенность устройства, благодаря внесению в черный список всех IP-адресов, с которых “постучались” не правильно, либо просто попали на один из “портов-ловушек”, при сканировании открытых портов устройства.

Итак, мы имеем по умолчанию закрытый доступ к устройству, то есть новые соединения извне с устройством не устанавливаются. Но при попытке установить соединение на любой порт, мы имеем возможность отследить: с какого IP-адреса (IP источника) была попытка установить соединение, а также на какой порт (порт назначения) была попытка установить соединение. Для нашей задачи этой информации вполне достаточно. Далее, если “порт назначения” был верный, то добавляем “IP источника” в белый список. Если “порт назначения” соответствует “порту-ловушке”, то добавляем “IP источника” в черный список. Естественно, что адреса в белый список (также как и в черный список) попадают на ограниченное время. Благодаря этому доступ к открытым портам устройства разрешается только с IP-адреса, который правильно “постучался”.

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

2. “Port knocking” для MikroTik

Вся конфигурация состоит из нескольких правил файрволла в цепочке “input”, для удобства буду называть их “KNOCK-правила” (или “KNOCK-блок” правил) и все они будут находится в меню “/ip firewall filter”. Вообще, порядок правил файрволла является очень важным, для нашей задачи он следующий:

  1. Разрешающие (или запрещающие) правила цепочки “input”, а также правила “проброса” портов, которые должны выполняться несмотря на черный и белый списки.
  2. KNOCK-правила:
    1. Разрешающее правило для установленных и связанных соединений.
    2. Запрещающее правило для неверных соединений.
    3. Запрещающее правило для всех соединений с IP-адреса который в черном списке.
    4. Правило добавления в черный список IP-адреса, который попытался установить соединение на порт-ловушку.
    5. Правило добавления в белый список IP-адреса, который попытался установить соединение на “правильный” порт.
    6. Правило добавления в черный список IP-адреса, который попытался установить соединение на второй порт-ловушку.
    7. Разрешающее правило для соединений с IP-адресов из белого списка.
    8. Запрещающее правило для всех входящих соединений.

Немного пояснений:

2.1 – Разрешающие правила цепочки “input”, а также правила “проброса” портов, которые должны выполняться несмотря на черный список.

Данные правила не относятся к функционалу, который описан в данной статье. Но, если имеются правила, которые должны что-то разрешать (или запрещать), несмотря на черный и белый списки, то их нужно разместить перед “KNOCK-блок” правил.

2.1 – Разрешающее правило для установленных и связанных соединений.

Данное правило нужно для того, чтоб не разрывать соединения при окончании действия белого списка. Помните, мы заносим IP-адрес в белый список на 30 секунд. И было бы очень неудобно, если бы нам приходилось постоянно обновлять наш IP-адрес в белом списке, т.е. не забывать за этот период опять “постучатся” в порт.

2.2 – Запрещающее правило для неверных соединений.

Стандартное правило для отсечения мусора. А также соединений с неверными параметрами, которые кто-то специально отправил на устройство.

2.3 – Запрещающее правило для всех соединений с IP-адреса который в черном списке.

Тут все понятно.

2.4 и 2.6 – Правила добавления в черный список IP-адреса, который попытался установить соединение на порт-ловушку.

В данных правилах мы указываем какие порты у нас будут играть роль ловушек. На самом деле данных правил не обязательно два, их может быть и больше. Разместить их все можно как перед правилом с добавлением в белый список (2.5), так и после него. В статье такое размещение выбрано для удобства, правила добавления в списки (2.4-2.6) отсортированные по номеру порта, что немного облегчает восприятие.

2.5 – Правило добавления в белый список IP-адреса, который попытался установить соединение на “правильный” порт

Вот тут и задаем наш “правильный” порт.

2.7 – Разрешающее правило для соединений с IP-адресов из белого списка.

2.8 – Запрещающее правило для всех входящих соединений.

С этими правилами тоже все должно быть понятно.

Наши “KNOCK-правила” влияют только на входящий трафик, то есть на трафик, который предназначен для самого роутера. Поэтому расположение правил находящихся в других цепочках файрволла, не имеет особого значения, то есть они могут находится либо выше, либо ниже нашего блока “KNOCK-правил”.

Теперь непосредственно к правилам. Дело в том, что с некоторых пор Mikrotik начали использовать несколько иную концепцию правил файрвола. Если раньше использовали правила основанные на “in-nterfase/out-interfase”, то теперь правила основываются на “in-interfase-list/out-interfase-list”,  поэтому и “KNOCK-правила” должны быть добавлены соответствующие.

Как определить? Очень просто – смотрите, на чем основано правило маскарадинга на роутере, для этого нужно ввести в консоли “/ip firewall nat print where action=masquerade” и найти параметр, к которому относится входной интерфейс (входной порт) роутера. Допустим, что имя входного интерфейса у нас “ether1”.

Если мы увидим нечто такое:

”0. chain=srcnat action=masquerade out-interface=ether1″

Значит переходим к “2.1) Правила для MikroTik, основанные на “in-interface / out-interface””

А если такое:

”0. chain=srcnat action=masquerade out-interface-list=WAN”

Значит переходим к “2.2) Правила для MikroTik основанные на “in-interface-list / out-interface-list””

В winbox а также в web-интерфейсе данное правило находится в меню “ip->firewall->nat”:

 

в нем необходимо проверить, какой из двух параметров: “out-interface” или “out-interface-list” содержит название входного интерфейса.

Переходим к “2.1. Правила для MikroTik, основанные на “in-interface / out-interface””, если видим “out-interface”:

 

 

Переходим к “2.2. Правила для MikroTik основанные на “in-interface-list / out-interface-list””, если видим “out-interface-list”:

 

 

2.1. Правила для MikroTik, основанные на “in-interface / out-interface”

В данном разделе находится список правил основанных на “in-interface / out-interface”

  1. Имя входного интерфейса = “ether1”
  2. Порт-ловушка №1 = “20001”
  3. Порт для получения доступа = “20002”
  4. Порт-ловушка №2 = “20003”
/ip firewall filter
add action=accept chain=input comment="KNOCK - established, related" \
connection-state=established in-interface=ether1
add action=drop chain=input comment="KNOCK - invalid" connection-state=\
invalid in-interface=ether1
add action=drop chain=input comment="KNOCK - ISP_DENY" in-interface=\
ether1 src-address-list=ISP_DENY
add action=add-src-to-address-list address-list=ISP_DENY \
address-list-timeout=1m chain=input comment=\
"KNOCK - SRC_IP_to_DENY" dst-port=20001 in-interface=ether1 \
protocol=tcp
add action=add-src-to-address-list address-list=ISP_ACCEPT \
address-list-timeout=30s chain=input comment=\
"KNOCK - SRC_IP_to_ACCEPT" dst-port=20002 in-interface=ether1 \
protocol=tcp
add action=add-src-to-address-list address-list=ISP_DENY \
address-list-timeout=1m chain=input comment=\
"KNOCK - SRC_IP_to_DENY" dst-port=20003 in-interface=ether1 \
protocol=tcp
add action=accept chain=input comment="KNOCK - ISP_ACCEPT" \
in-interface=ether1 src-address-list=ISP_ACCEPT
add action=drop chain=input comment="KNOCK - DROP ALL" in-interface=\
ether1

2.2. Правила для MikroTik основанные на “in-interface-list / out-interface-list”

В данном разделе находится список правил основанных на “in-interface-list / out-interface-list”

  1. Порт-ловушка №1 = “20001”
  2. Порт для получения доступа = “20002”
  3. Порт-ловушка №2 = “20003”
/ip firewall filter
add action=accept chain=input comment="KNOCK - established, related" \
connection-state=established in-interface-list=WAN
add action=drop chain=input comment="KNOCK - invalid" connection-state=\
invalid in-interface-list=WAN
add action=drop chain=input comment="KNOCK - ISP_DENY" in-interface-list=\
WAN src-address-list=ISP_DENY
add action=add-src-to-address-list address-list=ISP_DENY \
address-list-timeout=1m chain=input comment=\
"KNOCK - SRC_IP_to_DENY" dst-port=20001 in-interface-list=WAN \
protocol=tcp
add action=add-src-to-address-list address-list=ISP_ACCEPT \
address-list-timeout=30s chain=input comment=\
"KNOCK - SRC_IP_to_ACCEPT" dst-port=20002 in-interface-list=WAN \
protocol=tcp
add action=add-src-to-address-list address-list=ISP_DENY \
address-list-timeout=1m chain=input comment=\
"KNOCK - SRC_IP_to_DENY" dst-port=20003 in-interface-list=WAN \
protocol=tcp
add action=accept chain=input comment="KNOCK - ISP_ACCEPT" \
in-interface-list=WAN src-address-list=ISP_ACCEPT
add action=drop chain=input comment="KNOCK - DROP ALL" in-interface-list=\
WAN

Так правила выглядят в файрволле:

 

 

Источник публикации