Как безопасно маршрутизировать веб-трафик без VPN с использованием туннеля SOCKS

Вступление

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

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

Если все, что вам нужно для обеспечения безопасности, это просмотр веб-страниц, есть простая альтернатива: туннель прокси SOCKS 5.

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

Пока у вас есть дроплет с доступом по SSH, вы можете использовать его в качестве конечной точки прокси-сервера SOCKS. В этом уроке мы будем использовать Ubuntu 14.04 Droplet в качестве прокси и веб-браузер Firefox в качестве клиентского приложения. К концу этого урока вы сможете безопасно просматривать сайты через туннель.

Предпосылки

Как упоминалось выше, в первую очередь необходим сервер под управлением любой разновидности Linux, например Ubuntu 14.04, с https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with- SSH [доступ по SSH].

  • Развертывание сервера (в этом примере используется Ubuntu 14.04)

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

  • Firefox веб-браузер (все)

  • PuTTY (пользователи Windows)

Firefox позволяет вам установить прокси для Firefox вместо общесистемного прокси.

PuTTY используется для настройки прокси-туннеля для пользователей Windows. Пользователи Mac OS X или Linux имеют инструменты для настройки предварительно установленного туннеля.

Шаг 1 (Mac OS X / Linux) - Настройка туннеля

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

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

При настройке ключа убедитесь, что вы добавили его к авторизованным ключам для пользователя sudo на сервере (в данном примере это пользователь * sammy *).

Откройте терминальную программу на вашем компьютере. В Mac OS X это Терминал в Приложениях> Утилиты.

Настройте туннель с помощью этой команды:

ssh -D  -f -C -q -N @
  • Объяснение аргументов *

  • + -D +: сообщает SSH, что нам нужен туннель SOCKS для указанного номера порта (вы можете выбрать номер в диапазоне 1025-65536)

  • + -f +: выводит процесс на задний план

  • + -C +: сжимает данные перед отправкой

  • + -q +: использует тихий режим

  • + -N +: сообщает SSH, что после запуска туннеля команда не будет отправлена

Обязательно замените + @ + своим собственным пользователем sudo и IP-адресом сервера или именем домена.

Как только вы введете команду, вас сразу же снова переведут в командную строку без признаков успеха или неудачи; это нормально.

Убедитесь, что туннель работает и работает с этой командой:

ps aux | grep ssh

Вы должны увидеть строку в выводе, как:

Выход

sammy       0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N [email protected]

Вы можете выйти из приложения терминала, и туннель не отключится. Это потому, что мы использовали аргумент + -f +, который помещает сессию SSH в фоновый режим.

  • Примечание: * Если вы хотите завершить туннель, вам нужно захватить PID с помощью + ps + и использовать команду + kill +, которую мы покажем вам, как это сделать позже.

Шаг 1 (Windows) - Настройка туннеля

Откройте PuTTY.

Если вы еще не установили его, загрузите PuTTY и сохраните его на свое усмотрение. PuTTY не требует прав администратора для установки; Просто скачайте + .exe + и запустите его.

Выполните следующие шаги для настройки туннеля:

  1. В разделе * Session * добавьте * Имя хоста (или IP-адрес) * вашего сервера и образ SSH * Port * (обычно 22): https: //assets.digitalocean.com/articles/socks5/wXDz8J7. png [Сеансы замазки]

  2. Слева перейдите к: * Соединение> SSH> Туннели *

  3. Введите любой номер * исходного порта * в диапазоне 1025-65536. В этом примере мы использовали образ порта: https: //assets.digitalocean.com/articles/socks5/ZLPgf4V.png [Putty Connection> SSH> Tunnel]

  4. Выберите переключатель * Dynamic *

  5. Нажмите кнопку * Добавить *

  6. Вернитесь к * Сессии * слева

  7. Добавьте имя в * Сохраненные сеансы * и нажмите кнопку * Сохранить *

  8. Теперь нажмите кнопку * Open *, чтобы установить соединение

  9. Введите имя пользователя sudo и пароль сервера для входа

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

  • Совет: * Вы можете сохранить свое имя пользователя sudo (* sammy *) и ключ SSH для этого же сеанса, следуя https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with -Putty-on-Digitalocean-Droplets-Windows-пользователей [PuTTY SSH Ключ инструкции]. Тогда вам не нужно будет вводить имя пользователя и пароль каждый раз, когда вы открываете соединение.

Шаг 2 - Настройка Firefox для использования туннеля

Теперь, когда у вас есть SSH-туннель, пришло время настроить Firefox для использования этого туннеля. Помните, что для работы туннеля SOCKS 5 необходимо использовать локальное приложение, которое может использовать преимущества туннеля; Firefox делает свое дело.

Этот шаг одинаков для Windows, Mac OS X и Linux.

Убедитесь, что у вас есть * номер порта *, который вы использовали в своей команде SSH или в PuTTY, отмеченном для этого примера. Мы использовали в примере с OS X / Linux и в примере с Windows, иначе вы могли использовать другой порт.

