SSH тунель: Защищенное подключение к сети интернет через SOCKSv5 прокси.

Проблема:

  • Вы находитесь в кафе, где есть точка WiFi с интернетом. Вам нужно работать в интернете не опасаясь, что Ваши данные (передаваемые пароли и др.) будут перехвачены на шлюзе злоумышлеником.
  • Вы на работе, где заблокирован доступ к определенным сайтам, но Вам «ну очень нужно»)).
  • Вы  на работе, где все Ваши запросы в интернет (посещаемые страницы и сайты)  логируются, и Вас это не устраивает.

Варианты решения проблемы:

  • «Пить чай вместо»), т.е. не пользоваться таким интернетом.
  • Работать с сайтами, которые поддерживают защищенное соединение (https протокол). Сразу скажу, многими любимая vkontakte этот протокол не поддерживает.
  • Использовать VPN (virtual private network). Это отличный вариант, но это тема отдельной статьи.
  • Использовать SSH (Secure Shell) тунель. Этот вариант можно использовать, если у Вас есть доступ по ssh к какому-либо серверу с OpenSSH.
  • И другие

Конечно, должно выполняться достаточное количество условий, чтобы использовать 4й вариант (подключение по ssh):

  • Наличие ssh-клиента на рабочей станции.
  • Наличие доступа к какому-либо серверу с развернутым OpenSSH.
  • Текущий пользователь на рабочей станции должен обладать достаточными правами, чтобы запустить ssh-клиент.
  • Текущий пользователь на рабочей станции должен иметь права для открытия портов.
  • Возможность вашего браузера, клиента коротких сообщений и других необходимых программ  работать по протоколу SOCKSv5

Как это работает у меня

  • Клиент Putty, Plink, либо обычный клиент ssh для linux
  • Я занимаюсь администрированием/разработкой сайтов и доступ к ним по ssh у меня есть.
  • Так как я администратор на локальной машине, прав у меня достаточно.
  • Использую Chrome/Firefox и Pidgin

В чем суть защиты в данной ситуации?

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

Что за SSH?

