Как настроить прокси SOCKS5 на виртуальном частном сервере (VPS)
07:45, 02.12.2022
Хотя прокси-серверы очень похожи по своей функции на VPN, они имеют одно существенное отличие – трафик не шифруется, то есть уровень обеспечения безопасности здесь будет значительно ниже, чем при использовании виртуальных частных сетей. Несмотря на это, прокси-серверы активно используют, так как этот метод позволяет:
- скрыть свой IP-адрес во время базовой проверки;
- скрыть свое фактическое местоположение – сайты, на которые вы заходите, фиксируют лишь регион, в котором расположен прокси-сервер;
- обезопасить ваше устройство от нежелательных сайтов за счет блокировки тех сайтов, которые гарантированно несут опасность, содержат вредоносное ПО и т.д.
Но при этом стоит понимать, что прокси-сервер не может обезопасить вас от продвинутых методов обнаружения, он не шифрует трафик и может собирать данные о пользователях. Будут ли эти данные передаваться третьим лицам – вопрос открытый, поэтому используйте только проверенные прокси-серверы.
Далее в статье мы расскажем, как настроить прокси SOCKS5 на виртуальном частном сервере, а также какие вариации этой технологии существуют.
Какие существуют типы прокси
Основных типов прокси существует пять:
- FTP прокси – их используют для загрузки данных на FTP сервера.
- CGI (анонимайзеры) – как правило, это веб-сайты, посредством которых можно получить доступ к любым другим заблокированным сайтам. То есть если вы, например, хотите посетить сайт, который заблокирован в вашей стране, достаточно перейти на такой сайт-анонимайзер и ввести искомый URL в адресное поле. Ничего устанавливать на компьютер не нужно – всё происходит через облако. Единственный недостаток – могут стоить денег.
- SMTP, POP3 и IMAP – технологии, которые используют для отправки и приема электронной почты.
- HTTP и HTTPS прокси – нужны для просмотра веб-страниц.
- SOCKS5 – сервис, перенаправляющий исходящий и входящий интернет-трафик через удаленный прокси-сервер. Обеспечивает маскировку вашего реального IP-адреса, скрывает геолокацию и предотвращает случайные утечки конфиденциальной информации. Оптимальный вариант для обхода региональной цензуры для VPS.
Наиболее продвинутой и массовой технологией является SOCKS5, и она же лучше всего подходит для использования в связке с VPS.
Как настроить прокси SOCKS5 на виртуальном сервере c Ubuntu 18 и выше
Сразу скажем, быстро и просто не получится. Но если четко следовать нашей инструкции, это не отнимет много времени и сил.
Первым делом арендуйте VPS на базе Ubuntu 18.04.4 LTS. Здесь всё просто – свяжитесь с интересующим хостинг-провайдером и сообщите, какой тарифный план вас интересует. Вам помогут подобрать оптимальный по мощности VPS или VDS индивидуально.
Далее подключитесь к серверу от имени администратора и обновите пакеты:
apt update apt full-upgrade
Узнайте, какая версия пакета Dante SOCKS сервера в ваших репозиториях:
apt search dante-server dante-server/jammy 1.4.2+dfsg-7build4 amd64 SOCKS (v4 and v5) proxy daemon (danted)
Теперь устанавливаем Dante:
apt install dante-server
И ставим его в автозагрузку:
systemctl is-enabled danted enabled
Теперь откройте конфигурационный файл /etc/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 }
Здесь требуются некоторые разъяснения:
- logoutput – определяет механизм регистрации подключений (в нашем примере всё будет происходить через стандартный системный лог).
- user.privived – предоставление серверу root-прав для проверки разрешений.
- user.uncitationd – необходимо, чтобы заблокировать работу сервера в качестве пользователя без привилегий.
- internal – задает порт, на котором запущен сервис, а также IP-адреса, разрешенные для подключения.
- external – определяет сетевой интерфейс для исходящих подключений.
Теперь переходим к созданию пользователя, который и будет использовать наш SOCKS5 сервер. Его обязательно нужно добавить в группу прокси:
useradd -s /bin/false proxyuser && sudo passwd proxyuser usermod -aG proxy proxyuser
Далее в фаерволе разрешаем порт TCP 1080 для подключения клиентов:
sudo ufw allow 1080/tcp
На этом настройка прокси SOCKS5 на VPS завершена. После этого проверьте подключение через Dante – воспользуйтесь каким-нибудь бесплатным антидетект браузером с поддержкой SOCKS5: например, Dolphin Anty или любым другим аналогичным.
Установка SOCKS сервера Dante в Ubuntu 16.04
На столь старых версиях Ubuntu по умолчанию установлена устаревшая версия Dante Server 1.1.19, которая, ко всему прочему, не работает с логином и паролем. То есть доступ к прокси регулируется исключительно путем модификации правил iptables. Таким образом, сперва нам потребуется установить и установить необходимый для сборки набор софта и зависимостей:
apt-get install -y autoconf automake libtool pkg-config checkinstall libwrap0 libwrap0-dev libpam0g-dev
Следом создаем каталог для последующей работы и переходим в него:
mkdir dante && cd ~/dante
Теперь перейдите на официальный сайт разработчиков и загрузите последнюю версию Dante. Сделать это можно и через командную строку:
wget https://www.inet.no/dante/files/dante-1.4.2.tar.gz
Распакуйте и перейдите в соответствующий каталог:
tar -zxvf dante-1.4.2.tar.gz cd dante-1.4.2
Задайте конфигурацию сборки:
./configure --prefix=/etc/dante
В итоге должно получиться что-то подобное:
Configure status: 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
Следующий шаг – компиляция исходников:
make
Теперь можете приступать к установке собранного сервера. Лучше всего делать это через checkinstall:
checkinstall # Нажмите y, затем Enter для создания каталога с документацией. The package documentation directory ./doc-pak does not exist. Should I create a default set of package docs? [y]: y Preparing package documentation...OK # Описание можно не прописывать, везде жмите Enter Please write a description for the package. End your description with an empty line or EOF. >>
Когда установка будет завершена, создастся deb-пакет (dante_1.4.2-1_amd64.deb), его в любой момент можно установить на другую виртуальную машину, но теперь больше не потребуется предварительная конфигурация и сборка.
Если потребуется удалить установленный пакет, используйте команду:
dpkg -r dante
Как настроить автозапуск сервера
Перейдите в директорию /etc/init.d/ и создайте скрипт с названием sockd:
nano /etc/init.d/sockd
Его содержимое должно выглядеть следующим образом:
#! /bin/sh ### BEGIN INIT INFO # Provides: sockd # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start the dante SOCKS server. # Description: SOCKS (v4 and v5) proxy server daemon (sockd). # This server allows clients to connect to it and # request proxying of TCP or UDP network traffic # with extensive configuration possibilities. ### END INIT INFO # # dante SOCKS server init.d file. Based on /etc/init.d/skeleton: # Version: @(#)skeleton 1.8 03-Mar-1998 miquels@cistron.nl # Via: https://gitorious.org/dante/pkg-debian PATH=/sbin:/usr/sbin:/bin:/usr/bin NAME=sockd DAEMON=/etc/dante/sbin/$NAME DAEMON_ARGS="-D" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME DESC="Dante SOCKS daemon" CONFFILE=/etc/$NAME.conf # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.2-14) to ensure that this file is present # and status_of_proc is working. . /lib/lsb/init-functions set -e # This function makes sure that the Dante server can write to the pid-file. touch_pidfile () { if [ -r $CONFFILE ]; then uid="`sed -n -e 's/[[:space:]]//g' -e 's/#.*//' -e '/^user\.privileged/{s/[^:]*://p;q;}' $CONFFILE`" if [ -n "$uid" ]; then touch $PIDFILE chown $uid $PIDFILE fi fi } case "$1" in start) if ! egrep -cve '^ *(#|$)' \ -e '^(logoutput|user\.((not)?privileged|libwrap)):' \ $CONFFILE > /dev/null then echo "Not starting $DESC: not configured." exit 0 fi echo -n "Starting $DESC: " touch_pidfile start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 echo "$NAME." ;; reload|force-reload) # # If the daemon can reload its config files on the fly # for example by sending it SIGHUP, do it here. # # Make this a do-nothing entry, if the daemon responds to changes in its config file # directly anyway. # echo "Reloading $DESC configuration files." start-stop-daemon --stop --signal 1 --quiet --pidfile \ $PIDFILE --exec $DAEMON -- -D ;; restart) # # If the "reload" option is implemented, move the "force-reload" # option to the "reload" entry above. If not, "force-reload" is # just the same as "restart". # echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON sleep 1 touch_pidfile start-stop-daemon --start --quiet --pidfile $PIDFILE \ --exec $DAEMON -- -D echo "$NAME." ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; *) N=/etc/init.d/$NAME # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $N {start|stop|restart|status|force-reload}" >&2 exit 1 ;; esac exit 0
Сохраните изменения, и не забудьте этот скрипт сделать исполняемым:
chmod +x /etc/init.d/sockd
Перечитайте всех демонов:
systemctl daemon-reload
И добавьте sockd в автозапуск:
systemctl enable sockd systemctl start sockd
И напоследок все проверьте:
systemctl status sockd
Отныне вы можете управлять прокси-сервером SOCKS с помощью стандартных команд systemctl.
Заключение
Конечно, описанные методы – не самые простые в исполнении, здесь нужно некоторое понимание принципов работы описанных утилит и протоколов. В качестве альтернативы вы можете использовать платные VPN – это избавит от лишней головной боли и позволит безопасно обходить региональные блокировки, сохраняя полную анонимность и конфиденциальность.