Безопасный SOCKS5 прокси для Telegram за 1 Евро и 10 минут
Не все прокси одинаково полезны. На волне новостей о блокировке мессенджера Телеграмм стало актуально поднимать свой SOCKS5 прокси, так как чужой использовать не безопасно — неизвестно, кому принадлежат серверы, какое ПО на них используется, и какие в нем присутствуют уязвимости. Кроме того, публичные прокси часто очень медленные, поскольку большое число клиентов одновременно «пытаются» его использовать, перегружая ресурсы сервера. Под катом инструкция по быстрой настройке приватного SOCKS5 прокси с аутентификацией за 1 евро и 10 минут времени и возможностью в дальнейшем расширить защиту сервера при помощи усиленной аутентификации.
Решил проверить предложение итальянского хостинг-провайдера Aruba, который предлагает VPS за 1 евро в месяц с белым IP, входящим в эту цену. За 1 евро получил боевой сервер с 1 ядром. 1 Гб памяти, 20 Гб хранилища, 250 Гб трафика в месяц. В качестве операционной системы я выбрал свою любимую Ubuntu server 16.04. В качестве прокси сервера — Dante.
Установка ОС производится при конфигурировании сервера из шаблона. Спустя 2–3 минуты после создания, машина будет готова к SSH по установленному паролю, либо загруженному SSH-ключу (в той же веб-админке).
Сразу оговорюсь, что аутентификация у прокси по системному пользователю не работает в пакете, предоставляемом в дистрибутиве, а открытый прокси нам не нужен. Мы воспользуемся дистрибутивом с исходниками и соберем Dante сами, благо процесс сборки на нашей ОС проходит без единой ошибки. Итак, приступим:
Регистрируемся на arubacloud, заводим сервер за 1 евро, создаем по шаблону ОС Ubuntu Server 16.
Заходим по SSH на наш сервер, скачиваем и собираем Dante.
wget https://www.inet.no/dante/files/dante-1.4.1.tar.gz
tar -xvf dante-1.4.1.tar.gz
cd dante-1.4.1
apt-get install gcc make
mkdir /home/dante
./configure --prefix=/home/dante
make
make install
Корректность установки можно проверить введя
/home/dante/sbin/sockd -v
Скачаем файл настроек
wget -O /home/dante/danted.conf https://demo.a-rd.ru/danted.conf
Конфигурация, если используется на описываемой платформе, не отличается, т. е. по умолчанию именно такая. Все необходимое уже есть.
logoutput: /var/log/socks.log
internal: eth0 port = 1080 #
В качестве входящего соединения используем наш дефолтный интерфейс на порту 1080
external: eth0 #В качестве выходного также его
method: username
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
}
pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect disconnect
}
block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}
Для запуска выполните
/home/dante/sbin/sockd -f /home/dante/danted.conf -D
Бинарник лежит именно в
home/dante/sbin/
Для остановки
pkill sockd
Создадим системного пользователя, которого будем использовать для нашего прокси (без возможности зайти по SSH).
useradd --shell /usr/sbin/nologin username
Зададим ему пароль
passwd username
Перезапустим Dante с нашим конфигом
pkill sockd
/home/dante/sbin/sockd -f /home/dante/danted.conf -D
Если перезагрузить сервер, Dante будет необходимо запустить вручную.
Теперь необходимо подключить прокси в настройках Мессенджера: Настройки > Данные и диск → Использовать прокси → SOCKS5. Вводим наш IP, 1080 порт, логин и пароль для созданного пользователя. Настройка доступна для всех десктопных приложений Телеграмм в разделе Расширенные настройки → Тип соединения → TCP с прокси.
Как и положено в мире информационной безопасности, сразу после настройки нужно потратить еще немного времени на защиту своего сервера, а именно доступа к консоли по SSH. Для этого рекомендую заменить традиционный подход к защите доступа с помощью традиционной пары «логин-пароль» на специализированные устройства для обеспечения защищенного доступа на основе ассиметричной криптографии, в нашем примере это USB-токены JaCarta PKI. При таком сценарии вы будете входить на сервер по сертификату, закрытый ключ от которого находится в самом устройстве JaCarta PKI и не может быть извлечен. Как это сделать, описано в этой статье.
Если у вас нет желания использовать устройства для усиленной аутентификации на основе ассиметричной криптографии, вы можете настроить вход по одноразовым паролям (OTP) с сервисом JaCarta Authentication Server. Статью об этом можно найти здесь .