Что за программа ngrok

Список инструментов для тестирования на проникновение и их описание

ngrok

Описание ngrok

Программа ngrok делает доступными в Глобальной сети локальные сервисы, даже если компьютер не имеет белого IP адреса и находится за NAT и файерволами. С помощью ngrok из Интернета будет доступен любой порт на вашем локальном компьютере будет доступен через безопасный туннель. Например, вы можете сделать так, чтобы ваш локальный веб-сервер стал доступным из Интернета по прямой ссылке без дополнительной настройке.

Как работает программа

Вы загружаете и запускаете программу на вашей машине и указываете порт сетевой службы, обычно это веб-сервер.

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

Для чего подходит ngrok

  • Демонстрация веб-сайтов без развёртывания на реальном хостинге
  • Создание веб хуков на вашем компьютере для разработки ПО
  • Тестирование мобильных приложений, подключённых к локально работающему бэкэнду
  • Стабильные адреса для подключённых устройств, развёрнутых в полевых условиях
  • Запуск персональных облачных сервисов из вашего дома

Лицензия: Apache License

ngrok (пробросить локальный порт в интернет)

Справка по ngrok

ngrok КОМАНДА опции
authtoken сохранить токен аутентификации в конфигурационный файл credits печатает информацию об авторе и лицензии http запустить HTTP туннель start запустить туннели по имени из конфигурационного файла tcp запустить TCP туннель tls запустить TLS туннель update обновить ngrok до последней версии version напечатать строку с версией help Вывести список команд или справку по указанной команде

Справка по команде authtoken

authtoken сохраняет токен аутентификации в конфигурационный файл.

ngrok ТОКЕН [ОПЦИИ КОМАНДЫ] [АРГУМЕНТЫ. ]

Команда authtoken изменяет ваш файл конфигурации, чтобы записать в него указанный authtoken. По умолчанию этот файл конфигурации находится в $HOME/.ngrok2/ngrok.yml.

Для использования многих расширенных функций службы, служба ngrok.com требует, чтобы вы зарегистрировали учётную запись. Чтобы связать вашего клиента с учётной записью, он должен передать секретный токен службе ngrok.com при запуске. Вместо того, чтобы передавать этот authtoken при каждом вызове, вы можете использовать эту команду, чтобы сохранить его в файле конфигурации, чтобы ваш клиент всегда аутентифицировал вас должным образом.

ngrok authtoken BDZIXnhJt2HNWLXyQ5PM_qCaBq0W2sNFcCa0rfTZd
—config сохранить в этом конфигурационном файле, по умолчанию: ~/.ngrok2/ngrok.yml —log «false» путь до файла журнала, ‘stdout’, ‘stderr’ или ‘false’ —log-format «term» формат записи журнала: ‘term’, ‘logfmt’, ‘json’ —log-level «info» уровень подробности журнала

Справка по команде credits

ngrok. Обзорное видео. Что такое? Как установить?


credits печатает информацию об авторе и лицензировании.

ngrok credits [АРГУМЕНТЫ. ]

Отображает автора, благодарности и информацию о лицензии.

Справка по команде http

http запускает HTTP туннель.

ngrok http [ОПЦИИ КОМАНДЫ] [АРГУМЕНТЫ. ]

Конечные точки HTTPS завершают трафик TLS на сервере ngrok с помощью сертификатов ngrok.io. Затем расшифрованный HTTP-трафик направляется через безопасный туннель, а затем на ваш локальный сервер. Если вы не хотите, чтобы ваш трафик TLS заканчивался на сервере ngrok, используйте туннель TLS или TCP.

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

ngrok http 8080

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

ngrok http example.com:9000

Запрашивает имя субдомена: ‘bar.ngrok.io’:

ngrok http -subdomain=bar 80

Запрашивает туннель ‘ex.com’ (DNS CNAME):

ngrok http -hostname=ex.com 1234

Запрашивает basic аутентификацию на конечной точке тоннеля:

