Реализация перенаправления веб-трафика мобильного устройства с помощью программы SSH Tunnel | Статья в сборнике международной научной конференции

Отправьте статью сегодня! Журнал выйдет 26 октября, печатный экземпляр отправим 30 октября.

Опубликовать статью в журнале

Автор:

Рубрика: 1. Информатика и кибернетика

Опубликовано в

VI международная научная конференция «Современные тенденции технических наук» (Казань, май 2018)

Дата публикации: 13.03.2018

Статья просмотрена: 212 раз

Библиографическое описание:

Бушев, Ю. В. Реализация перенаправления веб-трафика мобильного устройства с помощью программы SSH Tunnel / Ю. В. Бушев. — Текст : непосредственный // Современные тенденции технических наук : материалы VI Междунар. науч. конф. (г. Казань, май 2018 г.). — Казань : Молодой ученый, 2018. — С. 1-4. — URL: https://moluch.ru/conf/tech/archive/300/13973/ (дата обращения: 17.10.2024).



SSH туннель — это виртуальный канал для передачи данных, базирующийся на зашифрованном SSH (Secure Shell) соединении. Он используется для организации VPN (Virtual Private Networks), а также для доступа к внутренним узлам сетевой инфраструктуры.

В статье мы рассмотрим, как при помощи программы SSH Tunnel можно настроить перенаправление Интернет трафика мобильного устройства, используя SSH сервер (1). Также, приведем примеры PAC-файлов для автоконфигурации прокси-подключения. Они определяют так называемый метод доступа: то, какой прокси-сервер должен использовать веб-браузер и другие интернет-приложения для доступа к конкретному URL-адресу.

Будем считать, что мы установили и настроили SSH сервер на операционной системе Linux (2), доступный по адресу: server9850.cloudapp.net.

Рис. 1. Экран настройки подключения

На Рис. 1 показан процесс создания и настройки нового SSH туннеля. При этом мы будем использовать метод аутентификации с закрытым ключом, так как это наиболее безопасный способ проверки пользователя на сегодняшний день.

Нам будет интересен динамический тип перенаправления портов, так как заранее мы не знаем какой ресурс понадобится пользователю. Для просмотра Интернет страниц будем использовать встроенный браузер Safari, предварительно указав локальный адрес до PAC файла в настройках Wi-Fi соединения iOS.

PAC-файл по умолчанию показана на Рис. 2. Он составлен таким образом, что абсолютно весь трафик устройства будет перенаправляться через SSH-туннель автоматически.

Рис. 2. Экран настройки PAC-файла

Основной смысл использования такого подхода заключается в том, что браузер (или операционная система) читает специальный файл, написанный на языке JavaScript, в котором определена всего одна функция:

function FindProxyForURL(url, host) {

// ...

}

где:

– url – полный URL запрашиваемого документа;

– host – имя хоста, извлекаемое из URL.

Функция возвращает строку, содержащую один или несколько способов доступа к запрашиваемому ресурсу. Формат строки может быть следующим:

– null – если строка null, то использовать прокси сервер не нужно;

– DIRECT – прямое соединение без использования прокси;

– PROXY host:port – определяет какой прокси сервер необходимо использовать;

– SOCKS host:port – определяет SOCKS сервер который необходимо использовать.

Теперь, предположим, что мы не хотим использовать перенаправление трафика для некоторых адресов, например, для yandex.ru. Для этого в начало функции FindProxyForURL добавим следующий код:

if (shExpMatch(url, "https://yandex.ru/*")) {

return "DIRECT";

}

Также, чтобы не использовать перенаправление для всех FTP серверов, добавим следующее:

if (url.substring(0, 4) === "ftp:") {

return "DIRECT";

}

Принимая во внимание тот факт, что локальные сервера (те, что входят в состав Wi-Fi сети к которой подключен девайс) недоступны через SSH сервер, необходимо создать для них специальное правило и добавить в функцию FindProxyForURL:

if (isInNet(myIpAddress(), "192.168.0.1", "255.255.255.0")) {

return "DIRECT";

}

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

if (shExpMatch(url, "*hotmail.com*")) {

return "PROXY 127.0.0.1:8080; PROXY 127.0.0.1:9090";

}

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

