Прокси через ssh туннель linux

SSH-туннели — пробрасываем порт

Не всегда есть возможность, да и не всегда надо, строить полноценный туннель с интерфейсной парой адресов. Иногда нам нужно лишь «прокинуть» вполне определённые порты.

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

Итак. По-порядку.

Строим туннель из сети в мир.

теперь введя на хосте 99.88.77.66:

мы попадём на хост 10.11.12.13.

Таким-же образом можно получить доступ к любому другому ресурсу, например:

Введя на хосте 99.88.77.66:

получим дамп web-ресурса на 10.11.12.14.

Строим туннель из мира в сеть.

Аналогично, вводим на своём хосте:

и получаем доступ к web-ресурсу узла 192.168.0.10, который находится за хостом 88.77.66.55.

Поддерживаем туннели в поднятом состоянии
Ни для кого не секрет, что связь иногда обрывается, туннели при этом будут отваливаться по таймауту.
Чтобы не утруждать себя дополнительным монотонным вбиванием команды на поднятие туннеля и мониторингом этого процесса, автоматизируем его. Смело вводим:

и создаём расписание примерно следующего вида:

Сохраняемся. Проверяем по

что расписание принято.

Это лишь ещё один момент особой админской магии… Надеюсь, что лишних вопросов не должно водникнуть. С дополнительными опциями ssh можно ознакомиться в

По практическому опыту — cron-задания на перезапуск абсолютно недостаточно.
Разве что соединение абсолютно стабильно. В реальной жизни встречается в 0% случаев.
Даже соединённые напрямую кабелем две сетевые карты легко могут потерять n-ное количество пакетов и tcp-соединение «упадёт».
Клиент и сервер будут пребывать в святой уверенности, что всё в порядке, просто вторая сторона ничего не передаёт.
Нужен keepalive.
Примерно так:

Интервал и счётчик — по вкусу.
Добавлять их надо либо в /etc/ssh_config, либо в

/.ssh/config, либо прямо в команде через опцию -o.
В принципе, судя по man ssh_config, первую из опций можно и опустить. но, на всякий случай, пусть будет.

Источник

Как настроить туннель SSH SOCKS для приватного просмотра

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

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

Более простой альтернативой является маршрутизация трафика локальной сети с помощью зашифрованного прокси-туннеля SOCKS. Таким образом, все ваши приложения, использующие прокси-сервер, будут подключаться к серверу SSH, и сервер будет перенаправлять весь трафик в его фактическое место назначения. Ваш интернет-провайдер (интернет-провайдер) и другие третьи стороны не смогут проверять ваш трафик и блокировать ваш доступ к веб-сайтам.

Это руководство проведет вас через процесс создания зашифрованного туннеля SSH и настройки веб-браузеров Firefox и Google Chrome для использования прокси-сервера SOCKS.

Подготовка

  • Сервер, работающий под управлением любой разновидности Linux, с доступом SSH для маршрутизации вашего трафика через него.
  • Веб-браузер.
  • Клиент SSH.

Настроить SSH-туннель

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

Linux и macOS

Если вы используете Linux, macOS или любую другую операционную систему на основе Unix на своем локальном компьютере, вы можете легко запустить туннель SSH с помощью следующей команды ssh :

Используются следующие параметры:

  • -N — Указывает SSH не выполнять удаленную команду.
  • -D 9090 — открывает туннель SOCKS на указанном номере порта.
  • [USER]@[SERVER_IP] — ваш удаленный пользователь SSH и IP-адрес сервера.
  • Чтобы запустить команду в фоновом режиме, используйте параметр -f .
  • Если ваш SSH-сервер прослушивает порт, отличный от 22 (по умолчанию), используйте параметр -p [PORT_NUMBER] .

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

Читайте также:  Как поставить windows internet explorer

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

Windows

Пользователи Windows могут создать SSH-туннель с помощью SSH-клиента PuTTY. Вы можете скачать PuTTY здесь .