ngrok http -auth=’falken:joshua’ 80

Переписывает заголовок Host на ‘ex.com’:

ngrok http -host-header=ex.com 80

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

ngrok http file:///var/log

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

ngrok http https://localhost:8443
—auth включает basic аутентификацию на конечной точке туннеля, ‘ПОЛЬЗОВАТЕЛЬ:ПАРОЛЬ’ —authtoken токен ngrok.com для аутентификации пользователя —bind-tls «both» прослушивать http, https или both: true/false/both —config путь до конфигурационных файлов; если указано несколько, то они используются все —host-header установить заголовок Host; если ‘rewrite’ использовать локальный адрес в качестве имени хоста —hostname туннель хоста на произвольном имени (требует DNS CNAME) —inspect включить/отключить интроспекцию (самоанализ) http —log «false» путь до файла журнала, ‘stdout’, ‘stderr’ или ‘false’ —log-format «term» формат записи журнала: ‘term’, ‘logfmt’, ‘json’ —log-level «info» уровень журнала —region регион сервера ngrok [us, eu, au, ap, sa, jp, in] (по умолчанию: us) —subdomain разместить туннель на указанном субдомене

Справка по команде start

start запускает туннель по имени из конфигурационного файла.

ngrok start [ОПЦИИ КОМАНДЫ] [АРГУМЕНТЫ. ]

Запускает туннели по имени из файла конфигурации. Вы можете указать любое количество имён туннелей. Вы можете запустить все туннели из файла конфигурации, для этого укажите ключ —all.

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

ngrok start dev

Запустить туннели ‘web’ и ‘blog’:

ngrok start web blog

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

ngrok start —all
—all запустить все туннели из конфигурационного файла —authtoken токен ngrok.com для аутентификации пользователя —config путь до конфигурационных файлов; если указано несколько, то используются все —log «false» путь до файла журнала, ‘stdout’, ‘stderr’ или ‘false’ —log-format «term» формат записей журнала: ‘term’, ‘logfmt’, ‘json’ —log-level «info» уровень подробности журнала —none запустить без туннелей —region регион сервера ngrok [us, eu, au, ap, sa, jp, in] (по умолчанию: us)

Справка по команде tcp

tcp запускает туннель TCP.

ngrok tcp [ОПЦИИ КОМАНДЫ] [АРГУМЕНТЫ. ]

Запускает туннель, который перенаправляет весь TCP-трафик с публичного порта на локальный адрес. Это чрезвычайно полезно для предоставления сервисов, которые работают на не HTTP-трафике (ssh, sip, rdp, игровые серверы и т. д.).

Туннель TCP связывает публичный адрес на удалённом сервере ngrok. Любые службы, которым требуется стабильный публичный адрес, должны использовать параметр —remote-addr. ngrok.com требует, чтобы вы зарезервировали адрес туннеля TCP для своей учётной записи, прежде чем сможете его использовать.

Перенаправить порт на ваш локальный сервер ssh

ngrok tcp 22

Предоставить RDP-сервер по определённому общедоступному адресу, который вы зарезервировали

ngrok tcp —remote-addr=1.tcp.ngrok.io:27210 3389
—authtoken токен ngrok.com для аутентификации пользователя —config путь до конфигурационных файлов; если указано несколько, то используются все —log «false» путь до файла журнала, ‘stdout’, ‘stderr’ или ‘false’ —log-format «term» формат записей журнала: ‘term’, ‘logfmt’, ‘json’ —log-level «info» уровень подробности журнала —region регион сервера ngrok [us, eu, au, ap, sa, jp, in] (по умолчанию: us) —remote-addr привязать удалённый адрес (требуется зарезервировать адрес)

Справка по команде tls

tls запускает туннель TLS.

ngrok tls [ОПЦИИ КОМАНДЫ] [АРГУМЕНТЫ. ]

