Як налаштувати проксі SOCKS5 на віртуальному приватному сервері (VPS)
08:31, 02.12.2022
Хоча проксі-сервери дуже схожі за своєю функцією на VPN, вони мають одну суттєву відмінність – трафік не шифрується, тобто рівень гарантування безпеки тут буде значно нижчим, аніж під час використання віртуальних приватних мереж. Незважаючи на це, проксі-сервери активно використовують, оскільки цей метод дає змогу:
- приховати свою IP-адресу під час базової перевірки;
- приховати своє фактичне місце розташування – сайти, на які ви заходите, фіксують лише регіон, у якому розташований проксі-сервер;
- убезпечити ваш пристрій від небажаних сайтів завдяки блокуванню тих сайтів, які гарантовано несуть небезпеку, містять шкідливе ПЗ тощо.
Але при цьому варто розуміти, що проксі-сервер не може убезпечити вас від просунутих методів виявлення, він не шифрує трафік і може збирати дані про користувачів. Чи будуть ці дані передаватися третім особам – питання відкрите, тому використовуйте тільки перевірені проксі-сервери.
Далі в статті ми розповімо, як налаштувати проксі SOCKS5 на віртуальному приватному сервері, а також які варіації цієї технології існують.
Які існують типи проксі
Основних типів проксі існує п'ять:
- FTP проксі – їх використовують для завантаження даних на FTP сервери.
- CGI (анонімайзери) – як правило, це веб-сайти, за допомогою яких можна отримати доступ до будь-яких інших заблокованих сайтів. Тобто якщо ви, наприклад, хочете відвідати сайт, який заблоковано у вашій країні, достатньо перейти на такий сайт-анонімайзер і ввести шуканий URL в адресне поле. Нічого встановлювати на комп'ютер не потрібно – все відбувається через хмару. Єдиний недолік – можуть коштувати грошей.
- SMTP, POP3 і IMAP – технології, які використовують для надсилання та приймання електронної пошти.
- HTTP і HTTPS проксі – потрібні для перегляду веб-сторінок.
- 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 або будь-яким іншим аналогічним.
Встановлення 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 – це позбавить від зайвого головного болю і дасть змогу безпечно обходити регіональні блокування, зберігаючи повну анонімність і конфіденційність.