Для работы с IP-адресами и получения текущей конфигурации сети в рамках PAC-файла нам доступны следующие функции (3):

– isPlainHostName(host) - возвращает true, если строка host не содержит точек (".");

– dnsDomainIs(host, domain) вернет true, если domain принадлежит host;

– localHostOrDomainIs(host, hostDomain) возвращает true, если строка host (имя хоста или домена) содержится в строке hostDomain;

– isResolvable(host) возвращает true, если возможно определить IP адрес для заданной строки host;

– isInNet(host, pattern, mask) возвращает true, если IP адрес или имя хоста в строке host соответствует шаблону pattern и маске mask;

– dnsResolve(host) возвращает IP адрес для заданного host;

– myIpAddress() возвращает IP адрес устройства;

– dnsDomainLevels(host) возвращает количество точек в строке host. Другими словами, уровень домена;

– shExpMatch(str, shellExp) вернет true, если строка str соответствует регулярному выражению в строке shellExp;

– weekdayRange(wd1 [, wd2 ][, "GMT"]) вернет true, если текущая дата или дата заданная в параметре GTM, соответствует заданному дню недели или диапазону дней. Дни недели записываются в закавыченной строке из следующих вариантов (SUN|MON|TUE|WED|THU|FRI|SAT);

– dateRange([day1] [,month1] [,year1] [,day2] [,month2] [,year2] [,"GMT"]) вернет true если текущая дата или дата заданная в параметре GTM попадает в указанный диапазон. Название месяца задается закавыченной строкой из следующих вариантов (JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC);

– timeRange(hour1, minute1, second1, hour2, minute2, second2 [, "GMT"]) Позволяет правилам основываться на времени; использовать прокси-сервер в определенные часы.

Таким образом, возможность полностью задать контент PAC-файла в приложении SSH Tunnel позволяет максимально гибко и точно настроить правила для перенаправления трафика и контролировать использование прокси-серверов в зависимости от сети устройства, запрашиваемого адреса и даже времени, в которое происходит запрос.

Литература:

  1. SSH Tunnel // Tunneling & Port Forwarding. URL: https://itunes.apple.com/us/app/ssh-tunnel/id1260223542 (дата обращения: 26.02.2018).
  2. OpenSSH // OpenSSH — Wikipedia. URL: https://en.wikipedia.org/wiki/OpenSSH (дата обращения: 03.03.2018)
  3. PAC Functions // FindProxyForURL. URL: https://findproxyforurl.com (дата обращения: 10.03.2018).
Основные термины (генерируются автоматически): SSH, PROXY, GTM, SOCKS, URL, имя хоста, сервер, строка, APR, операционная система.

Похожие статьи

Реализация VGA-интерфейса на базе FPGA фирмы Altera

Контроль активности пользователей в операционных системах Linux с помощью системы Graylog SIEM

Алгоритм формирования пакетов данных для передачи по радиоканалу с использованием модифицированного байтстаффинга

Организация доступа к реляционной базе данных на основе технологии ORM с использованием паттерна Active Record

Реализация алгоритма шифрования RSA на языке программирования LabView

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

Внедрение системы мониторинга метрик в серверное приложение на Node.js

Дистанционный анализ трафика с помощью утилиты Team Viewer и программы WireShark

Разработка программного модуля для определения наличия у человека легочных заболеваний с использованием нейронной сети

Модель системы противодействия DoS-атакам методом случайного уничтожения пакетов во входном буфере

Похожие статьи

Реализация VGA-интерфейса на базе FPGA фирмы Altera

Контроль активности пользователей в операционных системах Linux с помощью системы Graylog SIEM

Алгоритм формирования пакетов данных для передачи по радиоканалу с использованием модифицированного байтстаффинга

Организация доступа к реляционной базе данных на основе технологии ORM с использованием паттерна Active Record

Реализация алгоритма шифрования RSA на языке программирования LabView

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

Внедрение системы мониторинга метрик в серверное приложение на Node.js

Дистанционный анализ трафика с помощью утилиты Team Viewer и программы WireShark

Разработка программного модуля для определения наличия у человека легочных заболеваний с использованием нейронной сети

Модель системы противодействия DoS-атакам методом случайного уничтожения пакетов во входном буфере