Запустите Putty и введите IP-адрес вашего сервера в поле Host name (or IP address) .

В меню « Connection разверните SSH и выберите « Tunnels . Введите порт 9090 в поле Source Port и установите переключатель Dynamic .

Нажмите кнопку « Add , как показано на изображении ниже.

Вернитесь на страницу Session чтобы сохранить настройки, чтобы не вводить их каждый раз. Введите имя сеанса в поле « Saved Session и нажмите кнопку « Save .

Выберите сохраненный сеанс и войдите на удаленный сервер, нажав кнопку « Open .

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

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

Настройка вашего браузера для использования прокси

Теперь, когда вы открыли туннель SSH SOCKS, последний шаг — настроить предпочтительный браузер для его использования.

Fire Fox

Приведенные ниже шаги одинаковы для Windows, macOS и Linux.

В верхнем правом углу щелкните значок гамбургера ☰ чтобы открыть меню Firefox:

Щелкните ссылку ⚙ Preferences .

Прокрутите вниз до раздела « Network Settings » и нажмите кнопку « Settings. .

Откроется новое окно.

  • Установите переключатель « Manual proxy configuration ».
  • Введите 127.0.0.1 в поле SOCKS Host и 9090 в поле Port .
  • Установите флажок Proxy DNS when using SOCKS v5 .
  • Нажмите кнопку OK , чтобы сохранить настройки.

На этом этапе ваш Firefox настроен, и вы можете просматривать Интернет через туннель SSH. Чтобы проверить, вы можете открыть google.com , ввести «какой у меня IP», и вы должны увидеть IP-адрес своего сервера.

Чтобы вернуться к настройкам по умолчанию, перейдите в « Network Settings , выберите переключатель « Use system proxy settings » и сохраните настройки.

Есть также несколько плагинов, которые могут помочь вам настроить параметры прокси-сервера Firefox, например, FoxyProxy .

Гугл Хром

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

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

Linux:

macOS:

Windows:

Если профиль не существует, он будет создан автоматически. Таким образом, вы можете запускать несколько экземпляров Chrome одновременно.

Чтобы убедиться, что туннель SSH работает правильно, откройте google.com и введите «what is my ip». IP-адрес, отображаемый в вашем браузере, должен быть IP-адресом вашего сервера.

Выводы

Вы узнали, как настроить туннель SSH SOCKS 5 и настроить свой браузер для частного и анонимного доступа в Интернет. Для простоты использования вы можете определить туннель SSH в файле конфигурации SSH или создать псевдоним Bash , который настроит туннель SSH и запустит браузер.

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

Источник

Туннели через SSH или «VPN для бедных»

«Если мы видим свет в конце туннеля, то это свет приближающегося поезда» (Роберт Лоуэлл)

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

Итак, почему SSH-туннели вместо VPN? Вообще-то я использую дома и то, и другое. Если вы читали мои статьи на jaysonbroughton.com, то знаете, что я использую OpenVPN с трехступенчатой аутентификацией (логин, сертификат и одноразовый пароль). Но если я хочу проверить один из моих серверов из дома с помощью Android-устройства или компьютера, на котором у меня нет прав администратора (эти права нужны для моего OpenVPN-клиента) или же подключиться по VNC к ноутбуку моей супруги, чтобы решить ее проблему, то в этом случае я заменяю использование VPN на SSH.

Читайте также:  Как установить пакетный файл windows бад

Я дам здесь лишь самые основы: расскажу, как создавать туннели, объясню синтаксис команд, приведу примеры обратных туннелей и причины для использования каждого из них. Кратко коснусь файла ssh_config; более подробно он будет рассмотрен в будущем.