(Следующие шаги были выполнены с Firefox версии 39, но должны работать на других версиях, хотя расположение параметров может отличаться.)

  1. В верхнем правом углу нажмите на значок гамбургера, чтобы получить доступ к меню Firefox: image: https: //assets.digitalocean.com/articles/socks5/bjh8Dh1.png [Настройки Firefox]

  2. Нажмите на значок * Настройки * или * Параметры *

  3. Перейдите в раздел * Advanced *

  4. Нажмите на изображение вкладки * Network *: https: //assets.digitalocean.com/articles/socks5/k4DKcdA.png [Дополнительные настройки Firefox]

  5. Нажмите кнопку * Настройки * под заголовком * Соединение *. Откроется новое окно

  6. Выберите переключатель для * Ручная настройка прокси: * изображение: https: //assets.digitalocean.com/articles/socks5/70cwU1N.png [Настройки прокси Firefox]

  7. Введите * localhost * для * хоста SOCKS *

  8. Введите тот же номер * порта * из вашего SSH-соединения; на изображении, которое вы видите, мы ввели ** в соответствии с инструкциями Windows

  9. Нажмите кнопку * OK *, чтобы сохранить и закрыть конфигурацию

Теперь откройте еще одну вкладку в Firefox и начните просматривать веб-страницы! Вы должны быть готовы к безопасному просмотру туннеля SSH.

  • Необязательно: * Чтобы убедиться, что вы используете прокси-сервер, вернитесь к настройкам * Network * в Firefox. Попробуйте ввести другой номер порта. Нажмите * OK *, чтобы сохранить настройки. Теперь, если вы пытаетесь просматривать веб-страницы, вы должны получить сообщение об ошибке * Прокси-сервер отказывает в подключении *. Это доказывает, что Firefox использует прокси, а не только соединение по умолчанию. Вернитесь к правильному номеру порта, и вы сможете снова просматривать.

  • Возвращение к обычному небезопасному просмотру в Firefox: *

Когда вам понадобится конфиденциальность туннеля SSH, вернитесь к настройкам прокси * Network * (* Настройки> Дополнительно> Сеть> Настройки *) в Firefox.

Нажмите кнопку с зависимой фиксацией для * Использовать системные настройки прокси * и нажмите * OK *. Firefox теперь будет просматривать ваши обычные настройки подключения, которые, скорее всего, не защищены.

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

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

Шаг 3 (Mac OS X / Linux) - закрытие туннеля

Закрытие туннеля остановит возможность Firefox просматривать прокси.

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

Чтобы завершить туннель, нам нужно идентифицировать идентификатор процесса (PID) с помощью команды + ps +, а затем уничтожить его с помощью команды + kill +.

Давайте найдем все активные процессы + ssh + на нашей машине:

ps aux |grep ssh

Найдите строку, которая выглядит как команда, которую вы ввели ранее для создания туннеля. Вот пример вывода:

Выход

sammy       0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N [email protected]

С начала строки, в одном из первых двух столбцов, находится 3-5-значное число. Это PID. Выше выделен PID образца.

Теперь, когда вы знаете, что такое PID, вы можете использовать команду + kill +, чтобы разрушить туннель. Используйте свой собственный PID, когда вы убиваете процесс.

sudo kill

Теперь, если вы хотите автоматизировать процесс подключения, перейдите к шагу 4.

Шаг 3 (Windows) - Закрытие туннеля

Закрытие туннеля остановит возможность Firefox просматривать прокси.

Закройте окно PuTTY, которое вы использовали для создания туннеля. Это оно!

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

Шаг 4 (Mac OS X / Linux) - Создание ярлыков для повторного использования

Для систем OS X или Linux мы можем создать псевдоним или сценарий, чтобы быстро создать для нас туннель. Ниже приведены два способа автоматизации туннельного процесса.

Примечание. Оба эти ярлыка требуют аутентификации SSH-ключа без пароля и пароля без пароля на сервере!

Кликабельный скрипт BASH

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

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

  • В OS X * бинарный файл Firefox, который мы можем запустить из командной строки, находится внутри + Firefox.app +. Предполагая, что приложение находится в папке Applications, бинарный файл будет найден в + / Applications / Firefox.app / Contents / MacOS / firefox +.

  • В системах Linux *, если вы установили Firefox через репозиторий или он предварительно установлен, его местоположение должно быть + / usr / bin / firefox +. Вы всегда можете использовать команду + which firefox +, чтобы узнать, где она находится в вашей системе.

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

Используя текстовый редактор, такой как + nano +, создайте новый файл:

nano ~/socks5.sh

Добавьте следующие строки:

socks5.sh

#!/bin/bash
ssh -D  -f -C -q -N
&
  • Замените ++ на желаемый номер порта (он должен совпадать с тем, что вы указали в Firefox)

  • Замените ++ вашим SSH-пользователем и именем хоста или IP

  • Замените ++ на путь к бинарному файлу Firefox

Сохраните ваш скрипт. Для nano введите + CONTROL + o +, а затем, чтобы выйти, введите + CONTROL + x +.

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

chmod +x

В OS X вам может потребоваться выполнить дополнительный шаг, чтобы сообщить Mac OS X, что файл + .sh + должен выполняться как программа, а не открываться в редакторе.

