Ngrok как установить на пк

Делаем локальный сервер доступным всему интернету

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

Было бы удобней просто дать заказчику временную ссылку, которая даст доступ к проекту запущенному локально у разработчика. Для этих целей есть инструмент ngrok, как его использовать описано в этой заметке.

использовать описано в этой заметке.

Установка ngrok на Windows

ngrok доступен под все основные операционные системы, скачать его можно с https://ngrok.com/download. Под Windows доступна как установка через менеджер пакетов Chocolatey, так через скачивания zip архива.

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

Как пользоваться ngrok

Например, мы разрабатываем проект на Джанго используя тестовый сервер и хотим показать проект заказчику, как нам это сделать?

Запустим тестовый сервер python manage.py runserver , теперь проект доступен нам по адресу http://127.0.0.1:8000/

Далее в командной строке Windows перейдем в папку с ngrok.exe и выполним следующую команду:

ngrok http 8000

8000 — это порт на котором у нас запущен тестовый сервер Django.

В результате получаем такой вывод:

http://f1ff-109-63-232-90.ngrok.io/ это адрес по которому наш локальный сервер доступен в интернете.

Наш тестовый сервер будет доступен по этому адресу до тех пор, пока мы не закроем окно консоли или не нажмем в ней Ctrl + C. После этого, чтобы сервер стал доступен вновь извне с помощью ссылки, нужно заново запустить ngrok.

Попробуем перейти по полученному адресу и уже увидим страницу Джанго, осталось только убрать эту ошибку:

Для этого в файле settings.py нашего проекта поправим директиву ALLOWED_HOSTS:

Перезапускаем сервер Django и теперь все ок:

Вот таким образом мы можем продемонстрировать процесс разработки заказчику.

Заключение

Описанное выше это не все, что можно сделать с помощью ngrok, например мы можем сделать доступ извне к нашей локально запущенной Postgresql (например на порту 5432). Для этого достаточно команды:

Далее мы получим вывод с данными доступа.

Более подробно о работе с ngrok лучше читать в официальной документации https://ngrok.com/docs

Использование абстрактных моделей в Django‎

Источник

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как без белого IP локальный веб-сервер сделать доступным из Интернета

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

Это фишинговый веб-сервер должен быть доступен из Интернета, а для этого требуется публичный IP. Многие клиенты Интернет-провайдеров выходят в Интернет через NAT, а это означает, что они никак не могут сделать свой веб-сервер публичным.

  • арендовать хостинг
  • арендовать внешний IP у своего Интернет-провайдера

В данной статье я покажу, как с помощью программы ngrok можно обойтись без внешнего IP адреса.

Программа ngrok работает следующим образом:

  • её нужно запустить на своём компьютере где установлен веб-сервер и указать порт, на который она должна перенаправлять трафик (например, 80й порт)
  • ngrok связывается с облачным сервисом и генерирует вам субдомен третьего уровня
  • при поступлении подключения к этому субдомену, программа перенаправляет трафик на ваш локальный компьютер, например, на ваш локальный веб-сервр

Чтобы было понятно, посмотрим как работает ngrok на конкретном примере:

У меня на компьютере с Windows установлен веб-сервер. Кстати, программа ngrok работает на Windows, Linux, Linux ARM и некоторые других операционных системах. Мой компьютер находится как минимум на одним NAT’ом — в моём роутере не настроена проброска портов на компьютер. Но, скорее всего, мой Интернет-провайдер также использует NAT, чтобы сразу большое количество пользователей могли выходить в Интернет через 1 IP адрес. В таких условиях я никак не смогу сделать свой веб-сервер публичным, даже если настрою форвардинг портов от роутера.

Рекомендуем:  Ebmpapst r2e220 ab06 84 схема подключения

Так вот, в такой безвыходной ситуации и поможет ngrok. Чтобы мой веб-сервер стал доступным из Интернета, мне достаточно запустить такую команду:

На экране следующая информация:

Интересующие меня данные заключается в строках:

Она означает, что подключение к http://4b348924.ngrok.io и https://4b348924.ngrok.io (протоколы HTTP и HTTPS соответственно) будет перенаправлено на http://localhost:80. Проверим это: с другого компьютера (Linux), я открою ссылку https://4b348924.ngrok.io. Выведен список файлов в корневой директории веб сервера Windows:

Отрою файл i.php (у меня он имеет адрес https://4b348924.ngrok.io/i.php):

Как видим, файл выполнился на локальном сервере и показаны результаты его работы.

Вернёмся на компьютер Windows где запущены ngrok и веб-сервер:

После «HTTP Requests» показаны строки, которые запрашивал удалённый пользователь. Более подробную информацию можно просмотреть по ссылке http://127.0.0.1:4040 на которой запущен веб-интерфейс ngrok. Там можно анализировать отдельные запросы:

Или просматривать статус ngrok в целом:

Как установить ngrok

Установка ngrok в Kali Linux и в любой другой дистрибутив Linux

Установка в ngrok BlackArch

Установка ngrok в Windows

Перейдите на страницу официального сайта и скачайте ngrok для Windows: https://ngrok.com/download

Распакуйте скаченный архив, отройте командную строку и перейдите в папку с исполнимым файлом с помощью cd, например, у меня программа помещена в папку C:\Users\MiAl\Downloads\:

Для проверки выведите справку командой:

Как получить токен аутентификации ngrok (authtoken)

Программа ngrok является бесплатной, но предусматривает платные тарифы. Бесплатных состояний может быть два:

  • без регистрации
  • с регистрации

Без регистрации вы можете использовать ngrok сразу после скачивания исполнимого файла. Без регистрации вы сможете выполнить только простейшие действия, например, как приведённое выше — создать тоннель от домена третьего уровня до своего локального сервера. На самом деле, для многих этого достаточно.

С регистрацией открываются дополнительные возможности, например, можно перенаправлять трафик на 443 порт (используется протоколом HTTPS) локального или удалённого сервера.

После регистрации на странице https://dashboard.ngrok.com/auth вы найдёте свой токен аутентификации. Этот токен можно указывать при каждом запуске ngrok, но намного удобнее сохранить его в системе командой вида:

После этого токен ngrok будет сохранён в файле, и ngrok будет автоматически считывать его оттуда при каждом запуске.

Как узнать чужой IP

В качестве демонстрации применения ngrok рассмотрим пару примеров. Предположим, мне нужно узнать IP адрес пользователя, с которым я общаюсь, например, по чату или через email. Для этого мне достаточно, чтобы он зашёл на любую страницу моего веб-сервера.

На веб-сервере я делаю следующую подготовку:

1. Создаю папку hacked-accounts (допустим, предлог — ссылка в Интернете на базу данных утёкших учётных данных).

2. Создаю файл index.php с примерно следующим содержимым:

Суть работы скрипта очень проста — берутся все значения массива $_SERVER и сохраняются в файл со сгенерированным именем. Массив $_SERVER содержи HTTP заголовки и IP клиента, сделавшего запрос.

3. Дальше я просто отсылаю ссылку https://4b348924.ngrok.io/hacked-accounts/, можно добавить разные финтифлюшки в виде значений параметров https://4b348924.ngrok.io/hacked-accounts/?users=admin&sort=newest (эти «шашечки» ни на что не влияют).

При открытии этой ссылки пользователь увидит что-то вроде такого:

Но при каждой попытке открыть ссылку на веб-сервере будут создаваться новые файлы с информацией:

Пример содержимого файла:

Особый интерес представляют следующие строки:

  • HTTP_USER_AGENT (User Agent, программа, с помощью который была открыта ссылка)
  • HTTP_REFERER (с какой страницы пришёл пользователь)
  • HTTP_ACCEPT_LANGUAGE (языки, которые предпочитает User Agent пользователя)
  • HTTP_X_FORWARDED_FOR (самое важное — IP адрес здесь!)
  • QUERY_STRING (строка запроса — можно указать разные значения для разных людей, чтобы различать пришедшие запросы)

Что касается REMOTE_ADDR, то значением там всегда будет примерно «::1». В REMOTE_ADDR содержится IP адрес программы, сделавшей запрос, в данном случае запрос сделала программа ngrok, которая запущена на том же самом компьютере поэтому её IP адресом является loopback.

Как отправить файл без файлообменников и почты

Предположим, нужно переслать другому пользователю файл, но при этом не использовать файлообменники, почту или аналогичные сервисы. Это можно сделать с помощью ngrok.

Теперь выдуманная ситуация следующая — мне действительно нужно быстро и без файлообменников передать пользователю другой файл. Для этого на локальном компьютере даже не нужен веб-сервер — функции простого веб-сервера будет выполнять сам ngrok.

Для выполнения задуманного, мне нужно предоставить доступ к папке hacked-accounts-real, расположенной по пути C:\Server\data\htdocs\hacked-accounts-real\, тогда достаточно запустить следующую команду:

Обратите внимание, что перед папкой стоит строка «file:///».

При открытии вновь сгенерированной ссылки будет получен доступ ко всем файлам в указанной папке:

Прокси с ngrok

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

Рекомендуем:  Как включить подсветку на клавиатуре на ноутбуке lenovo g50

Если нужно создать туннель до веб-сайта, то если на одном IP адресе работают много сайтов, то нужно заменять присылаемый заголовок на правильный, это можно сделать опцией -host-header. В следующем примере будет создана ссылка, при переходе на которую будет открываться сайт HackWare.ru:

Команды и опции ngrok

У ngrok много других примеров использования, в том числе на бесплатном пакете. Дополнительную информацию о командах и опциях вы найдёте на странице https://kali.tools/?p=5489.

Заключение

Итак, ngrok может использоваться как замена хостингу для разовых задач. Например, если на удалённом сервере обнаружена уязвимость Удалённое выполнение кода и есть возможность запустить команду для скачивания шелла, то этот шелл нужно где-то разместить на доступном публично сервере. В качестве очень быстрого решения можно использовать ngrok + ОС, настроенная для работы через Tor.

В следующей статье будет показан более интересный пример использования ngrok в социальной инженерии.

Источник

Ngrok: понятное руководство по использованию

Знаете ли вы, как люди из другой сети могут получить управляемый доступ к локальному приложению на вашем компьютере? Допустим, вы разрабатываете сайт для клиента на своем ПК и хотите, чтобы тот просматривал его, отслеживая прогресс без необходимости размещать этот тестовый веб-ресурс в интернете (для чего нужны дополнительные заморочки типа хостинга). Что делать в такой ситуации? — спросите вы.

Собираем на дрон для штурмовиков Николаевской области. Он поможет найти и уничтожить врага

Решение есть! Мультиплатформенное программное обеспечение для туннелирования трафика под названием Ngrok.

Ngrok — инструмент разработчика, позволяющий сделать безопасный сервер, работающий на локальном компьютере (и доступный удаленно через localtunnel). Далее в нашем небольшом руководстве рассмотрим, как использовать эту полезную программу: от установки и базовой настройки, до развертывания веб-сайта на компьютере с Linux.

1. Что такое Ngrok?

Ngrok — это мощная сетевая утилита, позволяющая пользователям делиться или получать доступ к любым локально размещенным веб-приложениям через общедоступный веб-URL, предоставляемый посредством домена Ngrok.io. При этом трафик туннелируется, проходя строго через указанный порт локального хоста.

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

Ngrok будет работать на операционных системах Windows, macOS, Linux и FreeBSD. Приложение доступно для бесплатного использования (с ограниченными параметрами) и платного — с расширенным функционалом (субдомены, белый список и т. д).

Для того, чтобы начать работать с утилитой, необходимо зарегистрироваться при помощи электронной почты или учетной записи GitHub/Gmail. Мы будем использовать бесплатный тарифный план, которого будет достаточно для наглядности и реализации практических примеров.

2. Зачем его использовать?

  • Проверка поведения веб-страницы.

Давайте возьмем случай, когда произошла интеграция двух систем, одна из которых ссылается на внешнюю службу уведомлений о конкретном действии. Чтобы проверить, успешно ли завершена работа этой службы, требуется предоставить приложению доступ к общедоступному URL-адресу, а этого можно добиться с помощью Ngrok.

  • Демонстрация приложения клиенту.

Еще один важный пример использования (его мы уже вскользь упоминали), в котором Ngrok может быть полезен, — это демонстрация локально размещенного приложения клиенту. Иногда разработчику нужно показать демо-версию своего труда заказчику. Для этого необходимо создать общедоступный URL-адрес с помощью Ngrok, а затем поделиться им.

    Веб-тестирование, когда не все браузеры доступны локально.

Как разработчик, иногда вы можете захотеть протестировать свое веб-приложение в другом браузере. К примеру вы разрабатываете сайт на Mac и хотите протестировать его в браузере Internet Explorer. Этого можно достичь, используя Ngrok, создав общедоступный URL-адрес и поделившись им с пользователем IE.

3. Как установить Ngrok?

Чтобы установить утилиту на свой компьютер, нужно создать учетную запись Ngrok (для получения токена аутентификации, необходимого для успешной регистрации) .

Затем загрузите установочный пакет утилиты, выбрав из списка операционную систему, установленную на вашем целевом устройстве. В нашем случае это будет версия Ngrok для Linux.

Когда архив с файлом загрузился, необходимо извлечь его:

Далее нужно подключить учетную запись. Для этого нам понадобится уникальный токен аутентификации, который можно найти на официальном сайте Ngrok в панели управления, в разделе «Начало работы» > «Настройка и установка».

Аутентифицируемся в системе, прописав свой токен, это выглядит так:

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

Чтобы запустить Ngrok и вывести список доступных команд, выполните следующую команду в терминале или командной строке:

Чтобы запустить переадресацию HTTP-туннеля на ваш локальный порт, например, на порт 80, выполните следующую команду:

4. Безопасен ли ngrok?

Ngrok по умолчанию безопасен за счет передачи данных через защищенные туннели только на открытый вами localhost , расположенный за брандмауэрами. Инструмент не требует настройки конфигурации и поставляется со встроенным сетевым перехватчиком.

Рекомендуем:  Инструкция по эксплуатации источника бесперебойного питания apc

5. Базовые команды

Команда authtoken

Для привязки пользователя к учетной записи, система предоставляет ему секретный токен аутентификации. Мы только что пользовались этой командой. При ее использовании ваш личный токен прописывается в файле конфигурации и вам больше не придется вводить его при каждом вызове.

Команда credits

Данная команда предоставляет сведения об авторе приложения и лицензии ПО.

Команда http

Это запускает туннель, отслеживающий трафик HTTP/HTTPS с указанным именем хоста.

Примеры:

Перенаправляет субдомен ngrok.io на локальный порт 80:

Перенаправляет трафик на example.com:9000:

Разрешает доступ из интернета к локальным файлам в /var/log:

Перенаправляет на локальный сервер https:

Команда start

Запускает туннель по имени из файла конфигурации, примеры:

Запустим туннель, указанный в конфигурационном файле dev:

Запустим туннели «web» и «blog»:

Запустим все туннели, определенные в файле конфигурации:

Команда tcp

Запускает TCP-туннель, например:

Перенаправляем порт на локальный сервер ssh:

Команда tls

Запускает туннель для отслеживания TLS-трафика через порт 443. Использование этой команды рекомендуется только с параметром -hostname, например:

Перенаправляем трафик TLS для example.com на порт 443:

Другие варианты использования этой команды будут работать, но всегда будут приводить к предупреждениям о несоответствии сертификатов.

Команда update

Обновляет ngrok до последней версии, при наличии более свежих файлов по апгрейду клиента.

6. Ngrok на реальном примере

Рассмотрим практический пример использования утилиты с React-приложением.

Для работы с ним необходимо предварительно установить node.js и npm, а затем выполнить приведенные ниже команды в терминале:

Далее, создадим React-приложение при помощи команды:

В нашем случае это будет:

Переходим во вновь созданный каталог с помощью команды cd и выполняем npm start :

Запустится ваше приложение по URL-адресу: localhost:3000

Введя URL-адрес в локальном браузере, можно увидеть созданную программу, в нашем случае — это тестовый вывод логотипа React.

Это приложение доступно только на вашем компьютере и любом другом устройстве, находящемся в той же сети. Чтобы получить к нему доступ, необходимо ввести URL-адрес:

Но тут не все так просто. Представьте ситуацию, когда вы находясь в Нью-Йорке создали локальный сервер на домашнем компьютере и хотите, чтобы кто-то из Одессы получил доступ к вашему приложению. Тут такой подход не сработает, ведь вы находитесь в разных сетях! В этом случае нам и поможет Ngrok.

Мы уже знаем, что наше приложение работает на порту 3000. Мы можем туннелировать этот порт, выполнив приведенную ниже команду в каталоге, где находится исполняемый файл ngrok :

Вывод покажет вам запущенный сеанс и URL-адрес, использующийся для удаленного доступа к локальному приложению. URL-адреса (http и https формата) находятся напротив значения Forwarding , как показано ниже:

Этот URL-адрес вы отправляете вашему клиенту, чтобы тот мог получить удаленный доступ к локальному приложению. В нашем случае это будет:

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

7. Есть ли альтернатива?

Ngrok, возможно, самый простой и известный туннелирующий localhost-сервис, однако все те же функции могут выполнять и другие программы. Вот некоторые из альтернативных вариантов:

  1. Localtunnel. Токен авторизации не требуется. Довольно легко установить и использовать. Поддерживает http/https . Можно использовать через исполняемый файл node.js (пример: lt —port 3000 ). Это бесплатная утилита, поддерживающая субдомены. Работает на всех операционных системах.
  2. Serveo. Токен авторизации не требуется. Приложение можно использовать напрямую через командную строку без какой-либо установки. Поддерживает http/https, tcp . Может использоваться с исполняемым файлом или без него. Доступны как бесплатная, так и платная версии. Есть поддержка субдоменов. Поддержка всех платформ и операционок.
  3. Teleconsole. Не требует токена авторизации. HTTP/HTTPS не поддерживается напрямую, только через SSH. Это хорошая и чрезвычайно простая утилита распространяется бесплатно и с открытым исходным кодом. Не поддерживает субдомены, так как в основном используется для обмена сеансами SSH. В настоящее время может работать только на Unix и MacOS.
  4. Pagekite. Требуется однократная настройка учетной записи. Поддерживает HTTP/HTTPS, SSH и TCP. Требуется однократная настройка поддомена, привязанного к адресу электронной почты. Можно использовать при настройке туннеля. Доступны как бесплатный, так и платный варианты (пробный период на месяц). Субдомен поддерживается.

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

Для того, чтобы лучше понять принцип работы утилиты, предлагаем вашему вниманию несколько неплохих обучающих роликов по теме:

Источник