Socks proxy linux servers

Proxy server

In computer networks, a proxy server is a server (a computer system or an application) that acts as an intermediary for requests from clients seeking resources from other servers.

Contents

HTTPS MITM proxies

When debugging HTTPS connections it is sometimes useful to intercept them outside of the browser. In order for the TLS MITM to work you need to trust a certificate authority of the proxy either in your browser or system-wide.

  • Charles — Graphical trialware written in Java.

https://www.charlesproxy.com/ || charlesAUR

  • Fiddler — Proprietary and graphical, running on Mono.

https://www.telerik.com/fiddler || fiddlerAUR

  • mitmproxy — Command-line and web interface, written in Python, also has API.

https://mitmproxy.org/ || mitmproxy

  • sslsplit — Works with any TLS connections but cannot act as a HTTP proxy in a browser, written in C.

https://www.roe.ch/SSLsplit || sslsplit

Environment variables

This article or section needs expansion.

/.config/environment.d/*.conf . (Discuss in Talk:Proxy server)

Some programs, such as wget and (used by pacman) curl, use environment variables of the form protocol_proxy to determine the proxy for a given protocol (e.g. HTTP, FTP, . ).

Below is an example on how to set these variables in a shell:

Some programs look for the all caps version of the environment variables.

If the proxy environment variables are to be made available to all users and all applications, the above mentioned export commands may be added to a script, say proxy.sh inside /etc/profile.d/ . The script has to be then made executable. This method is helpful while using a desktop environment like Xfce which does not provide an option for proxy configuration. For example, Chromium browser will make use of the variables set using this method while running XFCE.

Alternatively, there is a tool named proxyman-git AUR which claims to configure system-wide proxy settings easily. It also handles proxy configurations of other software like git, npm, Dropbox, etc. The project is inspired from Alan Pope’s idea of making a script.

Alternatively you can automate the toggling of the variables by adding a function to your .bashrc (thanks to Alan Pope for original script idea)

Omit username or password if they are not needed.

As an alternative, you may want to use the following script. Change the strings YourUserName , ProxyServerAddress:Port , LocalAddress and LocalDomain to match your own data, then edit your

/.bashrc to include the edited functions. Any new bash window will have the new functions. In existing bash windows, type source

/.bashrc . You may prefer to put function definitions in a separate file like functions then add source functions to .bashrc instead of putting everything in .bashrc . You may also want to change the name «myProxy» into something short and easy to write.

Keep proxy through sudo

If the proxy environment variables are set for the user only they will get lost when running commands with sudo (or when programs use sudo internally).

A way to prevent that is to add the following line to a sudo configuration file:

Automation with network managers

  • NetworkManager cannot change the environment variables.
  • netctl could set-up these environment variables but they would not be seen by other applications as they are not child of netctl.
Читайте также:  Как убрать надпись сборки windows с рабочего стола

About libproxy

libproxy (which is available in the extra repository) is an abstraction library which should be used by all applications that want to access a network resource. It still is in development but could lead to a unified and automated handling of proxies in GNU/Linux if widely adopted.

The role of libproxy is to read the proxy settings from different sources and make them available to applications which use the library. The interesting part with libproxy is that it offers an implementation of the Web Proxy Autodiscovery Protocol and an implementation of Proxy Auto-Config that goes with it.

The /usr/bin/proxy binary takes URL(s) as argument(s) and returns the proxy/proxies that could be used to fetch this/these network resource(s).

As of 06/04/2009 libproxy is required by libsoup. It is then indirectly used by the midori browser.

Web proxy options

  • Squid is a very popular caching/optimizing proxy
  • Privoxy is an anonymizing and ad-blocking proxy
  • tinyproxy is a small, efficient HTTP/SSL proxy daemon
  • For a simple proxy, ssh with port forwarding can be used

Simple Proxy with SSH

Connect to a server (HOST) on which you have an account (USER) as follows

For PORT, choose some number which is not an IANA registered port. This specifies that traffic on the local PORT will be forwarded to the remote HOST. ssh will act as a SOCKS server. Software supporting SOCKS proxy servers can simply be configured to connect to PORT on localhost.

Using a SOCKS proxy

There are two cases:

  • the application you want to use handles SOCKS5 proxies (for example Firefox), then you just have to configure it to use the proxy.
  • the application you want to use does not handle SOCKS proxies, then you can try to use tsocks or proxychains-ng .

In Firefox, you can use the SOCKS proxy in the menu Preferences > Network > Settings. Choose Manual Proxy Configuration, and set the SOCKS Host (and only this one, make sure the other fields, such as HTTP Proxy or SSL Proxy are left empty). For example, if a SOCKS5 proxy is running on localhost port 8080, put 127.0.0.1 in the SOCKS Host field, 8080 in the Port field, and validate.

If using proxychains-ng, the configuration takes place in /etc/proxychains.conf . You may have to uncomment the last line (set by default to use Tor), and replace it with the parameters of the SOCKS proxy. For example, if you are using the same SOCKS5 proxy as above, you will have to replace the last line by:

Then, proxychains-ng can be launched with

Where program can be any program already installed on your system (e.g. xterm, gnome-terminal, etc).

If using tsocks, the configuration takes place in /etc/tsocks.conf . See tsocks.conf(5) for the options. An example minimum configuration looks like this:

curl and pacman

You may set the all_proxy environment variable to let curl and pacman (which uses curl) use your socks5 proxy:

Proxy settings on GNOME3

Some programs like Chromium and Firefox can use the settings stored by GNOME. These settings can be modified through the gnome-control-center front end and also through gsettings.

This configuration can also be set to automatically execute when NetworkManager connects to specific networks, by using the proxydriver AUR package.

Microsoft NTLM proxy

In a Windows network, NT LAN Manager (NTLM) is a suite of Microsoft security protocols which provides authentication, integrity, and confidentiality to users.

cntlm AUR from the AUR stands between your applications and the NTLM proxy, adding NTLM authentication on-the-fly. You can specify several «parent» proxies and Cntlm will try one after another until one works. All authenticated connections are cached and reused to achieve high efficiency.

Configuration

Change settings in /etc/cntlm.conf as needed, except for the password. Then run:

This will generate encrypted password hashes according to your proxy hostname, username and password.

Читайте также:  Активация windows 10 pro kms активатором

Источник

Установка и настройка Dante SOCKS5 Proxy сервера на Ubuntu 18.04 LTS [годная инструкция по обходу блокировки мессенджера Telegram (и др сайтов) Роскомнадзором]

Вспомнилась цитата с одно ещё не заблокированного интернет-ресурса:

— Скоро и на сковородку придется VPN ставить =/
— Главное, чтобы на унитаз не пришлось, а то пошёл посрать, а унитаз заблокирован.
— Придется срать через Нидерланды.

SOCKS — сетевой протокол, который позволяет клиент-серверным приложениям прозрачно использовать сервисы за межсетевыми экранами (фаерволами). SOCKS — это сокращение от «SOCKet Secure». SOCKS не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и базируется на стандарте TCP/IP — протоколе 4-го уровня.

Socks — это о-о-о-очень старый протокол. Вышел в свет аж в 1992-м году. Ясен пень, что в те далёкие времена ни о каком SSL никто ничего не слышал. Поэтому данные, в том числе логины и пароли на подключение к серверу всегда передаются открытым текстом. Далее, подняв такой прокси и передав доступ к нему всем желающим, вы несколько рискуете. Ведь если Вася подключится браузером или скайпом к вашему проксе, а потом сделает что-то нехорошее, то прилетит по шапке именно вам. Поэтому имеет смысл ограничивать сети с/на которые можно ходить, а также закрываться паролями. Правда, последнее тоже не является панацеей (см. выше).

Кстати о прокси серверах и авторизации. У человека из интернетов дошли руки исследовать эту тему, на которую обратили внимание в одной статье на geektimes (ее правда уже удалили), что даже при условии того, что вы укажете шелл /usr/sbin/nologin, это не спасает вас например от фишки ssh проброса портов. Вам не обязательно нужен шелл, чтобы, например, создать свой сокс сервер на чужом сокс сервере.

ssh -N -D 1337 user@host

Cпасибо ребятам, которые подсказали про ключ -N.
Ну и в дополнение, кроме -D вполне можно использовать и ключи -L -R, что потенциально поможет вам пробросить себя в сеть за уязвимым прокси-сервером или достучаться до служб, висящих на локалхосте.

Хотя этот протокол разработан достаточно давно, он является относительно новым (по сравнению с HTTP proxy). SOCKS позволяет работать с любыми (версия Socks 4 — с TCP, Socks 5 — с TCP и UDP) протоколами. SOCKS proxy просто передает данные от клиента к серверу, не вникая в содержимое самих данных (поэтому он может работать с HTTP, FTP, SMTP, POP3, NNTP, etc.).

SOCKS сервер Dante Server

Dante — это только SOCKS сервер. Если дополнительно нужна поддержка HTTP-прокси, то используйте 3proxy.

Свежая версия Dante в Ubuntu появилась только в версии 18.04. Если у вас 16.04 или 14.04, то вам пригодится статья по самостоятельной сборке deb пакета — https://bvn13.tk/posts/dante-server-on-ubuntu-16-04-lts или https://bvn13.tk/posts/dante-server-on-ubuntu-16-04-lts

Шаг 1. Установка:

При старте возможно появится ошибка, это, увы, нормально, её можно пропускать:

Шаг 2. Основные настройки

Конфигурационный файл расположен в по адресу: /etc/danted.conf

Ниже представлена типовая конфигурация:

Подробнее об уровнях логированиях на сайте Dante смотрите в разделе Server logging

Уже сейчас можно попробовать запустить сервис без пароля командой sudo service danted start Но для этого в конфигурационном файле должна быть разрешена работа без пароля: socksmethod: none

Шаг 3. Логины/пароли

Добавим нового пользователя proxy_user_01 для работы с SOCKS сервером.

При этом у пользователя не будет доступа к SSH, т.к. в качестве шелла указан nologin.

Шаг 4. Запуск.

Добавляем сервис в автозагрузку и запускаем его:

Прокси будет работать по ip вашего сервера и порт, который был указан в файле конфигурации (1080 — стандартный порт). Если у вас на сервере не висят https сайты или вроде того, то настоятельно рекомендую поменять порт, например на 443.

Можно пользоваться!

Шаг 5. Безопасность.

Вместо системных пользователей можно и нужно использовать PAM файл с логинами и паролями (аналог htpasswd).

Для этого необходимо дополнительно установить пакет libpam-pwdfile:

И после этого в конфигурационном файле/etc/danted.conf заменить строку:

В файл /etc/pam.d/sockd добавляем:

Используя mkpasswd (входит в состав пакета whois)

Логин и зашифрованный пароль следует теперь добавить в файл: /etc/dante.passwd

Читайте также:  Линукс биос как зайти

Можно воспользоваться онлайн сервисом генерации строки логина-пароля: https://www.mkpasswd.net/index.php (выбрав type:crypt-md5) или любым другим, но не стои забывать о том, что такие сервисы могут сохранять ваш логин и пароль у себя, в том числе и нехешированными! 🙂

p.s.: стоит обратить внимание на то, что тип для md5 должен быть $1, а используемый в htpasswd md5 APR не поддерживается. Т.е. вы не сможете сгенирировать правильный пароль при помощи утилиты htpasswd!

Имя PAM сервиса используемое Dante по умолчанию sockd. Так же, если вы хотите использовать файл конфигурации libpam_pwdfile от другого настроенного сервиса, либо использовать несколько конфигураций, вы можете воспользоваться директивой pamservicename в конфигурационном файле Dante. Пример использования:

Источник

Создание и настройка SOCKS5 прокси сервера в Ubuntu

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

На всех серверах стоит Ubuntu Server 14.04, может где-то и 12.04, но описание должно подойти и для всех остальных систем основанных на Debian.

Есть 2 известных мне способа организации работы SOKS5 сервера:

  1. SOCKS через SSH. Этот способ удобен своей простотой но неудобен при частом использовании, или использовании с разных машин;
  2. Установка SOCKS сервера. При использовании этого способа уйдет чуть больше времени на первоначальную настройку, но потом пользоваться прокси будет быстрее и удобнее.

SOCKS через SSH

Для того чтоб поднять SOCKS5 через SSH нужен только доступ к SSH сервера.

Вводим в терминале или SSH клиенте (PuTTY для Windows)

Если запросит пароль, то нужно ввести пароль от SSH сервера.

-D – указывает порт по которому будет доступен SOKS5 сервер

Все, после этого вы можете подключиться к SOKS5 серверу по адресу localhost:1080 или 127.0.0.1:1080

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

Установка SOCKS сервера

Я знаю 2 SOCKS сервера 3proxy и Dante. У себя использовал Dante Server его настройку и опишу.

Установить Dante сервер можно с помощью apt-get, по умолчанию устанавливается старая версия (v.1.1). Ниже будут настройки для старой и новой (v.1.4) версий.

Установка новой версии Dante Server

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

Далее нужно отредактировать файл настроек

Приведя его к такому виду

  • указываем лог файл который будет находиться по адресу /var/log/danted.log;
  • eth0 — сетевой интерфейс на котором висит внешний IP сервера, узнать его можно воспользовавшись командой ifconfig, либо можно просто указать свой внешний IP вместо названия интерфейса;
  • порт для SOKS5 прокси – 1080;
  • socksmethod — метод авторизации. username — авторизация с указанием логина и пароля системных пользователей. Можно указать none если вы хотите не использовать авторизацию, но не советую оставлять открытым для порт для прокси т.к. сканеры прокси не дремлют, и у меня через открытый порт начали спам рассылать, после чего мне хостер отписал что у моего IP идет спам и надо что-то решать, можно использовать не дефолтный порт а какой-то другой, это позволит отсрочить нахождения вашего прокси сканерами;
  • user.privileged — имя пользователя с расширенными правами;
  • user.unprivileged — имя пользователя с обычными правами (как я понял dante работает от имени этих пользователей в зависимости от того какими правами нужно обладать для выполнения операции).

После сохранения настроек нужно перезагрузить Dante

Все, теперь к SOKS5 прокси можно подключиться с любого устройства, указав IP сервера, порт – 1080, и данные для авторизации (имя и пароль пользователей которые зарегистрированы на сервере).

Я для доступа к прокси создал отдельного пользователя и указываю его данные. Создавал командой

Где soksuser – имя создаваемого пользователя.

Установка старой версии Dante Server

Далее нужно отредактировать файл настроек

Приведя его к такому виду

Дальше все так-же как и в новой версии о которой я писал выше.

Источник

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