Итак, с чем мы будем работать? Я использую Debian в виртуальном окружении, поэтому ваши реалии могут отличаться от моих. В данном случае я использовал OpenSSH_5.3p1 в качестве сервера и различные OpenSSH-клиенты 5 версии. Перед тем, как углубиться в туннели, хочу сказать следующее: если вам хочется использовать SSH-туннели для шифрования HTTP или обратные SSH-туннели для обхода корпоративного файервола, удостоверьтесь, что вы не нарушаете никаких правил вашей компании. Нечего и говорить о том, что ваши системные администраторы начнут на вас охотиться, как только обнаружат такие проделки; сам будучи системным администратором, я получаю невыразимое удовольствие, отлавливая подобных индивидуумов. По крайней мере, предупредите их, чтобы они не были застигнуты врасплох. LinuxJournal.com и я не несут никакой ответственности за ваши нарушения вашей же корпоративной политики 🙂 Ну, а теперь перейдем к делу.

Создать SSH-туннель довольно просто. А вот решить, что с ним делать, может оказаться немного труднее. Поэтому я приведу несколько примеров, прежде чем мы вдадимся в детали. Я в свое время немного попутешествовал — это было на прежнем месте работы и до того, как у меня родились дети. В поездках мне доводилось останавливаться в самых странных гостиницах (думаю, вы с такими знакомы), оснащенных еще более странными беспроводными точками доступа. Захотите ли вы в гостинице подключиться к точке доступа, у которой SSID написан с орфографическими ошибками? Или в аэропорту, где вы обнаруживаете сразу несколько открытых точек? Если я нахожусь не дома, я пущу HTTP-трафик через туннель между своим устройством на Android (с root-доступом) и домашним сервером. Если же я работаю на ноутбуке, то открою SSH-туннель и пущу HTTP-трафик через Socks5 с тем, чтобы он весь был зашифрован средствами SSH. Я не доверяю открытым точкам доступа настолько, насколько могу. Что еще добавить? Мне приходилось «заворачивать» в туннели SMTP-трафик, когда я попадал в такие места, где блокировались исходящие SMTP-пакеты. То же самое мне приходилось делать и с POP3, с которого я недавно перешел на IMAPS. Другие примеры SSH-туннелей включают в себя проброс приложений X11 и сеансов VNC. Ранее я также упоминал обратные туннели. Они представляют собой. ну, вы сами понимаете — туннели, направленные в обратную сторону. В этом случае вы подключаетесь откуда-либо, где нет сервера SSH, к внешнему SSH-серверу. Потом, зарегистрировавшись на этом сервере, в том числе и локально, вы можете восстановить это подключение. Какая в этом польза, говорите? Ну, например, VPN-сервер вашей компании «упал» или работает только с VPN-клиентами под Windows, но вам совершенно не хочется тащиться с ноутбуком домой, чтобы проверить, работает ли тот или иной процесс. Придя домой, вы можете установить обратный туннель. В этом случае вам следует подключиться с сервера «Икс» к вашей домашней машине. Прибыв домой, вы восстанавливаете подключение к серверу «Икс», таким образом обходя файервол или VPN, и проверяете работу процесса без необходимости подключения по VPN. Я поступаю так очень редко, так как, на мой взгляд, подключение к серверу минуя файервол или VPN — это «плохое кунг-фу» и может использоваться лишь в самом крайнем случае.

Итак, вы получили несколько примеров SSH-туннелей, а теперь посмотрим, как это все делается.

Перед тем, как мы углубимся в работу на клиенте, немного отредактируем файл sshd_config на сервере. В /etc/ssh/sshd_config я обычно вношу некоторые изменения. Но не забудьте перед началом редактирования сделать его резервную копию на случай, если что-то пойдет наперекосяк.

Не забудьте, что если вы внесли какие-либо изменения в sshd_config, то вам нужно будет перезапустить сервис sshd для того, чтобы эти изменения вступили в силу.

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

Типичный SSH-туннель без перенаправления X выглядит примерно так:

Здесь ключи означают следующее:

-N — не выполнять команд на удаленной машине
-p 22 — подключаться на внешний порт 22. Я обычно использую другой внешний порт, чтобы избавиться от атак «кулхацкеров» на мой SSH-сервер
bob@mylinuxserver.xxx — имя_пользователя@имя_сервера (или IP-адрес)
-L 2110:localhost:110 — информация о привязке портов. Означает следующее: порт_клиента:имя_сервера:порт_сервера. В данном примере мы перенаправляем 110 порт сервера на 2110 порт вашей машины

Читайте также:  Что значит образ windows

Хотите еще немного примеров?

Проброс POP3 и SMTP через SSH:

Проброс Google Talk через SSH (ключ -g позволяет удаленным машинам подключаться к проброшенным локальным портам):

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

Шифрование HTTP-трафика

Еще одна вещь, понятная без лишних слов. Но если в вашей компании действует какая-либо политика относительно ИТ, проверьте, не нарушаете ли вы ее. Я пускаю HTTP-трафик через SSH в тех случаях, когда не доверяю точке доступа. Под Android я использую приложение SSHTunnel, а на ноутбуке — такую команду:

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

Перенаправление сеансов X и VNC

Припоминаете, что вы добавили » X11Forwarding yes » в sshd_config? Это-то и позволяет пробрасывать сеансы X.

Вы угадали, -X пробрасывает X. Но учтите, что это работает только на клиентских машинах с Linux. Если вы вдруг оказались вынуждены работать в Microsoft Windows, а вам нужен SSH-туннель, просто установите пакет Cygwin/X ( http://x.cygwin.com/ ). Я лично не пробовал с ним работать, но, насколько я понимаю, он предоставляет возможность запускать удаленные X-приложения, находясь в Windows.

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

В данном примере вы подключаетесь по SSH на внешний порт 2022 сервера mylinuxserver.com от имени пользователя bob. Локальный порт 5900 пробрасывается на порт 5900 на сервере. После установления соединения вы можете открыть свой VNC-клиент и направить его на localhost:0 для подключения к удаленной машине. Если вы пробросили порт 5901, указывайте «localhost:1» и так далее.

Обратные SSH-туннели

Ну, вот и настало время для моей любимой разновидности SSH-туннелей. Разумеется, получать доступ к какому-либо сервису через SSH — это здорово, «гонять» веб-трафик по зашифрованным SSH-туннелям — тоже, но самое приятное удивление можно испытать от обратных туннелей. Как я уже говорил ранее, ими приходится пользоваться в ситуации, когда имеется машина без SSH-сервера, а вы испытываете необходимость получить к ней доступ в дальнейшем (через несколько минут, часов или дней), но при этом не хотите или не можете воспользоваться VPN. Вам следует соединиться с SSH-сервером с этой машины, а затем установить обратный SSH-туннель, подключившись к этому соединению. Для чего я это применяю? Время от времени — для того, чтобы поработать с удаленным сервером или просто для того, чтобы помочь друзьям и родственникам по VNC через SSH. В последнем случае они запускают Putty с сохраненными настройками сеанса и подключаются к моему SSH-серверу от имени пользователя, не имеющего никаких прав. После создания туннеля я могу зайти по VNC на их машины. И все, им не нужно настраивать файервол или разбираться с LogMeIn или другими подобными сайтами.

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

На клиентской машине:

На стороне сервера:

И вот вам обратный туннель! Вуаля!

Для любителей наглядности пользователи daddoo и nerdboy4200 с канала #linuxjournal подготовили схему последовательностей сообщений с помощью пакета mscgen ( http://www.mcternan.me.uk/mscgen/ ). Да, это пакет с открытым исходным кодом и он обладает потрясающими возможностями. Я попробовал свои силы и создал схему для этой заметки, но то, что за короткое время сделали daddoo и nerdboy, заставило меня устыдиться [своей неумелости — прим. пер.].

Заключение

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

Источник

Оцените статью