Запускает туннель для прослушивания трафика TLS через порт 443 с указанным именем хоста. Поле расширения TLS SNI (Server Name Indication) в соединении TLS проверяется, чтобы определить, к какому туннелю оно подходит.

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

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

Пересылать трафик TLS для example.com на порт 443 (требуется CNAME)

ngrok tls -hostname=example.com 443

Пересылать трафик TLS на поддомен (предупреждение о несовпадении сертификата)

ngrok tls 1234

Прервать трафик TLS для t.co перед пересылкой

ngrok tls -hostname=t.co -crt=/path/to/t.co.crt -key=/path/to/t.co.key 443
—authtoken токен ngrok.com для аутентификации пользователя —client-cas путь к центру сертификации TLS для проверки клиентских сертификатов —config путь до конфигурационных файлов; если указано несколько, то используются все —crt путь к сертификату TLS для завершения TLS —hostname туннель на произвольном имени хоста (требуется CNAME вашего DNS) —key путь к ключу TLS для завершения TLS —log «false» путь до файла журнала, ‘stdout’, ‘stderr’ или ‘false’ —log-format «term» формат записей журнала: ‘term’, ‘logfmt’, ‘json’ —log-level «info» уровень подробности журнала —region регион сервера ngrok [us, eu, au, ap, sa, jp, in] (по умолчанию: us) —subdomain хост-туннель на пользовательском поддомене

Справка по команде update

update обновляет ngrok до последней версии.

ngrok update [ОПЦИИ КОМАНДЫ] [АРГУМЕНТЫ. ]

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

Для успешного обновления двоичный файл ngrok должен находиться в каталоге, доступном для записи текущему пользователю. Если вы поместили ngrok в системный PATH, вам может потребоваться запустить его с правами root или администратора.

Обновить ngrok до последней стабильной версии:

ngrok update

Обновить ngrok до последней бета версии:

ngrok update -channel=beta
—channel «stable» канал обновлений (stable, beta) —log «false» путь до файла журнала, ‘stdout’, ‘stderr’ или ‘false’ —log-format «term» формат записей журнала: ‘term’, ‘logfmt’, ‘json’ —log-level «info» уровень подробности журнала

Справка по команде version

version — print the version string

ngrok version [arguments. ]

Руководство по ngrok

Страница man отсутствует.

Примеры запуска ngrok

Создать тоннель от сгенерированного поддомена, доступного по публичной ссылке, до локального порта 80 (веб-сервер):

ngrok http 80

Туннель на указанные ХОСТ:ПОРТ (foo.dev:80) вместо localhost:

ngrok http foo.dev:80

Сделать доступным из Глобальной сети локальный HTTPS сервер:

ngrok http https://localhost

Туннелирование произвольного TCP трафика на порт 22:

ngrok tcp 22

