Давным-давно мечтал развернуть свой socks5 сервер, да всё было не когда. Вот тут дошли руки. В качестве платформы выбрал Scaleway. Из плюсов —  приемлемая цена, есть выбор размещения виртуалки во Франции или Нидерландах. Описывать регистрацию и запуск виртуальной машины на Scaleway не буду, это достаточно простая процедура. Единственное, что может вызвать небольшую трудность у новичка — это генерация ключей для доступа к вашей виртуалке. Процедура генерации ключей достаточно подробно описана в руководстве пользователя на самом Scaleway. Находится она здесь: https://www.scaleway.com/en/docs/configure-new-ssh-key/

Для чего это нужно? При создании виртуальной машины вы не получаете пароль от учетной записи root, и вся аутентификация основана на использовании SSH ключах. Ключи SSH позволяют выполнять аутентификацию без пароля с вашей виртуальной машиной.

Перед созданием виртуальной машины необходимо создать пару ключей RSA на локальном компьютере. Для этого необходимо (для пользователей MacOS и других *nix систем) в терминале ввести команду:

Вы можете ввести путь для сохранения файла, либо нажав Enter оставить всё по умолчанию. В MacOS ключи будут сохранены в папке .ssh профиле пользователя. Так же вы можете указать пароль на свой ключ, либо так же нажав Enter оставить этот параметр пустым.

В результате у вас сгенерируются 2 ключа, открытый id_rsa.pub и закрытый id_rsa.

Содержимое открытого ключа вам необходимо будет скопировать в буфер и добавить в панель вашего профиле (раздел Credentials), где будут храниться все ваши ключи: В разделе «Ключи SSH» нажмите « Добавить новый ключ SSH» и вставьте содержимое вашего открытого ключа в текстовую область, затем нажмите « Добавить ключ SSH» .

Очень важный момент, если у вас уже создана виртуальная машина и вы хотите получать к ней доступ по ssh например с телефона или другого компьютера, после добавления нового ключа, в терминале виртуальной машины необходимо выполнить следующую команду:

И так приступим к установке SOCKS5 сервера.

Установка SOCKS5 сервера на примере Dante сервера.

В качестве операционной системы я использовал предустановленную операционную систему Ubuntu Bionic

настройки по железу достаточно демократичные:

Итоговая цена 3 евро в месяц:

И так, после 2-3 минутного ожидания мы получаем готовую к использованию виртуальную машину.

Подключаемся к нашей машине по ssh. Я для подключения использую штатную программу терминал входящую в поставку MacOS.

Обновляем систему и устанавливаем Dante Server:

сервер установлен и практически готов к использованию. В интернете очень много статей, где в качестве авторизации на прокси используется авторизация системного пользователя. Мне этот вариант особо не нравится и я решил использовать метод авторизации pam как более универсальный, в котором будут перечислены пользователи и пароли, используемые на нашем прокси сервере. Для этого нам необходимо будет установить модуль pam_userdb. Установим его:

Открываем файл конфигурации:

Вносим необходимые изменения:

Конфигурационного файла pam изначально нет, его нужно создать

и добавить следующие строки:

Обратите внимание, что /etc/pam.d/danted не имеет расширения на конце. Итак, метот авторизации через pam проверяет пользователя по файлу базы данных /etc/danted_users.db.

Создадим текстовый файл который будет содержать имя пользователя и пароль и переведем этот файл в db:

добавим пользователей:

выполним команду

Установим права на файлы:

Теперь можно перезапустить сервер dante:

В настройках файервола нужно не забыть открыть порт 1188, если он закрыт.

Логи работы нашего socks5 сервера можно смотреть здесь:

Для ротации логов можно использовать logrotate:

Вот и всё. Наш сервер готов.

Важно! При добавлении новых пользователей в файл danted_users.txt нужно выполнять следующие команды повторно:

Для удобства управления socks5 сервером с телефона я использую программу Termius. Ссылка на Apple AppStore: https://apps.apple.com/ru/app/termius-ssh-client/id549039908

Через это приложение так же генерируются необходимые SSH ключи в разделе Keychain. Запускаем приложение:

Далее идем в раздел Keychain и добавляем новый ключ:

Всё. Наш ключ готов. Осталось его экспортировать в Scaleway.

и выполнить команду на нашей виртуальной машине:

Теперь мы можем подключиться к нашему прокси серверу с телефона:

ffff

Для проверки вашего SOCKS5 сервера можете использовать Telegram, либо любое приложение, поддерживающее SOCKS5 PROXY.


Для написания этой статьи я использовал материал с этих ресурсов:

xenot.ru
debian.ru
blogspot.com
scaleway.com

А так же хотел выразить благодарность https://flammlin.com/ за помощь в написании статьи.