Як налаштувати проксі SOCKS5 на віртуальному приватному сервері (VPS)

Як налаштувати проксі SOCKS5 на віртуальному приватному сервері (VPS)

02.12.2022
Автор: HostZealot Team
2 мін.
429

Хоча проксі-сервери дуже схожі за своєю функцією на VPN, вони мають одну суттєву відмінність – трафік не шифрується, тобто рівень гарантування безпеки тут буде значно нижчим, аніж під час використання віртуальних приватних мереж. Незважаючи на це, проксі-сервери активно використовують, оскільки цей метод дає змогу:

  • приховати свою IP-адресу під час базової перевірки;
  • приховати своє фактичне місце розташування – сайти, на які ви заходите, фіксують лише регіон, у якому розташований проксі-сервер;
  • убезпечити ваш пристрій від небажаних сайтів завдяки блокуванню тих сайтів, які гарантовано несуть небезпеку, містять шкідливе ПЗ тощо.

Але при цьому варто розуміти, що проксі-сервер не може убезпечити вас від просунутих методів виявлення, він не шифрує трафік і може збирати дані про користувачів. Чи будуть ці дані передаватися третім особам – питання відкрите, тому використовуйте тільки перевірені проксі-сервери.

Далі в статті ми розповімо, як налаштувати проксі SOCKS5 на віртуальному приватному сервері, а також які варіації цієї технології існують.

Які існують типи проксі

Основних типів проксі існує п'ять:

  1. FTP проксі – їх використовують для завантаження даних на FTP сервери.
  2. CGI (анонімайзери) – як правило, це веб-сайти, за допомогою яких можна отримати доступ до будь-яких інших заблокованих сайтів. Тобто якщо ви, наприклад, хочете відвідати сайт, який заблоковано у вашій країні, достатньо перейти на такий сайт-анонімайзер і ввести шуканий URL в адресне поле. Нічого встановлювати на комп'ютер не потрібно – все відбувається через хмару. Єдиний недолік – можуть коштувати грошей.
  3. SMTP, POP3 і IMAP – технології, які використовують для надсилання та приймання електронної пошти.
  4. HTTP і HTTPS проксі – потрібні для перегляду веб-сторінок.
  5. SOCKS5 – сервіс, що перенаправляє вихідний і вхідний інтернет-трафік через віддалений проксі-сервер. Забезпечує маскування вашої реальної IP-адреси, приховує геолокацію і запобігає випадковому витоку конфіденційної інформації. Оптимальний варіант для обходу регіональної цензури для VPS.

Найбільш просунутою і масовою технологією є SOCKS5, і вона ж найкраще підходить для використання у зв'язці з VPS.

Як налаштувати проксі SOCKS5 на віртуальному сервері з Ubuntu 18 і вище

Відразу скажемо, швидко і просто не вийде. Але якщо чітко слідувати нашій інструкції, це не забере багато часу і сил.

Насамперед орендуйте VPS (https://www.hostzealot.com/vps ) на базі Ubuntu 18.04.4 LTS (https://www.hostzealot.com/vps/os-ubuntu ). Тут усе просто – зв'яжіться з хостинг-провайдером, який вас цікавить, і повідомте, який тарифний план вас цікавить. Вам допоможуть підібрати оптимальний за потужністю 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 або будь-яким іншим аналогічним.

Як налаштувати проксі socks5 на віртуальному приватному сервері (vps)

Встановлення 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 – це позбавить від зайвого головного болю і дасть змогу безпечно обходити регіональні блокування, зберігаючи повну анонімність і конфіденційність.

# Як зробити Поділитися:
Статті за темою