Создание туннеля (http) до сайта hackware.ru по протоколу https (https://hackware.ru) с заменой HTTP заголовка Host на hackware.ru (-host-header=hackware.ru):

ngrok http https://hackware.ru -host-header=hackware.ru

Установка ngrok

Установка в Kali Linux

wget `curl -s https://ngrok.com/download | grep -o -E ‘https://bin.equinox.io/c/[A-Za-z0-9]/ngrok-stable-linux-amd64.zip’` unzip ngrok-stable-linux-amd64.zip chmod +x ./ngrok ./ngrok -h

Установка в BlackArch

Программа предустановлена в BlackArch

sudo pacman -S ngrok

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

wget `curl -s https://ngrok.com/download | grep -o -E ‘https://bin.equinox.io/c/[A-Za-z0-9]/ngrok-stable-linux-amd64.zip’` unzip ngrok-stable-linux-amd64.zip chmod +x ./ngrok ./ngrok -h

Установка в Windows

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

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

cd C:UsersMiAlDownloads

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

.ngrok -h

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты ngrok

Инструкции по ngrok

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

Источник: kali.tools

Ngrok: создаём защищенный URL-адрес на локальный сервер минуя NAT и Firewall

Если вы связаны с web-разработкой, то наверняка сталкивались с проблемой ограничения доступа к localhost через Интернет.

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

Проблемы начинаются когда к локальному серверу необходим доступ из вне. Например необходимо:

  • Дать доступ заказчику, чтобы обсудить и внести мелкие правки в верстке
  • Протестировать web-приложения на мобильных устройствах
  • Интегрировать сторонний сервис требующий обработки уведомлений (webhook)

Выгружать каждый раз код на хостинг из-за небольших правок неудобно и не всегда возможно.

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

Ngrok консольный клиент, который пробрасывает защищенный туннель с локального хоста в интернет, минуя NAT и Firewall. Прост в использовании и работает в Windows, Mac и Linux.

Как это работает

Консольный клиент Ngrok подключается к облачному сервису ngrok, который выделяет url-адрес доступный через интернет и принимает на него трафик. Весь полученный трафик будет передан запущенному клиенту ngrok на вашем компьютере, а затем на локальный адрес.

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

Установка

Скачайте архив с программой для своей операционной системы с официального сайта. В нем содержится единственный исполняемый файл ngrok . Для удобства использования переместите его в директорию, которая прописана в системной переменной PATH , чтобы ngrok запускался из любого места. Я использую операционную систему Ubuntu, в моем случае это директория /usr/bin .

Откройте терминал если вы используете Linux или Mac, в Windows запустите командную оболочку CMD. Для проверки успешной установки введите команду:

ngrok version

Если вы все сделали правильно, на экране появится что-то вроде этого ngrok version 2.2.8 .

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

ngrok authtoken

На этом установка завершена, приступим к использованию.

Использование

Чтобы вывести список доступных команд, введите команду:

ngrok help

HTTP туннели

HTTP туннели с поддержкой шифрования https .

Туннель для HTTP-сервера, который слушает 80 порт:

# С указанием порта ngrok http 80 # С указанием адреса и порта ngrok http mysite.dev:80

Постоянный поддомен для туннеля:

ngrok http —subdomain=mysite mysite.dev:80

Защита туннеля паролем:

ngrok http —auth=»username:password» 80

Виртуальные хосты (XAMPP, MAMP, Vagrant, и др.). Изменение заголовка Host :

ngrok http —host-header=rewrite site.dev:80 ngrok http —host-header=site.dev 80

Расположение сервера на котором запускается туннель:

# us — United States (Ohio) # eu — Europe (Frankfurt) # ap — Asia/Pacific (Singapore) # au — Australia (Sydney) ngrok http —region=eu 80

TCP туннели

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

Туннель для SSH:

# SSH по умолчанию слушает 22 порт ngrok tcp 22

Туннель для PostgreSQL:

# PostgreSQL по умолчанию слушает 5432 порт ngrok tcp 5432

Туннель для MySQL:

# MySQL по умолчанию слушает 3306 порт ngrok tcp 3306

Конфигурационный файл

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

По умолчанию конфигурационный файл находится по адресу $HOME/.ngrok2/ngrok.yml :

  • OS X /Users/username/.ngrok2/ngrok.yml
  • Linux /home/username/.ngrok2/ngrok.yml
  • Windows C:Usersusername.ngrok2ngrok.yml

Пример конфигурационного файла:

authtoken: 7LXRBnKeQ. Y9YDP5J9t region: eu web_addr: localhost:4040 tunnels: app1: addr: 80 proto: http subdomain: app1 auth: user:secret host_header: app1.loc app2: addr: 80 proto: http host_header: app2.loc

Запуск нескольких тунеллей одновременно:

# выборочно ngrok start app1 app2 # все ngrok start —all

Инспектор трафика (web-интерфейс)

Ngrok предоставляет web-интерфейс, в котором отображаются входящие запросы и ответы вашего приложения. Пригодится при отладке API, Ajax или Webhook.

Если ngrok клиент запущен, откройте в браузере:

http://localhost:4040

Вместо вывода

Раньше мне приходилось настраивать роутер и DynDNS пока я не нашел ngrok. Надеюсь эта простая, но очень полезная программа сэкономит вам кучу времени так же как и мне!

P.S. Напишите в комментариях какие задачи решаете в web-разработке (фронтенд, бекенд, все вместе, …)? Какие технологии и языки программирования используете? Какими программами пользуетесь?

Евгений Прокопьев

Привет! Меня зовут Евгений Прокопьев. Я разрабатываю сложные web-приложения для бизнеса. В своей работе использую: PHP, Python, JavaScript, SQL, HTML, CSS и много сопутствующих технологий.

Рассылка от программиста

Подпишись и получай полезные материалы

Рассказываю о программировании и как с помощью него сделать жизнь чуточку легче

Источник: evgeniyprokopev.com

ngrok — Когда нужно прокинуть ваш сервис в Интернет

В процессе разработки бывают ситуации, когда вам необходимо показать результат другому человеку. Самое первое, что приходит на ум — это купить дешевый хост и развернуть там, но это дополнительные затраты денег и времени. Другой пример — когда вы делаете свой локальный проект и вам нужно получать запросы от внешних сервисов при интеграции.

Для данных случаев вы можете воспользоваться сервисами создания туннелей до вашего компьютера. Одним из популярных сервисов для построения туннелей до вашего компьютера является ngrok. Он безумно простой и одновременно функциональный в бесплатной версии. Сам я наткнулся на него, когда отлаживал работу платежки на PayPal.

Как работать с ngrok

Для работы нам необходимо:

  • скачать бинарный файл для вашей системы — ngrok;
  • зарегистрировать аккаунт на ngrok для получения токена;
  • удостовериться, что ваш локальный сервис запущен и ожидает HTTP запросов;
  • запустить ngrok.

Эти 5 шагов позволят получить временный домен для проверки вашего сервиса. Но давайте попробуем разобрать на примере запуска локального сервиса. Я буду запускать Nginx сервер в docker контейнере.

  • У меня Mac OS, и я воспользуюсь пакетным менеджером brew.

brew cask install ngrok

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

Imgur

  • Перейдите по вкладке Auth и скопируйте ваш токен.

Imgur

  • Запустите ваш сервис на удобном для вас порту. Я буду использовать Nginx.

docker run —name some-nginx -p 8080:80 nginx

Таким образом, я ожидаю подключения на адрес 127.0.0.1:8080 и получу стандартное сообщение от Nginx.

  • Затем запускаем ngrok.

ngrok http 8080

Где 8080 — ваш локальный порт, где запущен сервис.

В терминале будет примерно следующая картина:

Теперь, обратившись по адресу http://870eb390.ngrok.io или https://870eb390.ngrok.io, мы увидим стандартный ответ от Nginx как видели и раньше. А если открыть в браузере адрес http://localhost:4040, то можно получить доступ сервисной странице со статистикой и логом запросов.

Imgur

Таким образом, небольшой инструмент позволил получить временный домен и https адрес (иногда критично для платежных систем) для разработки. Полный набор ключей для параметризации можно почитать на странице https://ngrok.com/docs#http.

В бесплатной версии вы также можете строить TCP тоннели, если вам необходимо работать с TCP сервисами. С платными функциями вы можете познакомится на странице https://ngrok.com/pricing.

Открытые альтернативы

Если же вам ближе opensource решения, то советую взглянуть на localtunnel. Localtunnel написан на JS и очень прост в использовании.

Вам необходимо поставить npm пакет и запустить:

npm install -g localtunnel lt —port ваш порт>

Из коробки данный сервис предлагает поддомены и https соединение. Более полную информацию можете почитать на главной странице проекта localtunnel.

А если хотите узнать о других интересных инструментах из мира разработки и желаете прокачаться в JVM стеке — приходите ко мне на обучение.

Нанять Рината своим индивидуальным наставником — это сюда: Записаться к Ринату

Источник: mkdev.me

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru