- Как настроить туннель SSH SOCKS для приватного просмотра
- Подготовка
- Настроить SSH-туннель
- Linux и macOS
- Windows
- Настройка вашего браузера для использования прокси
- Fire Fox
- Гугл Хром
- Выводы
- Create a SOCKS proxy on a Linux server with SSH to bypass content filters
- Set up SOCKS5 SSH tunnel
- Use SOCKS proxy in Chrome/Firefox
- Encrypted Traffic
- Bypassing firewall limitations
- Testing SOCKS5 proxy
- Подключаемся к удаленному серверу по SSH через SOCKS 5 прокси
- Читайте также
- SOCKS Proxy с помощью SSH
- Евгений Боздаганян
- Евгений Боздаганян
- Введение
- Что такое proxy сервер
- Как можно использовать proxy сервер
- Почему именно proxy
- SOCKS5 proxy сервер
- Планы на будущее
- Subscribe to Записки на полях
Как настроить туннель 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 будет установлен.
Вы можете настроить аутентификацию на основе ключа 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 и запустит браузер.
Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.
Источник
Create a SOCKS proxy on a Linux server with SSH to bypass content filters
Mattias Geniar, January 19, 2017
Follow me on Twitter as @mattiasgeniar
Are you on a network with limited access? Is someone filtering your internet traffic, limiting your abilities? Well, if you have SSH access to _any _server, you can probably set up your own SOCKS5 proxy and tunnel all your traffic over SSH.
From that point on, what you do on your laptop/computer is sent encrypted to the SOCKS5 proxy (your SSH server) and that server sends the traffic to the outside.
It’s an SSH tunnel on steroids through which you can easily pass HTTP and HTTPs traffic.
And it isn’t even that hard. This guide is for Linux/Mac OSX users that have direct access to a terminal, but the same logic applies to PuTTy on Windows too.
Set up SOCKS5 SSH tunnel
You set up a SOCKS 5 tunnel in 2 essential steps. The first one is to build an SSH tunnel to a remote server.
Once that’s set up, you can configure your browser to connect to the local TCP port that the SSH client has exposed, which will then transport the data through the remote SSH server.
It boils down to a few key actions;
- You open an SSH connection to a remote server. As you open that connection, your SSH client will also open a local TCP port, available only to your computer. In this example, I’ll use local TCP port :1337.
- You configure your browser (Chrome/Firefox/…) to use that local proxy instead of directly going out on the internet.
- The remote SSH server accepts your SSH connection and will act as the outgoing proxy_/vpn_ for that SOCKS5 connection.
To start such a connection, run the following command in your terminal.
What that command does is;
- -D 1337 : open a SOCKS proxy on local port :1337 . If that port is taken, try a different port number. If you want to open multiple SOCKS proxies to multiple endpoints, choose a different port for each one.
- -C : compress data in the tunnel, save bandwidth
- -q : quiet mode, don’t output anything locally
- -N : do not execute remote commands, useful for just forwarding ports
- user@ma.ttias.be : the remote SSH server you have access to
Once you run that, ssh will stay in the foreground until you CTRL+C it to cancel it. If you prefer to keep it running in the background, add -f to fork it to a background command:
Now you have an SSH tunnel between your computer and the remote host, in this example ma.ttias.be .
Use SOCKS proxy in Chrome/Firefox
Next up: tell your browser to use that proxy. This is something that should be done per application as it isn’t a system-wide proxy.
In Chrome, go to the chrome://settings/ screen and click through to Advanced Settings. Find the Proxy Settings.
In Firefox, go to Preferences > Advanced > Network and find the Connection settings. Change them as such:
From now on, your browser will connect to localhost:1337 , which is picked up by the SSH tunnel to the remote server, which then connects to your HTTP or HTTPs sites.
Encrypted Traffic
This has some advantages and some caveats. For instance, most of your traffic is now encrypted.
What you send between the browser and the local SOCKS proxy is encrypted if you visit an HTTPs site, it’s plain text if you visit an HTTP site.
What your SSH client sends between your computer and the remote server is always encrypted.
What your remote server does to connect to the requested website may be encrypted (if it’s an HTTPS site) or may be plain text, in case of plain HTTP.
Some parts of your SOCKS proxy are encrypted, some others are not.
Bypassing firewall limitations
If you’re somewhere with limited access, you might not be allowed to open an SSH connection to a remote server. You only need to get an SSH connection going, and you’re good to go.
So as an alternative, run your SSH server port on additional ports, like :80, :443 or :53: web and DNS traffic is usually allowed out of networks. Your best bet is :443, as it’s already an encrypted protocol and less chance of deep packet inspection middleware from blocking your connection because it doesn’t follow the expected protocol.
The chances of :53 working are also rather slim, as most DNS is UDP based and TCP is only use in either zone transfers or rare DNS occasions.
Testing SOCKS5 proxy
Visit any «what is my IP» website and refresh the page before and after your SOCKS proxy configuration.
If all went well, your IP should change to that of your remote SSH server, as that’s now the outgoing IP for your web browsing.
If your SSH tunnel is down, crashed or wasn’t started yet, your browser will kindly tell you that the SOCKS proxy is not responding.
If that’s the case, restart the ssh command, try a different port or check your local firewall settings.
Источник
Подключаемся к удаленному серверу по SSH через SOCKS 5 прокси
Иногда необходимо подключится к удаленному серверу по протоколу SSH через существующий SOCKS 5 прокси, что может быть создан как из SSH-подключения к другому серверу, так и другими способами.
Сегодня я расскажу об этом.
Я уже писал как создать SOCKS 5 прокси на сервере имея SSH-доступ к нему. Для примера сделаем SOCKS 5 на одном сервере и подключимся через него к второму.
На сервере с SOCKS 5 прокси (если он создаётся через SSH, а не другими способами) в файле настроек SSH /etc/ssh/sshd_config должна быть строчка разрешающая пересылку TCP-пакетов:
Без неё у вас врядли что-то получится.
Итак, используя шаблон
запустим прокси на порту 1080 для сервера 8.8.8.8 например так
Теперь сама строчка подключения к второму удаленному серверу по протоколу SSH через SOCKS 5 прокси:
Где
127.0.0.1:1080 — IP и порт SOCKS 5 прокси
roman — это ваш логин на сервер
8.8.4.4 — адрес вашего сервера
Читайте также
Cоздать SOCKS 5 прокси довольно просто. Достаточно выполнить команду по следующей схеме: ssh -f -C2qTnN -D @ Где -f Запросит…
Как проверить прокси в консоли Linux curl —proxy «user:pass@host:port» https://google.com Такой способ сработает в любом Linux-дистрибутиве с установленной библиотекой Curl.…
Существует несколько способов. Первый — через переменную окружения. Он будет хорош для простых задач и может работать без правки Go-кода.…
Источник
SOCKS Proxy с помощью SSH
В заметке рассказывается, как при помощи SSH организовать SOCKS (SOCKS5) proxy, зачем это может понадобиться и что для этого может потребоваться.
Евгений Боздаганян
Read more posts by this author.
Евгений Боздаганян
Введение
Хочу рассказать про один из способов, как можно использовать SSH сервер, «если, конечно, он у вас есть»©. Предположим, вы являетесь обладателем такого сервера. К тому же, у вас есть публичный IP адрес, который позволяет достучаться до машины, железной или виртуальной — не суть важно — на которой этот SSH сервер работает. Ну, примерно, как у меня 😉.
А что есть у меня? У меня есть «белый» IP адрес. Он условно статический — если я не забываю вовремя оплачивать интернет, он не меняется [1] . Есть у меня и зарегистрированный домен, который я связал с этим адресом — но это условие не является обязательным. Есть и компьютер с Windows 10 , на котором запущен SSH сервер. Вопрос: как можно это всё использовать? И ответ: очень по-разному, и сегодня посмотрим, как можно развернуть SOCKS proxy.
Что такое proxy сервер
Для начала разберем, что это за зверь такой — proxy сервер, и зачем он нужен. Proxy часто используют для организации выхода в интернет нескольких компьютеров, при том, что физически такая возможность есть только у одного из них. Именно на этой машине и запускают proxy сервер. На других же компьютерах настраивают программное обеспечение (например, браузеры) таким образом, чтобы использовать этот proxy сервер для выхода в интернет. В результате, если всё сделано правильно, эти компьютеры, точнее, браузеры, работающие на них, получают доступ во всемирную паутину.
Владелец же proxy получает возможность управлять доступом всех клиентов, подключившихся к его серверу. Что под этим подразумевается? Например, он может ограничивать скорость доступа для клиентов, разрешать или запрещать доступ к определенным ресурсам, производить аутентификацию пользователей, вести учёт объёма потреблённого трафика, осуществлять кеширование. Вообщем, может очень многое. Именно поэтому proxy сервера так любят сетевые администраторы на различных предприятиях.
В домашних условиях proxy сервера сегодня используются редко. Я поднимал такой, когда выходил в интернет через простейший ADSL модем году так в 2009 — нужно было через один модем вывести в интернет два компа. В наши дни большинство людей используют дома роутеры, которые сейчас почти поголовно имеют встроенную реализацию механизма NAT, что позволяет устройствам в локальной сети получать доступ в интернет. При этом, от конечных пользователей практически не требуется производить специальную настройку своего программного обеспечения, не то, что в случае с proxy . Правда, NAT не позволяет реализовывать такое управление подключенными компьютерами, как proxy сервер, но в домашних условиях этого, как правило, и не требуется.
Proxy бывают разными. Чаще всего используются HTTP proxy , которые позволяют перенаправлять HTTP трафик от конечного устройства до требуемого ресурса. Существуют FTP proxy , позволяющие работать по протоколу FTP , нельзя не упомянуть и HTTPS proxy , которые, по факту, являются теми же HTTP proxy , только работают с зашифрованным трафиком. В настоящее время считается, что самыми прогрессивными являются SOCKS proxy , вернее, последняя версия — SOCKS5 proxy. Эти proxy изначально анонимные — конечный ресурс не узнает, какой у вас адрес и вас никто не «вычислит по IP » 😉. Кроме того, даже факт использования proxy останется скрытым. К тому же, SOCKS5 proxy работают как по протоколу TCP , так и по протоколу UDP , и, в отличии от SOCKS4 , умеют производить аутентификацию пользователей. В общем, как написал выше — самые прогрессивные.
На самом деле, я не собираюсь углубляться в эту тему — тему proxy серверов, NAT и прочих высоких материй. Будем считать, что приличия соблюдены и минимальный реверанс в сторону ознакомительной информации завершён.
Как можно использовать proxy сервер
Теперь — немного о том, зачем мне понадобился proxy сервер. Все очень просто — с его помощью я обхожу блокировки.
Дело в том, что я использую несколько провайдеров: дома — один провайдер, на даче — другой. Я не буду сейчас рекламировать того или иного провайдера, отмечу лишь, что дома используется «приземленный», стационарный, так сказать, провайдер, с оборудованием на чердаке подъезда, проводами по стояку, дырками в стенах и так далее и тому подобное, а на даче — обычный мобильный провайдер. Но, так случилось, что разница между ними заключается не только в «мобильности».
Мобильный провайдер — самый обычный. В том числе и в отношении того, как он исполняет блокировки Роскомнадзора. А вот домашний провайдер. С ним что-то не так. Есть некоторое количество сайтов, которые меня интересуют, и которые должны блокироваться, по крайней мере, они есть в списке РКН, но, почему-то, через домашнего провайдера я могу до них достучаться. Не подумайте ничего плохого, это не какие-то террористические и порнографические сайты, и не сайты с пропагандой суицидов или нацизма, а вполне себе безобидные сайты, например, linkedin.com.
Что должен делать человек, который хочет получить доступ к заблокированному сайту? Вообще говоря, есть довольно широкий список возможностей. Тут и расширения/дополнения для браузеров, использование заграничных proxy серверов и VPN , всевозможных TOR и Shadowsocks . Но. любое использование стороннего сервиса ослабляет безопасность и увеличивает вероятность несанкционированного доступа к вашим данным.
Я являюсь убежденным сторонником собственных сервисов. Можно, конечно, найти хостера и развернуть у него собственный proxy или VPN сервер. Правда, в этом случае желательно, чтобы сервера хостера территориально были размещены за пределами влияния списков РКН и, кроме того, следует учесть, что придётся платить, причем ежемесячно. И чем активнее вы будете пользоваться этими серверами/сервисами, тем больше надо будет платить, так как, при расчёте стоимости, учитывается не только количество и мощь выделяемых вам процессоров, объём ОЗУ и дискового пространства, но и банальный трафик. В общем, если есть возможность избежать использования сторонних хостеров и развернуть нужный сервис у себя, то надо такой возможностью пользоваться. Мне в этом смысле повезло, не пришлось искать заморского хостера и платить ему.
Почему именно proxy
Почему для обхода блокировок я решил использовать proxy ? Почему не стал использовать VPN, например? Ну почему же не стал — я использую VPN и довольно часто. Но, все-таки, VPN — это немного про другое, хотя и замечательным образом позволяет обходить блокировки. На мой взгляд, это, примерно, как «из пушки по воробьям». К тому же, не всегда удобно.
Ну, например, предположим, что я сижу и удаленно работаю на своей рабочей виртуалке — при помощи VMWare Horizon Client. И что тут такого? Пока ничего, но представим, что по каким-то причинам мне буквально приспичило зайти на этот самый linkedin.com. Если, заходя удаленно на рабочий компьютер, я использовал «чистый» интернет от провайдера, то, при включении VPN для просмотра заблокированного сайта, Horizon Client просто сбросит соединение и мне придется коннектиться заново. Ничего страшного, но — неудобно. Можно, конечно, всё время сидеть в VPN , и, возможно, когда-нибудь я к этому и приду, но пока я так не делаю.
Так вот, в описанной выше ситуации использование proxy решает и саму задачу доступа к заблокированному ресурсу и удаленный сеанс продолжает свою работу, ведь для установленного при помощи Horizon Client -a соединения ничего не изменилось, proxy — это для браузера.
SOCKS5 proxy сервер
Теперь, когда я объяснил, почему решил использовать именно proxy сервер, пора перейти у описанию процесса его установки и настройки. И когда я подошёл к этому этапу, мне стало понятно, что если я остановлю свой выбор на SOCKS5 proxy , то и устанавливать ничего не придется, и настройка будет очень и очень простой.
Судите сами. У меня есть постоянно работающая машинка под Windows 10 — мой домашний сервер. На нем запущен стандартно входящий в поставку Windows 10 SSH сервер. На домашнем роутере осуществлен проброс порта до этого самого SSH сервера. К тому же, на любом компьютере, с которым я имею дело, есть SSH клиент. А всем известно, что с помощью SSH клиента очень легко реализовать SOCKS5 proxy: надо лишь использовать ключ -D командной строки. Вот цитата из документации команды SSH :
-D [bind_address:]port Dynamic application-level port forwarding. This allocates a socket to listen to port on the local side. When a connection is made to this port, the connection is forwarded over the secure channel, and the application protocol is then used to determine where to connect to from the remote machine.
Коротенько, минут на 40 ©, докладик, что этот отрывок документации значит. При использовании ключа -D осуществляется динамическая переадресация портов на уровне приложения. На локальном устройстве (где работает SSH клиент) выделяется/создается сокет для прослушивания определенного порта. Когда с этим портом устанавливается соединение, оно перенаправляется по безопасному каналу на удаленное устройство (на котором работает SSH сервер), а затем уже там, на удаленном компьютере, для определения того, куда именно должно быть осуществлено соединение, используется прикладной протокол.
Таким образом, если использовать команду:
то мы получим на порту local_port работающий SOCKS5 proxy . В приведенной команде:
- local_port — порт на локальной машине, именно его надо будет использовать при настройке, например, браузера. Я частенько использую порт 1080 (таковы общепризнанные рекомендации), но можно укaзать любой, главное, чтобы он не был задействован какой-нибудь другой программой. И помните, что первые 1024 порта зарезервированы системой, и если надо назначить какой-нибудь из них, то потребуются права суперпользователя (речь про root )
- user — имя пользователя, под которым будет осуществляться соединение с удаленным SSH сервером
- server.at.home — адрес вашего удаленного (домашнего) сервера. Если домен у вас не зарегистрирован — не беда, используйте IP адрес. Вот если IP адреса нет, тодга — да, тогда работать не будет 🙁.
- -p port_at_home — при помощи ключа -p можно указать порт на удаленном устройстве (сервере), на который будет осуществляться перенаправление соединения. Как я уже сказал, у меня на роутере настроен проброс определенного порта (какого — я вам не скажу 😉) на 22 порт домашнего сервера — именно 22 порт по умолчанию используется SSH серверами, и Windows тут не исключение. Так вот, в этой команде я указываю именно порт на роутере. Кстати, если бы я «прокидывал» 22 порт на роутере, то ключ -p можно было бы и не использовать, но это было бы чуть менее безопасно.
Еще, буквально, пара слов про необязательный [bind_address:] . В приведенном примере подразумевается, что будет слушаться локальный порт, причем обращение (соединение) должно осуществляться именно к локальному хосту, он же localhost , он же 127.0.0.1 . Если команду переписать вот так:
то будут обрабатываться запросы, пришедшие через любой интерфейс. Таким образом, можно разрешить другим устройствам в локальной сети использовать наш SOCKS5 proxy сервер.
Планы на будущее
С тех пор, как в Windows 10 появился SSH клиент (он даже сразу активирован, в отличии от SSH сервера), приведенной информации, в принципе, уже достаточно для организации SOCKS5 proxy . Но я сам довольно часто предпочитаю использовать вместо командной строки различные GUI приложения. Поэтому я решил, что опишу несколько шагов по созданию и настройке proxy серера с использованием такого вот GUI SSH клиента. Причем, если честно, я соригинальничал и не стал использовать (и описывать) всем известную программу PuTTY (таких описаний полно в сети), а установил другого клиента — Bitvise SSH Client. Так что, если интересно, ждите — скоро опишу процесс.
Про настройку клиента тоже, пожалуй, напишу. Но, опять же, не про Fairfox, в котором такая настройка предусмотрена в пользовательском интерфейсе, а про то, как при помощи параметров командной строки можно настроить всем известный Chrome, да и любой другой браузер, основанный на движке Chromium, например, тот же Microsoft Edge. Постараюсь не затягивать, заглядывайте периодически.
К сожалению, после смены роутера на Keenetic Viva, адрес стал меняться в начале месяца. Не знаю, связано это с роутером, или что-то поменялось у провайдера, но раз в месяц мой белый IP становится другим. ↩︎
Subscribe to Записки на полях
Get the latest posts delivered right to your inbox
Источник