четверг, 14 января 2016 г.

Port knocking Mikrotik используя Web Proxy.

  Я думаю все знают что такое port knocking, но на всякий случай напишу. Port knocking - метод внешнего открытия портов путем обращения к маршрутизатору генерируя определенные пакеты на известные открытые порты. Играет роль именно последовательность отосланных пакетов, их размер и порт на который они обращаются. Иными словами, порт является по-умолчанию закрытым, но  только до тех пор, пока на него не поступит заранее определённая последовательность пакетов данных, которая "заставит" порт открыться.
  Основная цель - предотвратить злоумышленнику сканирование вашего устройства на наличие потенциально пригодных для использования уязвимостей, делая сканирование порта.  И только из-за того, что злоумышленник не посылает правильную последовательность - защищенные порты остаются закрыты.
  Естественно, в Mikrotik такую возможность реализовать можно, в интернете по этому поводу написано много статей. Например, официальная WiKi приводит в пример эту статью. Они предлагают для доступа на ваш маршрутизатор постучать последовательно по 9000, а потом по 6000 порту для открытия доступа к маршрутизатору. Постучать можно через nmap command, установив knockd package в linux или через браузер. В других статьях описывается открытие портов через протокол icmp, используя ICMP-пакеты (пинг) разных размеров пакета в определенной последовательности. Метод довольно защищенный, но достаточно неудобен. Вообщем, использование Port knocking сводится к настройке, пару-тройку дней тестирования, и отключения, т.к. он требует дополнительных манипуляций до подключения, времени на который, как правило нет. ICMP запросы требуют командной строки или спец-по, простукивания по разным портам - аналогично. 
  Задача у меня стояла такая - сделать безопасный доступ к роутеру Mikrotik с любой точки планеты, с любого компьютера, смартфона, планшета, с любого интернета, будь то HOTSPOT в аэропорту, или любая другая сеть. Для этого был выбран сервис www-ssl.


  Настроены сертификаты, создано шифрованное безопасное соединение, которое прослушать не представляется возможным. Как создавать сертификаты и использовать www-ssl в Mikrotik я расскажу в другой статье.
  Так же, создано ряд правил, которые включают доступ к веб-интерфейсу роутера, так как изначально порт 49 у меня закрыт. Это сделано для безопасности. 
  

  /ip firewall filter
 7    ;;; add_address_list_49049
      chain=input action=add-src-to-address-list protocol=tcp
      address-list=49049 address-list-timeout=10s dst-port=49049 log=no
      log-prefix=""
 8    ;;; add_address_list_49
      chain=input action=add-src-to-address-list protocol=tcp
      src-address-list=49049 address-list=49 address-list-timeout=15m
      dst-port=49 log=no log-prefix=""
 9    ;;; accept_adr_list_49049
      chain=input action=accept protocol=tcp src-address-list=49049 dst-port=49
      log=no log-prefix=""
10    ;;; accept_adr_list_49
      chain=input action=accept protocol=tcp src-address-list=49 dst-port=49
      log=no log-prefix=""
11    ;;; drop_service_www-ssl
      chain=input action=reject reject-with=icmp-network-unreachable
      protocol=tcp dst-port=49 log=no log-prefix="" 
  Последовательность правил важна. 
  • Правило 7: при обращении на порт 49049 (это порт должен быть открыт в Mikrotik) создается адрес-лист с названием 49049 и туда заносится IP стучавшего на этот порт на 10 секунд;
  • Правило 8: при обращении IP с адрес-листа 49049 этот адрес заносится в адрес-лист 49 на 15 минут;
  • Правило 9: разрешает IP  с адрес-листа 49049 обращаться к 49 порту;
  • Правило 10: разрешает IP  с адрес-листа 49 обращаться к 49 порту;
  • Правило 11: запрещает всем IP, которые не в наших адрес-листах обращаться на порт 49.
 Стоит сказать, в идеале, после всех правил в /ip firewall filter должно стоять правило:
add action=drop chain=input
будьте с ним осторожны, убедитесь, что у вас перед ним разрешены все нужные вам подключения. 

  После этого вам нужно включить Web Proxy на порт 49049:


Добавляем запрещающее правило в Web Proxy для всех подключений:


  Сбрасываем страницу error.html через нажатие клавиши в Web Proxy Reset HTML:


И модифицируем ее до свои нужды. Эта страница будет отображаться при подключении через браузер на порт 49049 для открытия "основного" 49 порта.
  В итоге мы имеем такую схему - находясь в отъезде, если нам нужно зайти на ваш роутер, с любого компьютера или смартфона в браузере набираем в адресной строке наш адрес - http://X.X.X.X:49049/, где X.X.X.X - ваш внешний IP роутера, видим, например, такую страницу (она загрузилась с нашего веб-прокси):

Модифицированная страница error.html. Доступна для скачивания тут.
  Показ этой страницы означает, что Mikrotik "увидел" нас и открыл доступ на 10 секунд к порту 49. В течении этого времени (вы можете поставить свое) мы должны вбить в браузер строку https://X.X.X.X:49/ для доступа в веб-интерфейс роутера:

  После того, как мы подключились к веб-интерфейсу правило 8 записало нас в доверенный адрес-лист на 15 минут. Все. 15 минут у нас есть доступ к нашему маршрутизатору с этого IP.
  
  Плюсы данного метода:
  • возможно подключение с любого места;
  • визуально понятно, что роутер тебя "понял";
  • универсальность: подключение с любого устройства (даже чужого), где есть веб-браузер;
  • быстрое подключение с защитой порта;
  • защищенное соединение ssl.


  Минусы:
  • используется Web Proxy: если вы его уже используете и вам нужна страница error.html - он вам не подойдет;
  • одноэтапная защита - можно добавить еще один этап, и другой порт, но "страницы-оповещателя" уже не будет;
  • для параноиков не подойдет.

  Что еще нужно помнить:
  • сервисы вешаем на нестандартные, свободные по спецификации, порты. Список смотрим тут: Список портов TCP и UDP.
  • обычно, сканеры портов работают с первого порта до последнего, т.е. по-порядку, так как у нас используется одноэтапная защита (хоть и с интервалом 10 секунд), то порт "port knocking" должен быть больше (49049) чем тот порт, который он открывает (49), и между ними должно быть значительное расстояние. Тогда вероятность, что при сканере откроется первый, а за ним в течении 10 секунд второй - минимальна.






Подписаться на новые статьи.

Комментариев нет:

Отправить комментарий