Для этого щелкните правой кнопкой мыши на файле + socks5.sh + и выберите * Получить информацию *.

Найдите раздел * Открыть с помощью: *, и если раскрывающий треугольник не направлен вниз, щелкните по нему, чтобы увидеть раскрывающееся меню. Xcode может быть установлен как приложение по умолчанию. изображение: https: //assets.digitalocean.com/articles/socks5/8TJ7dvX.png [Получить информацию]

Измените его на * Terminal.app *. Если Terminal.app нет в списке, выберите * Other *, а затем перейдите к * Applications> Utilities> Terminal.app *.

Чтобы открыть прокси-сервер SOCKS сейчас, просто дважды щелкните файл + socks.sh +.

(После выполнения сценарий не будет запрашивать пароль, поэтому он молча завершится ошибкой, если вы предварительно настроили свой SSH-ключ для запроса пароля).

Сценарий откроет окно терминала, запустит SSH-соединение и запустит Firefox. Не стесняйтесь, чтобы закрыть окно терминала. Пока вы сохраняете настройки прокси в Firefox, вы можете начать просматривать безопасное соединение.

Псевдоним командной строки

Если вы часто попадаете в командную строку и хотите открыть туннель, вы можете создать псевдоним BASH, чтобы выполнить эту работу за вас.

Самая сложная часть создания псевдонима - выяснить, где сохранить команду псевдонима.

Различные дистрибутивы Linux и релизы OS X сохраняют псевдонимы в разных местах. Лучше всего искать один из следующих файлов и искать + alias +, чтобы увидеть, где в настоящий момент сохраняются другие псевдонимы. Возможности включают

  • '+ ~ / .Bashrc + `

  • '+ ~ / .Bash_aliases`

  • '+ ~ / .Bash_profile + `

  • '+ ~ / .Profile + `

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

bashrc
alias socks5='ssh -D  -f -C -q -N  &&  &'
  • Замените ++ на желаемый номер порта (он должен совпадать с тем, что вы указали в Firefox)

  • Замените ++ вашим SSH-пользователем и именем хоста или IP

  • Замените ++ на путь к бинарному файлу Firefox

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

Теперь, когда вы печатаете:

socks5

Этот псевдоним устанавливает ваш туннель, затем запускает Firefox для вас и возвращает вас в командную строку.

Убедитесь, что Firefox по-прежнему настроен на использование прокси. Теперь вы можете безопасно просматривать!

Шаг 5 (Необязательно) - Устранение неполадок: обход брандмауэров

Если ваше соединение работает, вы можете идти дальше и можете перестать читать.

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

Если вы можете управлять настройками SSH прокси-сервера (с суперпользовательским доступом к дроплету DigitalOcean, вы сможете это сделать), вы можете настроить SSH для прослушивания через порт, отличный от 22.

Какой порт вы можете использовать, который не заблокирован?

Помимо сомнительного плана запуска сканирования портов с помощью такого инструмента, как ShieldsUP! (Сомнительно, поскольку ваша локальная сеть может рассматривать это как атаку), лучше всего попробовать порты, которые обычно остаются открытый.

Порты, которые часто открыты, включают * 80 * (общий веб-трафик) и * 443 * (веб-трафик SSL).

Если ваш SSH-сервер не обслуживает веб-контент, мы можем указать SSH использовать один из этих веб-портов для обмена данными вместо порта по умолчанию 22. * 443 * - лучший выбор, поскольку ожидается, что на этом порту будет зашифрованный трафик, а наш трафик SSH будет зашифрован.

Из не защищенного от огня местоположения SSH к дроплету DigitalOcean, который вы используете для прокси. (Или используйте встроенную console, но вы возможно, вы не захотите этого делать, если боитесь, что ваш веб-трафик отслеживается.)

Отредактируйте настройки SSH сервера:

sudo nano /etc/ssh/sshd_config

Ищите строку + Порт 22 +.

Мы можем либо полностью заменить + 22 + (что в любом случае является хорошей техникой усиления SSH), либо добавить второй порт для прослушивания SSH.

Мы выберем прослушивание SSH на нескольких портах, поэтому добавим новую строку в «+ Port 22 », которая гласит « Port 443 +». Вот пример:

sshd_config

. . .

Port 22


. . .

Перезапустите SSH, чтобы перезагрузить только что отредактированную конфигурацию SSH.

В зависимости от вашего дистрибутива имя демона SSH-сервера может отличаться, но оно может быть + ssh + или + sshd +. Если один не работает, попробуйте другой.

sudo service ssh restart

Чтобы убедиться, что ваш новый порт SSH работает, откройте новую оболочку (пока не закрывайте текущую, на случай, если вы случайно заблокировали себя) и используйте SSH при использовании нового порта.

ssh  -p 443

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

ssh -D  -f -C -q -N  -p 443

Это оно! Настройки Firefox будут точно такими же, поскольку они не зависят от порта SSH, а только от туннельного порта (см. Выше).

Заключение

Откройте туннель SOCKS 5, чтобы просматривать безопасный SSH-туннель всякий раз, когда вам нужен легкий способ получить доступ к веб-сейфу любопытными глазами.

Related