Установка и настройка Dante SOCKS5 Proxy сервера на Ubuntu 18.04 LTS [годная инструкция по обходу блокировки мессенджера Telegram (и др сайтов) Роскомнадзором]
Вспомнилась цитата с одно ещё не заблокированного интернет-ресурса:
— Скоро и на сковородку придется VPN ставить =/
— Главное, чтобы на унитаз не пришлось, а то пошёл посрать, а унитаз заблокирован.
— Придется срать через Нидерланды.
SOCKS — сетевой протокол, который позволяет клиент-серверным приложениям прозрачно использовать сервисы за межсетевыми экранами (фаерволами). SOCKS — это сокращение от «SOCKet Secure». SOCKS не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и базируется на стандарте TCP/IP — протоколе 4-го уровня.
Socks — это о-о-о-очень старый протокол. Вышел в свет аж в 1992-м году. Ясен пень, что в те далёкие времена ни о каком SSL никто ничего не слышал. Поэтому данные, в том числе логины и пароли на подключение к серверу всегда передаются открытым текстом. Далее, подняв такой прокси и передав доступ к нему всем желающим, вы несколько рискуете. Ведь если Вася подключится браузером или скайпом к вашему проксе, а потом сделает что-то нехорошее, то прилетит по шапке именно вам. Поэтому имеет смысл ограничивать сети с/на которые можно ходить, а также закрываться паролями. Правда, последнее тоже не является панацеей (см. выше).
Кстати о прокси серверах и авторизации. У человека из интернетов дошли руки исследовать эту тему, на которую обратили внимание в одной статье на geektimes (ее правда уже удалили), что даже при условии того, что вы укажете шелл /usr/sbin/nologin, это не спасает вас например от фишки ssh проброса портов. Вам не обязательно нужен шелл, чтобы, например, создать свой сокс сервер на чужом сокс сервере.
ssh -N -D 1337 user@host
Cпасибо ребятам, которые подсказали про ключ -N.
Ну и в дополнение, кроме -D вполне можно использовать и ключи -L -R, что потенциально поможет вам пробросить себя в сеть за уязвимым прокси-сервером или достучаться до служб, висящих на локалхосте.
Хотя этот протокол разработан достаточно давно, он является относительно новым (по сравнению с HTTP proxy). SOCKS позволяет работать с любыми (версия Socks 4 — с TCP, Socks 5 — с TCP и UDP) протоколами. SOCKS proxy просто передает данные от клиента к серверу, не вникая в содержимое самих данных (поэтому он может работать с HTTP, FTP, SMTP, POP3, NNTP, etc.).
SOCKS сервер Dante Server
Dante — это только SOCKS сервер. Если дополнительно нужна поддержка HTTP-прокси, то используйте 3proxy.
Свежая версия Dante в Ubuntu появилась только в версии 18.04. Если у вас 16.04 или 14.04, то вам пригодится статья по самостоятельной сборке deb пакета — https://bvn13.tk/posts/dante-server-on-ubuntu-16-04-lts или https://bvn13.tk/posts/dante-server-on-ubuntu-16-04-lts
Шаг 1. Установка:
При старте возможно появится ошибка, это, увы, нормально, её можно пропускать:
Шаг 2. Основные настройки
Конфигурационный файл расположен в по адресу: /etc/danted.conf
Ниже представлена типовая конфигурация:
Подробнее об уровнях логированиях на сайте Dante смотрите в разделе Server logging
Уже сейчас можно попробовать запустить сервис без пароля командой sudo service danted start Но для этого в конфигурационном файле должна быть разрешена работа без пароля: socksmethod: none
Шаг 3. Логины/пароли
Добавим нового пользователя proxy_user_01 для работы с SOCKS сервером.
При этом у пользователя не будет доступа к SSH, т.к. в качестве шелла указан nologin.
Шаг 4. Запуск.
Добавляем сервис в автозагрузку и запускаем его:
Прокси будет работать по ip вашего сервера и порт, который был указан в файле конфигурации (1080 — стандартный порт). Если у вас на сервере не висят https сайты или вроде того, то настоятельно рекомендую поменять порт, например на 443.
Можно пользоваться!
Шаг 5. Безопасность.
Вместо системных пользователей можно и нужно использовать PAM файл с логинами и паролями (аналог htpasswd).
Для этого необходимо дополнительно установить пакет libpam-pwdfile:
И после этого в конфигурационном файле/etc/danted.conf заменить строку:
В файл /etc/pam.d/sockd добавляем:
Используя mkpasswd (входит в состав пакета whois)
Логин и зашифрованный пароль следует теперь добавить в файл: /etc/dante.passwd
Можно воспользоваться онлайн сервисом генерации строки логина-пароля: https://www.mkpasswd.net/index.php (выбрав type:crypt-md5) или любым другим, но не стои забывать о том, что такие сервисы могут сохранять ваш логин и пароль у себя, в том числе и нехешированными! 🙂
p.s.: стоит обратить внимание на то, что тип для md5 должен быть $1, а используемый в htpasswd md5 APR не поддерживается. Т.е. вы не сможете сгенирировать правильный пароль при помощи утилиты htpasswd!
Имя PAM сервиса используемое Dante по умолчанию sockd. Так же, если вы хотите использовать файл конфигурации libpam_pwdfile от другого настроенного сервиса, либо использовать несколько конфигураций, вы можете воспользоваться директивой pamservicename в конфигурационном файле Dante. Пример использования:
Создание и настройка SOCKS5 прокси сервера в Ubuntu
Для ускорения работы с некоторыми программами и парсерами, которые я использую, требуются прокси, сначала я арендовал их, но потом решил поднять свои SOKS5 прокси сервера на уже имеющихся серверах с сайтами.
На всех серверах стоит Ubuntu Server 14.04, может где-то и 12.04, но описание должно подойти и для всех остальных систем основанных на Debian.
Есть 2 известных мне способа организации работы SOKS5 сервера:
- SOCKS через SSH. Этот способ удобен своей простотой но неудобен при частом использовании, или использовании с разных машин;
- Установка SOCKS сервера. При использовании этого способа уйдет чуть больше времени на первоначальную настройку, но потом пользоваться прокси будет быстрее и удобнее.
SOCKS через SSH
Для того чтоб поднять SOCKS5 через SSH нужен только доступ к SSH сервера.
Вводим в терминале или SSH клиенте (PuTTY для Windows)
Если запросит пароль, то нужно ввести пароль от SSH сервера.
-D – указывает порт по которому будет доступен SOKS5 сервер
Все, после этого вы можете подключиться к SOKS5 серверу по адресу localhost:1080 или 127.0.0.1:1080
Такой способ удобен тем что не нужно ничего дополнительно устанавливать и настраивать. Но перед каждым подключением или после разрыва ssh соединения, например из-за проблем с интернетом придется заново вводить эту команду.
Установка SOCKS сервера
Я знаю 2 SOCKS сервера 3proxy и Dante. У себя использовал Dante Server его настройку и опишу.
Установить Dante сервер можно с помощью apt-get, по умолчанию устанавливается старая версия (v.1.1). Ниже будут настройки для старой и новой (v.1.4) версий.
Установка новой версии Dante Server
После этих действий Dante Server будет установлен, но ругнется и не сможет запуститься, видимо дефолтные настройки имеют ошибку.
Далее нужно отредактировать файл настроек
Приведя его к такому виду
- указываем лог файл который будет находиться по адресу /var/log/danted.log;
- eth0 — сетевой интерфейс на котором висит внешний IP сервера, узнать его можно воспользовавшись командой ifconfig, либо можно просто указать свой внешний IP вместо названия интерфейса;
- порт для SOKS5 прокси – 1080;
- socksmethod — метод авторизации. username — авторизация с указанием логина и пароля системных пользователей. Можно указать none если вы хотите не использовать авторизацию, но не советую оставлять открытым для порт для прокси т.к. сканеры прокси не дремлют, и у меня через открытый порт начали спам рассылать, после чего мне хостер отписал что у моего IP идет спам и надо что-то решать, можно использовать не дефолтный порт а какой-то другой, это позволит отсрочить нахождения вашего прокси сканерами;
- user.privileged — имя пользователя с расширенными правами;
- user.unprivileged — имя пользователя с обычными правами (как я понял dante работает от имени этих пользователей в зависимости от того какими правами нужно обладать для выполнения операции).
После сохранения настроек нужно перезагрузить Dante
Все, теперь к SOKS5 прокси можно подключиться с любого устройства, указав IP сервера, порт – 1080, и данные для авторизации (имя и пароль пользователей которые зарегистрированы на сервере).
Я для доступа к прокси создал отдельного пользователя и указываю его данные. Создавал командой
Где soksuser – имя создаваемого пользователя.
Установка старой версии Dante Server
Далее нужно отредактировать файл настроек
Приведя его к такому виду
Дальше все так-же как и в новой версии о которой я писал выше.
H Простая пошаговая настройка SOCKS5 прокси сервера под Ubuntu 16 за 10-15 минут в черновиках Tutorial
.collapse»>Содержание
Простая пошаговая настройка SOCKS5 прокси сервера под Ubuntu 16
Данная статья является переводом статьи отсюда. Стиль и особенности речи автора сглажены, но в основном сохранены.
Этот пост расскажет как поднять SOCKS5 сервер за 10-15 минут на вашей собственном виртуальном сервере (VDS) у провайдера Digital Ocean за 4 простых шага. Я подразумеваю, что вы как минимум на ты с PC, но при это не являетесь системным администратором.
Эта статья не является рекламой DO, просто там проще всего поднять VDS. Вы можете заменить DO на своего любимого современного провайдера — и скорее всего мало что изменится.
Также, вы сможете создать множество логинов с паролями для своих друзей, членов семьи и вообще кому захотите.
Зачем вам вообще свой собственный прокси сервер?
Введение
Сейчас много споров и разговоров про то, что правительства блокируют какие-то сервисы и вводят цензуру на интернет. Особенно в странах СНГ. Я не буду останавливаться на этом, но я скажу, что в современном мире становится все труднее получить доступ до каких то сайтов, сервисов, СМИ изданий, информации, развлечений, и иметь свою точку зрения не попавшую под пропаганду или политизированные источники информации или агрессивный маркетинг каких то корпораций.
В любом случае, если вы по каким-то причинам хотите использовать что-то типа VPN, прокси или чего-то другого, обеспечивающего анонимность и безопасность в интернете, у вас есть три варианта:
- Использовать легко доступные инструменты (например вот);
- Использовать B2C сервисы, где вы просто покупаете доступ. Такие сервисы обычно дорогие, или сопоставимы с ценой свой VDS что предлагаю я. Если они бесплатны, то либо медленные или сильно лимитированные, либо просто продают вас и ваши данные;
- Что-то посередине. Когда большая часть инструментов, что вы используете открытые или бесплатные;
Обычно первое решение требует какого-то времени на настройку, понимания, и отладки. Вы не можете просто взять и все сделать в один клик. Вариант второй может быть дорогим (доступ для одного человека стоит так как и своя VDS, но последнюю легко разделить со множеством друзей), не иметь возможности запуститься на какой-то определенной платформе, быть негибким и прочее прочее. Но если вы можете настроить третий вариант то вы сможете забыть про все и взять контроль в свои руки.
Любой прокси работает как на картинке. Ваше соединение получает доступ до веб-страницы через другую машину-сервер, которая выступает как прокси
Пару моментов перед тем как начать
Шаг первый — аренда хостинга
Просто создайте дроплет. Меню может изменится в будущем, но все будет понятно
Выберете Ubuntu 16.04. Я все тестировал на этой системе
Выберите самый дешевый тариф. Провайдеры типа Vulture или Hetzner дешевле, но у DO отличнейший сервис
Выберите регион, который ближе всего к вашему
Вы можете заметить, что у вас нет ssh ключа в вашем аккаунте. Если так, то вот чуть про ssh ключи и как их настроить
Если вы пользователь Windows — не беспокойтесь, я расскажу как легко работать с ssh ключами в Windows.
Шаг второй — доступ до вашего VDS
Если вы Linux или Mac пользователь, то вы скорее всего уже знаете как сгенерировать ssh ключи и как использовать их. В этом случае, просто загрузите публичный ключ на ваш аккаунт Digital Ocean и проследуйте дальше.
Также — включение двухфакторной аутентификации добавит безопасности и избавит от головной боли в случае чего.
Это меню находит в разделе Settings -> Secuity tab
Загрузка вашего ключа это просто копирование и вставка вашего публичного ключа
Есть один момент — DO ожидает формат вашего ключа как если бы он был сгенерирован Linux ssh генератором. Это выглядит вот так:
ssh-rsa AAAAB3NzaC . 7QpNuybOgF snakers41@snakers41-ubuntu
Теперь часть для windows пользователей
Я лично использую Putty и PuttyGen. SSH ключи — это базовый метод контроля Linux серверов и защищенного доступа. Можно прочитать про это на википедии. Если вы Windows пользователь ssh консоль это тоже самое как и cmd.exe.
Не беспокойтесь об этом, на самом деле это довольно просто.
Но если вы сгенерировали ключи через Putty, ваш публичный ключ будет выглядеть как то так и в таком виде он не будет работать с Ubuntu:
Убедиться, что ваш ключ будет работать с DO можно следуя этим указаниям
Конвертирование ключа в PuttyGen
Если вы не имеет доступа до Linux консоли, вы можете сгенерировать ключи используя следующие действия**:
Это меню позволяет сбросить пароли и запустить онлайн консоль
Наконец-то получить доступ до своего дроплета используя Putty и ключи
Шаг третий — настройка вашего VDS и прокси сервера
Теперь у вас есть ваш собственный VDS и ssh терминал с root доступом до него. Отлично!
Также запомните, если вы что то зафейлите, то можно просто удалить дроплет и начать заново, создав новый. Также после того как вы закончите, вы можете использовать снэпшоты для сохранения прогресса.
Весь список команд для установки и настройки выглядит вот так
Но мы пройдемся по списку строчка за строчкой, чтобы понять, что происходит
Обычно, это хорошая идея обновить пакеты в системе
Этот код в основном качает исходные коды SOCKS5 сервера и устанавливает его из исходников.
Теперь настройка. Заметье, я использую конфиг из разных блогпостов, потому что я хотел установить сервер из исходников, но к тому же я хотел бы иметь аутентификацию в прокси через логин пароль.
После того, как вы запустите /home/dante/sbin/sockd -f /home/dante/danted.conf вам надо будет нажать ctrl+C для остановки программы. Следующая команда запустит демона.
Эти команды создают пользователя для вашего SOCKS5 сервера. Вы должны запомнить эти данные и использовать их в клиентах, в которых вы хотите иметь прокси. Linux консоль попросит вас ввести пароль
После этого вам надо будет установить фаервол ufw. Включение ufw перед тем вы разрешили ssh доступ может быть очень плохой идеей)
Теперь вы должны убедиться, что демон стартует после перезагрузки системы. Некоторое время назад, я нашел отличный шаблон для крона, который я использовал для этого случая. После того как вы выполните команду crontab -e, откроется текстовый редактор, и вам надо будет скопировать текст ниже в конфиг крона (в текстовом редакторе).
Шаг четвертый — использование!
Теперь, давайте создадим пользователя и пароль для него и попробуем прокси с приложением, которое поддерживает SOCKS5 прокси, например Telegram
sudo useradd —shell /usr/sbin/nologin sockuser && sudo passwd sockuser
Hostname это IP адрес вашего дроплета. Порт из конфига данте. Логин и пароль, тот который вы выбрали
Или например, можно использовать браузер Firefox, который из коробки умеет это, в отличии от Chrome и других браузеров на основе Chromium, которые не поддерживают прокси аутентификацию. А еще можно установить в него дополнительные расширения (тысячи их), которые позволять легко управлять прокси для разных сайтов.