Решил проверить предложение итальянского хостинг-провайдера Aruba , который предлагает VPS за 1 евро в месяц с белым IP, входящим в эту цену. За 1 евро получил боевой сервер с 1 ядром. 1 Гб памяти, 20 Гб хранилища, 2 Тб трафика в месяц. В качестве операционной системы я выбрал свою любимую 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. Статью об этом можно найти здесь .
Комментарии (102)
justabaka
18.04.2018 13:30+1Не нужно вводить людей в заблуждение на волне хайпа: единственный более-менее безопасный SOCKS-сервер это тот, где аутентификация осуществляется через GSSAPI (при этом соединение шифруется). При использовании любого другого метода логин и пароль передаются плейнтекстом в открытом виде без единого намека на шифрование, а проксируемые соединения также никак не шифруются.
Подробнее можно узнать в соответствующих RFC или в документации Dante: www.inet.no/dante/doc/1.4.x/config/auth.htmlDobryash
18.04.2018 17:14А использовать GSSAPI с телеграммом возможно?
justabaka
18.04.2018 17:17Если честно, я не в курсе. Но такой «стеклянный» туннель безопасным в любом случае называть нельзя.
Self_Perfection
18.04.2018 23:15десктоп клиент невозможно, а для андроид клиента нормальный багтрекер не завезли.
Barafu
19.04.2018 10:29А ещё есть Shadowsocks. Локальный клиент изображает из себя SOCKS для прриложений, трафик шифрует и посылает на сервер, где он выходит в интернеты. Настройка простейшая. Если правильно выбрать алгоритм шифрования под железо, будет быстрее, чем SSH туннель в разы. Из недостатков — в репы попал только в Ubuntu 16.10 и я не знаю как на нём сделать открытый порт.
surefire
18.04.2018 14:00Зачем еще какие либо SOCKS серверы, если SSH уже с SOCKSом на борту.
doctorblack Автор
18.04.2018 14:12-1Аутентифицироваться по логину и паролю системного пользователя имеющего доступ по SSH несекьюрно, тем более, что логин и пароль передаются плэйнтекстом. Возможно вам также потребуется поделиться доступом к прокси с кем то из недоверенного круга.
bykvaadm
18.04.2018 14:16вы кстати вкурсе, что
useradd --shell /usr/sbin/nologin username
не спасает ваш сервер от логина под этим пользователем по ssh? по логину и паролюruspartisan
18.04.2018 16:22Можете подробнее рассказать? У меня не пускает.
bykvaadm
18.04.2018 18:53+2t.me/bykvaadm/655
Не совсем правильно выразился. ssh позволяет не логиниться, но порты открывать во внутреннюю сеть прокси-сервера или поднимать свой сокс прокси — ssh -D -Nruspartisan
18.04.2018 19:51Хм, и правда неприятно. А есть какие-то способы решения? Я понимаю, что socks5 в принципе не очень секьюрно, но телеграм свой трафик шифрует, а ни для чего больше я этот прокси использовать не планирую.
bykvaadm
18.04.2018 19:56+1кривое, но рабочее решение — указать в качестве шелла какую-нибудь херню)))
более правильное — в кофиге ссш
Match User user1,user2,user3,user4
PasswordAuthentication noAndrusha
18.04.2018 22:50Совсем правильное — поставить 3proxy, у которого пользователи заводятся в его файле конфигурации. Ну или прикрутить к Dante FreeRADIUS, но по мне это уже перебор.
surefire
18.04.2018 14:24Аутентифицироваться по логину и паролю
Чем не угодила авторизация по ключу вместо пароля?
Возможно вам также потребуется поделиться доступом к прокси с кем то из недоверенного круга.
К счастью это не проблема. Но это не тема вашей статьи. Которая уж точно не покрывает безопасные кейсы, особенно если судить о рекомендацией использовать код из подозрительного источника запущенный от root'а.
doctorblack Автор
18.04.2018 14:27Мы настраиваем прокси для единственной цели — Telegram. Если вы знаете способ аутентифицироваться в прокси в приложении Telegram по ключу, очень прошу поделиться.
Ссылку на исходники заменил на сайт разработчика.surefire
18.04.2018 14:34Если вы знаете способ аутентифицироваться в прокси в приложении Telegram по ключу, очень прошу поделиться.
Это и не нужно, SOCKS не безопасен. Все ваши подключения можно легко отследить и как минимум заблокировать, когда начнут душить незащищённые прокси, только дело времени. Всё, что нужно это использовать локальный SSH как безопасный туннель во внешний мир.
FrozenWalrus
19.04.2018 12:14Локальный SSH туннель для iOS приложения Telegram? Как? Только не предлагайте заворачивать весь трафик в VPN. Слава богу, пока это без надобности.
KYuri
18.04.2018 14:44За 1 евро получил боевой сервер с 1 ядром. 1 Гб памяти, 20 Гб хранилища, 250 Гб трафика в месяц.
А на сайте говорят, что за 1 евро дают 2ГБ трафика в месяц.
doctorblack, это у них где-то подвох, или вы напутали?dmbarsukov
18.04.2018 14:50откуда и вы и ТС берете цифры?
2 TB/month data transfer
на минимальном тарифе
doctorblack Автор
18.04.2018 14:58Вероятно напутал, указано 2 Тб трафика. Спасибо, поправил.
AlexFirst
18.04.2018 15:46Это именно 2Терабита, верно?
doctorblack Автор
18.04.2018 16:57Если верить провайдеру, то они предоставляют от 1000Мбит/с пропускной способности интерфейса и 2 Тбайт трафика в месяц.
miravingin
18.04.2018 15:58Там написано «2 TB/month data transfer».
Это вроде как означает «два терабайта трафик», или я ошибаюсь?
UPD: буду стараться обновлять камменты перед написанием своего…
LukaSafonov
18.04.2018 14:55Простой VPN за 3 секунды:
sshuttle -r user@XXX.XXX.XXX.XXX 0.0.0.0/0
где XXX.XXX.XXX.XXX ваш сервер.begemoth3663
18.04.2018 15:47… с кучей питонячего го#@ища кол-вом ~72 единицы и необходимостью наличия питона на сервере. даже не знаю: плакать или смеяться от такого "vpn"....
DarkByte
18.04.2018 14:59Зачем сокс, если телеграм и так справлялся с обходом блокировки, а теперь её и вовсе сняли?
Зачем персональный/защищённый/безопасный сокс, если mtproto никто не сломал?
Себе я конечно же поднял свой прокси и на всякий случай раздал доступ друзьям, но лишь потому, что у меня уже был сервер, и поднять на нём прокси не стоило ничего. И прокси даже пригодилось, клиент на мобильной винде блокировки не обходил. Но не будь у меня своего сервера, я бы наверное просто взял один из публично доступных сокс прокси, которые можно нагуглить по запросу «free socks proxy».doctorblack Автор
18.04.2018 15:21На данный момент лично я не берусь предсказывать ситуацию по телеграму в ближайшем будущем. Возможно эта нелепая блокировка забудется, но нужно рассматривать все варианты. Касательно бесплатных прокси — опыт показывает, что они медленные, нестабильные и принадлежат не мне)
sindzicat
18.04.2018 15:04Свой сервер — это всё хорошо, конечно (мы не можем проверить провайдера VPS, и вынуждены ему тупо довериться или не пользоваться). Но мне кажется, что хорошо, пока это наш сервер не заблочат (или пока случайно не попадёт под блокировку). Так что у VPS здесь большое преимущество, т.к. можно легко поменять ip. Поправьте меня пожалуйста, если я ошибаюсь.
doctorblack Автор
18.04.2018 15:20В данном посте речь идет о тарифе VPS с неизменяемыми IP, т е поменять в тарифе за 1 евро IP не получится.
miravingin
18.04.2018 16:09Выборочно этот конкретный IP никому не нужен. Его блочить никто не будет.
Если уж блочить, то сразу целую подсеть. А там глядишь весь данный хостинг-провайдер станет недоступен.
mihmig
18.04.2018 15:12Этот аруба включил без предупреждения виртуалку. Кнопка включения виртуалки а админке просто не работала. Страница отправки тикета не работает.
Опытным путём выяснили, что нужно пополнить баланс (хотя было проплачено на год)
Grogina
18.04.2018 15:13если уж на то пошло на lowendbox можно найти сервер за $5 в год и потом ssh -C2qTnN -D 8080 user@server
doctorblack Автор
18.04.2018 15:17Не нашел такого тарифа, самый стартовый, за 2$ в месяц, выглядит так
VM-Starter:
– 1GB RAM
– 1GB vSwap
– 4x vCPU
– 30GB HDD Space
– 1TB Transfer
– 1Gbps Uplink
– 1x IPv4
– OpenVZ/SolusVM
– Coupon: HPYSALE
– $2/monthbykvaadm
18.04.2018 15:42есть вот такой:
OpenVZ 2018
2GB RAM
2 x vCores
20GB Pure SSD
2TB Bandwidth
1Gbps Uplink
1 x IPv4
OpenVZ (SolusVM)
Linux Only
$10/yr
Grogina
18.04.2018 17:32там бывают спецпредложения и распродажи всякие, как пример — mrvm.net, которым я пользуюсь сейчас, стоит $5 год за NAT256 (предполагаю была акция по набору клиентов).
Про качество ничего не скажу т.к. использую раз в несколько дней исключительно как прокси.
Grogina
18.04.2018 17:37OpenVZ Offer #1:
1 x vCore
512MB Memory
5GB Pure SSD
2TB Bandwidth
1Gbps Port
1 x IPv4
OpenVZ/SolusVM
[ORDER] $7.50/yr (Pre-pay 3-years to get either Double Memory, IP’s, CPU or SSD space)
дальше лень листать
ruspartisan
18.04.2018 19:49Есть интересный вариант с yoctobox (но я пока сам его не пробовал). Там 15 долларов в год, но зато безлимит по трафику хоть.
untilx
18.04.2018 15:14Если никогда не настраивали прокси/соксы или просто лень, то рекомендую попробовать 3proxy, как самый простой. В своё время пользовался ним, когда универский провайдер пытался убить торренты закрытием портов выше 1000.
surefire
18.04.2018 15:23+1Безопасный SOCKS5
SOCKS5 по определению не может быть безопасным, он не для этого проектировался.
А парольная авторизация системных пользователей, через незащищённый SOCKS5 это даже не дыра в безопасности, это парадная дверь к серверу.begemoth3663
18.04.2018 15:53при этом обратите внимание, что пост — от инженера (не стажёра!) из компании, занимающейся информационной безопасностью… да, прав был Meteo в своё время об этой конторе...
untilx
18.04.2018 15:54Не знаю, что имел в виду автор, но обычно, когда говорят о прокси/соксах, слова безопасный, анонимный и иже с ними приобретают несколько иной смысл.
YaakovTooth
18.04.2018 15:51Полный ахтунг во всём от начала и до конца.
ledascho
18.04.2018 15:581. 1€ в месяц — это без учета НДС. В моем случае — +19%. Разорение, конечно, невелико, но раздражает
2. Ниже на странице хостера дают free trial на 2 месяца — www.arubacloud.com/free-trial.aspxValdikSS
18.04.2018 18:52Если вы из России, напишите в поддержку, вам отключат VAT, и будете платить ровно €1.
roller
19.04.2018 18:32+ лично мне чуть ли не после каждого платежа присылают промокоды на теже самые 20%
decomeron
18.04.2018 16:17Уважаемые, вместо того что бы ругать, предлагайте в комментах свои варианты. Будем сказать спасибо
Magn
18.04.2018 16:58Можно упросить настройку dante до одной команды
hub.docker.com/r/schors/tgdante2
Coffin
18.04.2018 17:04+1Не советую.
Я в начале прошлой недели закупил VPS за 1евро.
Скорость было около 80-100мбит, при обещанных 1000мбит, а после того как начали появляться такого рода статьи, то скорость упала до 1-12мбит, что печалит.
Тех под отвечает примерно вот так.
Dear customer,
Raw connectivity performance depends on multiple factors. Time — global traffic loads fluctuate all the time form a point A to B depending of the quantity of data transfer at a specific time window linked to the global load generated by users on the network of the public Cloud platform Routes — path to transfer data packets remains different when location change (see traceroute command) IP transit-Tier1 provider /ISP network — depending of the physical and multiple networks linking A to B the bandwidth or access to bandwidth may vary according to time/load/peering/…
Kellis
18.04.2018 17:28Больше интересует то, как при использовании Данте или другого прокси заставить работать звонки.
doctorblack Автор
18.04.2018 17:53Проверил, для звонков работает, если указать «Использовать для звонков», в настройках прокси в самом телеграме.
AlePil
18.04.2018 17:47Aruba говорите?
Попробовать, конечно, оно можно, но мой опыт говорит о том, что это будет медленно и слезливо-печально все, как всегда бывает, когда Aruba что-то там делает почти даром.mspain
18.04.2018 18:19Арубой за 1евро пользуюсь с год, всё отлично. хотя есть и например time4vps eu за тот же евро. Но аруба на порядок круче, тк не опенвз, а полноценная виртуализация
modus
19.04.2018 13:59Вот-вот. У них сайт запросы обрабатывает — замучаешься ждать. А ssh ппц какой медленный за один евро. Нафиг такой сервис нужен, лучше уж найти подороже да пошустрее.
hzone
19.04.2018 13:59ОЧЕНЬ ШУСТРО работает (debian 9 + danted с pam.user + отключённая ssh-auth По паролю)
selivanov_pavel
18.04.2018 19:19Я тут на коленке собрал ещё более быстрый вариант настройки своего socks:
curl https://selivan.github.io/socks.txt | sudo bash
Описание: https://selivan.github.io/socks/
З.Ы. Да,
curl|bash
это плохо, но если виртуалка или контейнер больше ни для чего не используется, то не страшно. Ну и никто не мешает прочитать скрипт перед запуском.alexZzZzZzZ
19.04.2018 12:20Да, curl|bash это плохо, но если виртуалка или контейнер больше ни для чего не используется
Ни для чего, кроме как для проксирования всего или части трафика. Я бы не рискнул. Тем более, что ручная настройка и так не длинная.selivanov_pavel
19.04.2018 15:11OK:
curl -O https://selivan.github.io/socks.txt; less socks.txt; sudo bash socks.txt
. Всё равно быстрее ручной настройки :)
Vilgelm
19.04.2018 07:17Можно сократить до двух строчек:
wget --no-check-certificate https://raw.github.com/Lozy/danted/master/install.sh -O install.sh bash install.sh --port=%port% --user=%login% --passwd=%password%
thekvs
19.04.2018 11:47Дебианизированный SOCKS5 прокси Dante: https://cloud.mail.ru/public/5BQ5/nWrt4Y5vT
Использует libpam-pwdfile (sudo apt install libpam-pwdfile), т.е. системного пользователя заводить не надо, файл с паролями /etc/dante/pwdfile в формате «username:hash» на строку. Для генерации хэша использовать mkpasswd -m sha-512 из пакета whois.
Проверено на Ubuntu 16.04, на более новых может не работать. Порт и интерфейс поправьте по своему вкусу в конфиге.
bonnzer
19.04.2018 14:00Почему не использовать обычный ssh -D в паре с аутентификацией по ключу? Зачем эти пляски с бубном с непонятными сторонними приложениями?
Stanislavvv
19.04.2018 14:25Сделайте такое проксирование для не-IT начальника с айфоном и телеграмом :-)
bonnzer
19.04.2018 15:19+1Не сказал бы, что ЦА данной статьи — обычные домохозяйки =)
Ну да лан, каждый хохочет как хочет )
oCeHb
19.04.2018 14:00Весь смысл статьи начинается с «Как и положено в мире информационной безопасности»
Хорошая попытка Аладдин
Rhoads
19.04.2018 21:38Безопасный SOCKS5 прокси для Telegram за 0 Евро и 1 минуту:
apt-get install tor echo "ExcludeExitNodes {RU}" >> /etc/tor/torrc
PRISM
19.04.2018 21:38Вот так первый раз выкатишь, что-то стоящее, как ты думаешь, на суд общественности, словно крылья выросли, а тут… бац, камнем по морде и вниз!
Voenniy
20.04.2018 10:22Сделал себе за несколько секунд при помощи этого скрипта
github.com/S-o-T/telegram-3proxy-install
artemtam
20.04.2018 12:57Dante работает отвратительно, на VPS с 1GB памяти с более-менее нагрузкой он не справится. 3proxy намного менее требователен к ресурсам, хотя и не совсем оптимально использует thread-ы.
teleghost
21.04.2018 00:13Не ожидал от представителя отрасли ИБ столь поверхностной статьи…
1. SOCKS5 при работе с Telegram не может без пароля в открытом виде (justabaka et al), это блок-фактор.
2. А как с обновлениями безопасности на саму систему, SSH и SOCKS? Ручками? Или думаем на пару месяцев вперёд?
3. Про мелочи вроде автозапуска коллеги уже высказались.
4. Про контроль использования сервиса (общие цифры: кто, сколько) тоже молчу.
Вывод: негоже столь неумело абузить больную тему.
Но минусовать не буду, автор: всё на Вашей совести.
bykvaadm
буквально на днях была практически такая же статья на гиктаймс ровно с точно такими же ошибками. Зачем опять постить одни и те же косяки?
1) актуальная версия 1.4.2, а не то что здесь написано от 2014 года. Она есть как на оффсайте, так и в репозиториях.
2) службы не должны запускаться вручную. используйте systemd
а настройки прокси делается гораздо проще, буквально в 5 команд. t.me/bykvaadm/639
doctorblack Автор
Уточните, о каких ошибках речь? Если есть конструктивные предложения, прошу озвучить, с удовольствием добавлю в пост.
В статье осветил исключительно свой опыт со всеми шагами до результата.
bykvaadm
вы предлагаете качать исходники софта с вашего сайта:
wget https://demo.a-rd.ru/dante-1.4.1.tar.gz
Это что за дичь вообще?
doctorblack Автор
Вы абсолютно правы, заменил ссылку на сайт разработчика.
bykvaadm
internal: eth0 port = 1080
В современных дистрибутивах имена интерфесов могут быть уже не только eth0, но и enp0s4, ens192 итд итп. такой конфиг вводит в заблуждение.
doctorblack Автор
Конфиг предлагается под определенные шаги с описанной ОС, на описанном VPS. Дополнительно дается расшифровка конфига. Статья не заявлялась, как универсальный гайд по настройке Dante, а лишь альтернативный способ быстро дойти до результата.
loskiq
Почему версия 1.4.1, а не последняя?
doctorblack Автор
Можно использовать 1.4.2. Причиной использования 1.4.1 послужила неработающая аутентификация по системному пользователю в новой версии. Возможно я что то упустил.
bykvaadm
все прекрасно работает. Посмотрите конфиг из моей статьи. по нему не один прокси уже настроили