«Port Knocking» на устройствах MikroTik
Пожалуйста, обратите внимание на следующую информацию перед началом использования данной инструкции по настройке технологии "Port Knocking" на устройствах MikroTik:
Опасность нарушения безопасности: применение технологии «Port Knocking» может повысить уровень безопасности вашей сети, но также может представлять определенные риски. Неверные настройки или неправильное выполнение инструкции может привести к потере доступа к вашему маршрутизатору или серьезным нарушениям в работе сети. Пожалуйста, перед выполнением каких-либо действий убедитесь, что вы полностью понимаете, что делаете, и произведите резервное копирование текущих настроек устройства.
Подготовка и обновление устройства: Убедитесь, что ваш маршрутизатор MikroTik обновлен до последней версии прошивки. Некоторые функции могут быть доступны только в последних версиях, и обновление может исправить известные уязвимости.
Ограничения технологии "Port Knocking": Несмотря на то, что технология "Port Knocking" может повысить безопасность вашей сети, она не является единственным механизмом защиты. Рекомендуется использовать ее вместе с другими методами, такими как брандмауэр, VPN, сложные пароли и системы мониторинга.
Потеря доступа: При неправильной настройке или забытом последовательности портов для "стучания" может возникнуть ситуация, когда вы потеряете доступ к маршрутизатору. Обязательно создайте план восстановления доступа в случае возникновения проблем.
Конфиденциальность: При публикации или передаче данной инструкции другим пользователям, будьте осторожны, чтобы не разглашать конфиденциальную информацию о вашей сети или оборудовании.
Ответственность: Вы несете полную ответственность за любые последствия, возникающие в результате применения данной инструкции. Автор инструкции не несет ответственности за убытки или повреждения, возникшие в результате неправильной настройки или использования технологии "Port Knocking".
При использовании данной инструкции, вы подтверждаете, что прочитали, поняли и согласны с вышеперечисленными условиями. Если вы не согласны с этими условиями, прекратите использование инструкции.
Настоятельно рекомендуется проводить настройку и тестирование технологии "Port Knocking" в контролируемой среде перед ее внедрением в живую сеть или производственную среду.
Что такое Port Knocking
Port Knocking - это метод, который позволяет скрыть открытые порты на сервере, а также скрыть сам факт существования сервера в сети. Он основывается на использовании последовательности подключений к определенным портам, которые заранее определены администратором. Если эта последовательность верна, то система открывает доступ к нужному порту.
Таким образом, Port Knocking предоставляет более высокий уровень безопасности, так как даже если злоумышленник знает номер порта, он не сможет подключиться к нему без правильной последовательности. Это позволяет защитить сервер от прямых атак и сканирования портов.
Что необходимо для настройки
Сетевое оборудование - в моем случае MikroTik RB2011 (на других моделях не тестировалось, но должно так же работать.)
Белый IP адрес
MikroTik предварительно настроен, на нем установлено интернет соединение (обязательно сделан backup конфигурации)
Данная статья описывает возможность защищенного подключения к оборудованию в локальной сети из сети интернет без использования технологии VPN. Однако стоит отметить, что если у вас есть возможность использовать технологию VPN, это более безопасный вариант и рекомендуется предпочесть его.
Описание технологии следующее. Пользователь отправляет запросы на порты IP-адреса маршрутизатора. Если пользователь отправляет запрос на нужный порт, то маршрутизатор добавляет IP-адрес пользователя в первый список. Затем в течение времени, указанного администратором при настройке, пользователь должен отправить запрос на второй порт. Если это не происходит, его IP удаляется из первого списка. Если пользователь успевает, то его IP адрес добавляется во второй список. Этот процесс продолжается для всех портов, которые указал администратор при настройке (максимально реализовывал 7 портов, но возможно использование и большего количества, вопрос целесообразности). В результате IP-адрес пользователя попадает в список, который позволяет доступ к определенному порту и перенаправляет его на устройство, которое назначил администратор.
Пример
Есть компьютер, к которому настроен RDP доступ. Я хочу подключаться к нему через интернет без использования VPN. Для этого реализуем Port Knocking, "простукивая" 3 порта.
Добавляем правило Firewall №1
На вкладке General
В строке Chain выбираем input
В строке Protocol выбираем 6 (tcp)
В строке Dst. Port указываем первый порт на который пользователь будет обращаться (в данном случае 53469)
На вкладке Action
В строке Action выбираем add src to address list
В строке Address List вводим название первой группы доступа (в данном случае hod1)
В строке Timeout вводим время в течении которого пользователь должен будет отправить запрос на второй порт (в данном случае 30 секунд)
Жмем ОК
Что происходит
Если MikroTik получает запрос на порт 53469, то он добавляет ваш внешний IP адрес в список hod1.
/ip firewall filter add action=add-src-to-address-list address-list=hod1 address-list-timeout=30s chain=input dst-port=53469 protocol=tcp
Добавляем правило Firewall №2
На вкладке General
В строке Chain выбираем input
В строке Src. Address List выбираем hod1 (если в предыдущем правиле был указан другой порт, то используем тот, который был указан ранее)
В строке Protocol выбираем 6 (tcp)
В строке Dst. Port указываем второй порт на который пользователь будет обращаться(в данном случае 17347)
На вкладке Action
В строке Action выбираем add src to address list
В строке Address List вводим название второй группы доступа (в данном случае hod2)
В строке Timeout вводим время в течении которого пользователь должен будет отправить запрос на третий порт (в данном случае 30 секунд)
Жмем ОК
Что происходит
Если MikroTik получает запрос на порт 17347 с IP адреса который уже состоит в списке hod1, то он добавляет IP адрес в список hod2.
/ip firewall filter add action=add-src-to-address-list address-list=hod2 address-list-timeout=30s chain=input dst-port=17347 protocol=tcp src-address-list=hod1
Добавляем правило Firewall №3
На вкладке General
В строке Chain выбираем input
В строке Src. Address List выбираем hod2 (если в предыдущем правиле был указан другой порт, то используем тот, который был указан ранее)
В строке Protocol выбираем 6 (tcp)
В строке Dst. Port указываем третий порт на который пользователь будет обращаться (в данном случае
)
На вкладке Action
В строке Action выбираем add src to address list
В строке Address List вводим название первой группы доступа (в данном случае hod_end)
В строке Timeout вводим время, в течении которого пользователь должен будет подключиться (в данном случае 1 час)
Жмем ОК
Что происходит
Если MikroTik получает запрос на порт 41271 с IP адреса который уже состоит в списке hod2, то он добавляет IP адрес в список hod_end.
/ip firewall filter add action=add-src-to-address-list address-list=hod_end address-list-timeout=1h chain=input dst-port=41271 protocol=tcp src-address-list=hod2
Все 3 правила необходимо расположить сразу после основных правил блокировок (а я надеюсь, что они у вас есть)
Добавляем NAT правило
На вкладке General
В строке Chain выбираем dstnat
В строке Src. Address List выбираем hod_end (если в предыдущем правиле был указан другой порт, то используем тот, который был указан ранее)
В строке Protocol выбираем 6 (tcp)
В строке Dst. Port указываем порт, на который пользователь будет обращаться для подключению к компьютеру (в данном случае 12233)
На вкладке Action
В строке Action выбираем dst-nat
В строке To Addresses вводим локальный IP адрес компьютера (в данном случае 192.168.1.10)
В строке To Ports вводим порт, на который подключаемся (в данном случае стандартный RDP 3389)
Жмем ОК
Что происходит
Если MikroTik получает запрос на порт 12233 с IP адреса, который состоит в списке hod_end, то он перенаправляет его на компьютер с IP адресом 192.168.1.10 на стандартный RDP порт 3389.
/ip firewall nat add action=dst-nat chain=dstnat dst-port=12233 protocol=tcp src-address-list=hod_end to-addresses=192.168.1.10 to-ports=3389
Данная статья написана с целью понимания основ технологии Port Knocking на базе личного опыта и материалов из интернета, изученных перед её использованием. В ходе внедрения и обслуживания технология стала более сложной и запутанной, о чем я постараюсь рассказать в следующих публикациях.
Исходники для «простукивания» портов будут выложены в отдельной статье.