Сейчас редко кто не умеет пользоваться поисковиками и wiki, но расскажу вкратце «с чем его едят».
SSH — это сетевой протокол для защиты данных при комуникации двух сетевых устройств (которыми и являются компьютеры подключенные к сети) по защищенному каналу в незащищенных сетях. Для данных целей применяются ssh-клиенты и ssh-сервер. Был разработан как замена всем известному telnet’у и другим незащищенным клиентам удаленной коммандной оболочки. Использует криптографию Открытого (Публичного) ключа (еще ее называют несимметричная криптография).
По большей мере, ssh-протокол используется для выполнения команд на удаленной машине, но обладает рядом дополнительных функций тунелирование(tunneling), перенаправление (forwarding) TCP портов и подключение X11 (система/протокол для базового GUI и чаще всего используется в Unix-подобных системах (Linux, Mac OS и др.)

Наc интересует SSH tunneling

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

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

Как это будет работать?

Мы настроим  локальный прокси SOCKSv5 используя putty/plink и сконфигурируем Google Chrome на работу через сконфигурированный прокси.
Putty — ssh и telnet клиент. Имеет графический интерфейс.
Plink — интерфейс комадной строки для бэкенда Putty.
Выберите конкретно для Вас, т.к. тут дело вкуса — командная строка ,или графический интерфейс.

!!!Если Вы пользуетесь Linux, можно установить стандартный ssh-клиент используя менеджер пакетов текущего дистрибутива  и пропустить этапы конфигурации и настройки putty/plink

Настройка прокси SOCKSv5 используя Putty (для пользователей Windows)

  • Качаем клиент по ссылке http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe, либо идем на оф.сайт и сами ищем ссылку на putty.exe (http://www.putty.org/)
  • Запускаем закачанный файл putty.exe

    Настройка сессий putty

    Настройка сессий putty

     

  • Заполняем hostname, port и выбираем Connection type — SSH (test.domain.com:22 — вашего SSH сервера). Чаще всего порт — 22. «test.domain.com» — имя Вашего сервера ssh.

    Настройка сессий putty ввод имени сервера и порта

    Настройка сессий putty ввод имени сервера и порта

  • Следуем по дереву расположеному в левой части программы ( Connection — SSH -Tunnels )

    Putty настройка тунеля ssh

    Putty настройка тунеля ssh

  • В разделе «Add new forwarded port» вписываем Source port 7070, Destination — оставляем пустым,отмечаем Auto и Dynamic
  • Жмем кнопку Add

    Putty настройка динамического порта для ssh-тунеля

    Putty настройка динамического порта для ssh-тунеля

  • Возвращаемся на ветвь дерева «Session»
  • Заполянем saved sessions любым понятным именем, для конкретного подключения и жмем кнопку Save, чтобы было возможно загрузить настройки повторно

    Настройка сессий putty ввод имени сервера и порта

    Настройка сессий putty ввод имени сервера и порта

  • Подключаемся к SSH-серверу — жмем «Open»
  • Вводим известные вам Логин и Пароль
  • Идем к разделу настройки работы клиента через прокси.

Настройка прокси SOCKSv5 используя Plink (для пользователей Windows)

  • Качаем клиент по ссылке http://the.earth.li/~sgtatham/putty/latest/x86/plink.exe, либо идем на оф.сайт и сами ищем ссылку на plink.exe) (http://www.putty.org/)
  • Сохраняем в уютное место. Для меня это usb-накопитель)
  • Заходим в командную строку — «пуск»-«выполнить…»- вводим cmd — жмем «ok»
    Запуск командной строки cmd

    Запуск командной строки cmd

    Cmd командная строка

    Cmd командная строка

  • Находим директорию с сохраненной программой и выполняем следующую команду
    plink.exe -D 7070 user@test.domain.com:22

    PLINK прокси в командной строке cmd

    PLINK прокси в командной строке cmd

  • Вводим пароль
  • Идем к разделу настройки работы клиента через прокси

Настройка прокси SOCKSv5 используя стандартный ssh-клент (для пользователей Linux)

  • Момент установки ssh-клиента для каждого дистрибутива Linux используя стандартный менеджер пакетов я упущу, но он должен быть здесь.
  • Для открытия динамического порта в командной строке вводим
    ssh -D 7070 username@test.domain.com

    SSH-клиент под linux открытие динамического порта прокси socks

    SSH-клиент под linux открытие динамического порта прокси socks

  • Идем к разделу настройки работы клиента через прокси

 Настройка клиента для работы через прокси SOCKSv5

Тут для каждой программы индивидуально.

Вот пример конфигурации Google Chrome. Все, что необходимо — это вписать нашу локальнную машину в качестве прокси сервера и указать порт 7070.

Пишем предложения и я опишу конкретный случай.

Жду комментариев.

SSH тунель: Защищенное подключение к сети интернет через SOCKSv5 прокси.: 13 комментариев

  1. прочитал вашу полезную статью, но вот мысль в конце так быстро разварачивается, что не успеваю понять. У меня на работе есть сервер, на нем поднят прокси, дома есть свой сервер, на нем поднят ссш,(centos), как мне подключится к своему серверу через прокси???
    вообщем как мне получить то, о чем вы говорите в начале статьи

    • 1. Нужно принести на работу Putty (если на работе Windows)
      2. Запустить на рабочей машине Putty
      3. Настроить его работу через рабочий прокси(раздел Connection-Proxy).
      4. Настроить любой порт (Пример 7070), по которому можно будет подключиться к Putty (раздел Connections-SSH-Tunnel)
      5. Ввести учетные данные домашнего сервера ssh (раздел session)
      6. Жмем Open

      Идем в броузер и настраиваем работу через прокси localhost:7070 (в зависимости от порта в putty) и указываем тип прокси socksv5.
      В конечном итоге, должно получиться, что броузер работает так:
      Броузер — Putty — Рабочий прокси — Домашний ssh сервер — Интернет
      )

  2. спасибо. Но хотел бы ещё услышать как заставить ssh работать через прокси если нет винды(она есть, но не везде). Может локальную переменную HTTP_PROXY указать на свой сервер?? или обязательно нужно ставить пакет какой либо для перенаправления на сокс или хттп?

    • Да, Вы правы, для ssh-клиента на Линукс дистрибутивах нужно доставлять специальную програмку «corkscrew». Вот официальная страница: http://www.agroman.net/corkscrew/
      Пробовал лично и все заработало

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

    • Прокидывать порты на домашнем точно не надо.
      Я даже затрудняюсь ответить.
      Постараюсь написать руководство, как работать через corkscrew и, может, найдем отличия)
      Какими ОС’s Вы пользуетесь?

  4. на домашнем сервере стоит центос 6, на сервере рабочем где поднята прокся сусе 10, на рабочей машине дебиан 6=))) вот такой парк юниксов)

  5. нашел в чем была проблема, оказывается на сервере надо было открыть PermitTunnel yes, т.к. по умолчанию стоит no. Завтра буду на работе, проверю)))

  6. ) а я уже начал думать, где развернуть полигон.
    Буду благодарен, если Вы отпишитесь о результате.

  7. Отписываюсь, таже самая шляпа. ЗАметил одно, что если казать что доступ через сокс5(в браузере с динамическим портом), то оно грузит очень долго, а потом облом, пишет что не может загрузить, а если указать через хттп то загрузка мгновенная, но как уже писал выше, ничего не грузит, но и ошибки не выдает. Даже и не знаю что теперь делать

  8. Заработало только после указания в свойствах ярлыка не как у вас а —proxy-server=»socks5://мой ип : порт»

  9. В сети есть веб сервер (ip1) и вин7 (ip2) с доступом в интернет, сеть работает так что доступ к веб серверу доступен только с ip2. в другой сети за Nat есть машина вин7 (ip3) с установленным putty. Подскажите пожалуйста, как пробросить туннель так, чтобы запросы к веб серверу шли от ip3 через ip2

    • Доброй ночи.
      Нужно понимать каким образом на ip2 подключен интернет. Там выделенный/динамический внешний IP или интернет через сетевой маршрутизатор (либо прокси)?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *