Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
socks [2025/07/06 12:40] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Настройка SOCKS сервера ======
 +~~Title: Как настроить SOCKS сервер на примере SSH туннелирования, Dante Server ~~
 +{{htmlmetatags>
 +metatag-description=(SOCKS proxy передает данные от клиента к серверу, не вникая в содержимое самих  данных.  Протокол SOCKS позволяет клиент-серверным приложениям прозрачно использовать сервисы за фаерволами.)
 +}}
 +{{ :socks_proxy_server.png?nolink&400 |}}
  
 +**SOCKS** - сетевой протокол, который позволяет клиент-серверным приложениям прозрачно использовать сервисы за межсетевыми экранами (фаерволами). SOCKS — это сокращение от "SOCKet Secure". SOCKS не зависит от конкретных протоколов уровня приложений (7-го уровня модели [[OSI|OSI]]) и базируется на стандарте TCP/IP — протоколе 4-го уровня.
 +  * **Что такое SOCKS proxy server?**
 +Хотя этот протокол разработан достаточно давно, он является относительно новым (по сравнению с [[HTTP|HTTP]] proxy). SOCKS позволяет работать с любыми (версия Socks 4 - с TCP, Socks 5 - с [[TCP|TCP]] и [[UDP|UDP]]) протоколами. SOCKS proxy просто передает данные от клиента к серверу, не вникая в содержимое самих  данных (поэтому он может работать с [[HTTP|HTTP]], [[FTP|FTP]], [[SMTP|SMTP]], [[POP3|POP3]], NNTP, etc.).
 +
 +<note important>Поскольку SOCKS передает все данные от клиента серверу, ничего не добавляя от себя, то с точки зрения web-сервера socks proxy является клиентом. Поэтому анонимность этого типа proxy-серверов всегда является **действительно полной**.</note>
 +
 +<note tip>HTTP прокси, в отличии от SOCKS прокси, умеет кэшировать данные и может более тщательно фильтровать содержимое передаваемых данных.</note>
 +Читайте также: [[proxy]]
 +<note important>Если сравнивать прокси HTTP и Socks5, то предпочтительней использовать Socks5. Так как они анонимней, поддерживают больше функций, а также работают с любыми сайтами и программами, поддерживающие соединение через прокси.</note>
 +
 +====== Настройка SOCKS5 через SSH туннель  ======
 +
 +Настройка SOCKS5 через [[SSH|SSH]]. Создать SOCKS5- прокси довольно просто. Достаточно выполнить команду по следующей схеме:
 +
 +<file>
 +ssh -f -C2qTnN -D [bind_address:]<порт> <удаленный_пользователь>@<удаленный_сервер>
 +</file>
 +
 +  * -f Запросит ssh перейти в фоновый режим только перед выполнением команды.
 +  * -C Включит сжатие всех данных (включая stdin, stdout, stderr и данные для перенаправленных Х11 и TCP/IP соединений).
 +  * -2 Принуждает ssh использовать только протокол версии 2.
 +  * -q Тихий режим. Подавляет все предупреждения и диагностические сообщения. Будут отображены только фатальные ошибки.
 +  * -T Отменить переназначение терминала.
 +  * -n Перенаправляет стандартный ввод из /dev/null (фактически, предотвращает чтение из стандартного ввода).
 +  * -N Не выполнять удаленную команду.
 +  * -D [локальный IP : ] порт
 +
 +Например:<file>
 +sudo ssh -f -C2qTnN -D 1080 roman@8.8.8.8
 +</file>
 +
 +После введения пароля к удаленному серверу, SSH перейдёт в фоновый режим.
 +
 +Далее вам следует открыть любой браузер, в котором прописать адрес SOCKS5 прокси в параметрах соединения.
 +
 +Для браузера [[Firefox]]:
 +  - Идём «Правка» → «Настройки» → вкладка «Дополнительно» → вкладка «Сеть» → раздел «Соединение» → кнопка «Настроить»
 +  - Устанавливаем там пункт «Ручная настройка сервиса прокси», в поле «Узел SOCKS» пишем наш IP адрес (обычно 127.0.0.1), а в поле «Порт» — указанный порт (в примере 1080).
 +  - Ставим ключ на пункт "SOCKS 5" и применяем настройки.
 +{{:firefox_socks5.png|}}
 +
 +После чего идём на любой сайт для определение IP-адреса и видим не свой IP, а IP удалённого сервера, к которому мы установили SSH - соединение.
 +====== Возможности Dante ======
 +[[https://www.inet.no/dante/|Dante - A free SOCKS server]] — это стабильный SOCKS-прокси с открытым исходным кодом. В этом мануале вы научитесь устанавливать и настраивать SOCKS-прокси Dante на удаленном сервере VPS.
 +
 +<note>Часть функционала в виде дополнительных модулей платная, например модуль Bandwidth control стоит 400 EUR (евро).</note>
 +
 +Для запуска SOCKS сервера вам предварительно потребуется купить [[https://dieg.info/vps-hosting/|недорогой VPS]] и настроить его, например по этому руководству [[cheklist_nastrojka_vps_vds_vydelennogo_servera_linux]].
 +====== Установка SOCKS сервер Dante в Ubuntu версии 18 и выше  ======
 +
 +В случае Ubuntu выше 18.04.4 LTS (Ubuntu 20.04.1 LTS Focal, Ubuntu 22.04 LTS Jammy) Dante Server ставится стандартно из репозитория. Предварительно обновим пакеты:
 +<file bash>
 +apt update
 +apt full-upgrade
 +</file>
 +Посмотрим версию пакета Dante SOCKS сервера в репозиториях
 +<file>
 +apt search dante-server
 +
 +dante-server/jammy 1.4.2+dfsg-7build4 amd64
 +  SOCKS (v4 and v5) proxy daemon (danted)
 +</file>
 +Установим:
 +<file bash>
 +apt install dante-server
 +</file>
 +Проверим добавился ли Dante в автозагрузку:
 +<file bash>
 +systemctl is-enabled danted
 +enabled
 +</file>
 +
 +Правим конфигурационный файл /etc/danted.conf (сделайте предварительно бэкапа этого файла). Прописываем параметры в явном виде. Ниже полностью рабочий конфигурационный файл Dante Servera с доступом клиента по логину и паролю.
 +<file bash danted.conf>
 +
 +logoutput: syslog stdout /var/log/sockd.log
 +#logoutput: stderr
 +
 +internal: ens3 port = 1080
 +external: ens3
 +
 +socksmethod: username
 +#socksmethod: username none
 +
 +user.privileged: root
 +user.unprivileged: nobody
 +user.libwrap: nobody
 +
 +client pass {
 +        from: 0.0.0.0/0 to: 0.0.0.0/0
 +        log: error connect disconnect
 +}
 +
 +client block {
 +        from: 0.0.0.0/0 to: 0.0.0.0/0
 +        log: connect error
 +}
 +
 +socks pass {
 +        from: 0.0.0.0/0 to: 0.0.0.0/0
 +        log: error connect disconnect
 +}
 +
 +socks block {
 +        from: 0.0.0.0/0 to: 0.0.0.0/0
 +        log: connect error
 +}
 +</file>
 +
 +  * logoutput определяет, как Dante будет регистрировать подключения (в данном случае это происходит с помощью обычного системного лога).
 +  * user.privived предоставляет серверу root-права для проверки разрешений
 +  * user.uncitationd блокирует работу сервера в качестве непривилегированного пользователя (так как в этом нет необходимости, если нет более детализированных разрешений).
 +  * internal определяет порт, на котором запущен сервис, и IP-адреса, к которым можно подключиться.
 +  * external определяет сетевой интерфейс для исходящих подключений (это eth0 по умолчанию на большинстве серверов).
 +
 +Перечитаем конфиг демона
 +<file bash>
 +systemctl restart danted
 +</file>
 +Cервер Dante будет использовать для аутентификации обычные учетные записи пользователей Linux. Это нормально, однако пароль, используемый для этого соединения, будет отправлен в виде простого текста. Потому лучше создать выделенного пользователя SOCKS, у которого не будет никаких других прав в системе
 +
 +Создадим пользователя, который будет использовать наш SOCKS сервер и добавим его в группу proxy или в ту группу которая указана в параметре user.privileged конфига Dante.
 +
 +<file bash>
 +useradd -s /bin/false proxyuser && passwd proxyuser
 +usermod -aG proxy proxyuser
 +</file>
 +Разрешим в фаерволе, я использую [[UFW|UFW]], порт TCP 1080 для подключения клиентов
 +<file bash>
 +sudo ufw allow 1080/tcp
 +</file>
 +Все. Удачи!  --- //[[https://dieg.info/about/|Dmytro Yakovenko]] 2023/07/11//
 +
 +Если возникли ошибки при запуске Dante. Для того чтобы увидеть подробно причину ошибки нужно запустить демона вручную, командой danted. В моем случае ошибка сразу понятна - не настроен метод аутентификации
 +<file bash>
 +# danted
 +Jul 20 16:13:47 (1595250827.128796) danted[31184]: warning: checkconfig(): no socks authentication methods enabled.  This means all socks requests will be blocked after negotiation.  Perhaps this is not intended?
 +Jul 20 16:13:47 (1595250827.128892) danted[31184]: error: checkconfig(): no internal address given for server to listen for clients on
 +Jul 20 16:13:47 (1595250827.128927) danted[31184]: alert: mother[1/1]: shutting down
 +</file>
 +
 +Если после настройки журнала лога для службы danted вы получаете ошибки, например:
 +<file bash>
 +alert: configparsing(): could not (re)open logfile "/var/log/socks.log": Read-only file system
 +</file>
 +остановите службу и изменить конфигурацию службы запуска демона danted для разрешения записи в директорию /var/log/. Для этого добавьте строку ReadWriteDirectories, это будет выглядить так:
 +<file bash>
 +nano /lib/systemd/system/danted.service
 +...
 +InaccessibleDirectories=/boot /home /media /mnt /opt /root
 +ReadOnlyDirectories=/bin /etc /lib -/lib64 /sbin /usr /var
 +ReadWriteDirectories=/var/log
 +...
 +</file>
 +Примените изменения [[systemd|systemd]] и перезагрузите службу:
 +<file bash>
 +systemctl daemon-reload
 +systemctl restart danted
 +</file>
 +====== Проверка подключения через Dante ======
 +Для подключения можно использовать [[https://dieg.info/articles/luchshie-antidetekt-brauzery-dlya-raboty/|бесплатные антидетект браузеры]] с поддержкой SOCKS 5.
 +
 +Для тестирования можно использовать использовать [[curl|curl]]. Данная утилита установлена по умолчанию во всех современных средах Windows, Mac и Linux, поэтому вы можете открыть любую локальную оболочку для ее запуска:
 +
 +<file bash>
 +curl -v -x socks5://your_dante_user:your_dante_password@your_server_ip:1080 http://www.google.com/
 +</file>
 +====== Установка SOCKS сервер Dante в Ubuntu версии 14 и 16 ======
 +
 +В репозиториях Ubuntu 14.04.5 LTS Trusty и Ubuntu 16.04.2 LTS установлена старая версия Dante Server 1.1.19 и к тому же она не может работать с логином и паролем (доступ к прокси можно регулировать только [[iptables]]). Баг этот известен давно, но так и не был исправлен([[https://tech.tiq.cc/2015/10/how-to-set-up-danted-dante-server-socks-proxy-on-ubuntu-14-04-with-authentication/|how to set up danted (dante-server) SOCKS proxy on Ubuntu 14.04 with authentication]]).
 +
 +  * **Инсталляция и настройка** SOCKS сервера **Dante Server** из исходных кодов в [[Ubuntu]] 14.04.5 LTS Trusty в контейнере [[OpenVZ|OpenVZ]].
 +<file bash>
 +cd /opt
 +wget http://www.inet.no/dante/files/dante-1.4.2.tar.gz
 +tar -xvf dante-1.4.2.tar.gz
 +cd dante-1.4.2/
 +</file>Компиляция Dante Server. Вначале установим необходимые утилиты и зависимости Dante для компиляции Ubuntu:<file bash>
 +aptitude install gcc cc libwrap0 libwrap0-dev libpam0g-dev make</file>CentOS 6.6:<file bash>
 +yum install gcc pam-devel tcp_wrappers-devel
 +</file>
 +<file bash>
 +mkdir /opt/dante
 +./configure --prefix=/opt/dante
 +</file>К конце будет выведен статус конфигурации<file>
 +Client:            Enabled
 +Server:            Enabled
 +Preloading:        Enabled
 +Libwrap:           Enabled
 +BSD Auth:          Disabled, usable bsd_auth.h not found
 +PAM:               Enabled
 +GSSAPI:            Not found/disabled
 +KRB5:              Not found/disabled
 +SASL:              Not found/disabled
 +UPNP:              Not found/disabled
 +Compatability:     issetugid setproctitle strlcpy strvis
 +
 +                     Modules:
 +
 +redirect:          Not found
 +bandwidth:         Not found
 +ldap:              Not found
 +</file><file bash>
 +make
 +make install
 +</file>Проверим запускается ли собранный файл, посмотрим версию сервера:
 +<file bash>
 +/opt/dante/sbin/sockd -v
 +Dante v1.4.2.  Copyright (c) 1997 - 2014 Inferno Nettverk A/S, Norway
 +</file>Рабочий конфигурационный файл (подставьте свой IP или название сетевого интерфейса). Скачать файл sockd.conf командой<file bash>
 +wget -c http://wiki.dieg.info/_export/code/socks?codeblock=10 -O /etc/sockd.conf
 +</file>
 +<file bash sockd.conf>
 +#logoutput: /var/log/socks.log
 +logoutput: stderr
 +
 +# На каком сетевом интерфейсе и порту обслуживаем socks клиентов
 +internal: venet0:0 port = 1080
 +# С какого IP или интерфейса выходим во внешний мир
 +external: venet0:0
 +#internal: x.x.x.x port = 1080
 +#external: x.x.x.x
 +
 +# Используемый метод авторизации клиентов. none - без авторизации.
 +socksmethod: username
 +#socksmethod: username none
 +user.privileged: root
 +user.notprivileged: nobody
 +
 +client pass {
 +        from: 0.0.0.0/0 to: 0.0.0.0/0
 +        log: error connect disconnect
 +}
 +
 +client block {
 +        from: 0.0.0.0/0 to: 0.0.0.0/0
 +        log: connect error
 +}
 +
 +socks pass {
 +        from: 0.0.0.0/0 to: 0.0.0.0/0
 +        log: error connect disconnect
 +}
 +
 +socks block {
 +        from: 0.0.0.0/0 to: 0.0.0.0/0
 +        log: connect error
 +}
 +</file>Запуск сервера Dante как сервиса<file bash>
 +/opt/dante/sbin/sockd -D
 +</file>**Всё! Наслаждаемся работой.**
 +
 +
 +<file bash start.sh>
 +
 +#!/bin/bash
 +
 +/opt/dante/sbin/sockd -f /etc/sockd.conf -D
 +</file><file bash stop.sh>
 +#!/bin/bash
 +
 +/usr/bin/pkill sockd
 +</file>Добавим пользователя, который будет пользоваться нашим SOCKS сервером<file bash>
 +sudo useradd -s /bin/false proxyuser && sudo passwd proxyuser
 +</file>
 +
 +Разрешим TCP порт 1080 в фаерволе [[ufw]]<file bash>
 +sudo ufw allow proto tcp from any to any port 1080
 +</file>Вывести все правила ufw можно командой<file>
 +ufw status
 +</file>
 +  * Разрешаем клиенту 192.168.0.2 выход через socks.
 +<file>
 +client pass {
 +       from: 192.168.0.2/32 to: 0.0.0.0/0
 +       log: connect disconnect iooperation
 +}
 +</file>
 +
 +
 +====== Альтернативные SOCKS сервера ======
 +  * [[https://github.com/3proxy/3proxy|3proxy с поддержкой http(s) и socks5-proxy]] - это маленький многоплатформенный набор прокси-серверов (под Linux/Unix и Windows, включая 64-битные версии).
 +  * ss5.sourceforge.net SS5 is a socks server that implements the SOCKS v4 and v5 protocol для CENT OS
 +
 +<panel type="primary" title="Читайте также">
 +  * [[https://dieg.info/review/obzor-brauzera-dolphin-anty/|Dolphin {anty} – антидетект браузер для повседневного защищённого использования]]
 +  * [[vpn]]
 +  * [[openvpn_server_in_5_minutes]]
 +  * [[proxy]]
 +  * [[Shadowsocks]]
 +</panel>

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!