СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Простая пошаговая настройка SOCKS5 прокси сервера под Ubuntu 16 за 10-15 минут в черновиках Tutorial

Простая пошаговая настройка SOCKS5 прокси сервера под Ubuntu 16


Данная статья является переводом статьи отсюда. Стиль и особенности речи автора сглажены, но в основном сохранены.


TLDR



Этот пост расскажет как поднять SOCKS5 сервер за 10-15 минут на вашей собственном виртуальном сервере (VDS) у провайдера Digital Ocean за 4 простых шага. Я подразумеваю, что вы как минимум на ты с PC, но при это не являетесь системным администратором.


Эта статья не является рекламой DO, просто там проще всего поднять VDS. Вы можете заменить DO на своего любимого современного провайдера — и скорее всего мало что изменится.


Также, вы сможете создать множество логинов с паролями для своих друзей, членов семьи и вообще кому захотите.



Зачем вам вообще свой собственный прокси сервер?


  • Это возможность узнать и научится чему-то новому (и похвастаться перед своей девушкой, например);
  • Существует множество бесплатных прокси и людей, которые обеспечивают бесплатными прокси за просто так. Но вы никогда не сможете быть уверены в том, что они будут делать это достаточно долго и поддерживать их в достаточном качестве, или что их намерения чисты, и они не будут следить за вашим трафиком;
  • Если понадобится, вы сможете расширить прокси до VPN или даже чего-то более мощного;
  • Вы не будете зависеть от провайдеров и какой бы то ни было третьей стороны, если что-то с ними случится;
  • Если вы скинетесь на такой сервис с друзьями, это будет очень дешево (5$ за месяц разделить на количество людей умножить на количество фана);

Введение


Сейчас много споров и разговоров про то, что правительства блокируют какие-то сервисы и вводят цензуру на интернет. Особенно в странах СНГ. Я не буду останавливаться на этом, но я скажу, что в современном мире становится все труднее получить доступ до каких то сайтов, сервисов, СМИ изданий, информации, развлечений, и иметь свою точку зрения не попавшую под пропаганду или политизированные источники информации или агрессивный маркетинг каких то корпораций.


В любом случае, если вы по каким-то причинам хотите использовать что-то типа VPN, прокси или чего-то другого, обеспечивающего анонимность и безопасность в интернете, у вас есть три варианта:


  • Использовать легко доступные инструменты (например вот);
  • Использовать B2C сервисы, где вы просто покупаете доступ. Такие сервисы обычно дорогие, или сопоставимы с ценой свой VDS что предлагаю я. Если они бесплатны, то либо медленные или сильно лимитированные, либо просто продают вас и ваши данные;
  • Что-то посередине. Когда большая часть инструментов, что вы используете открытые или бесплатные;

Обычно первое решение требует какого-то времени на настройку, понимания, и отладки. Вы не можете просто взять и все сделать в один клик. Вариант второй может быть дорогим (доступ для одного человека стоит так как и своя VDS, но последнюю легко разделить со множеством друзей), не иметь возможности запуститься на какой-то определенной платформе, быть негибким и прочее прочее. Но если вы можете настроить третий вариант то вы сможете забыть про все и взять контроль в свои руки.



Любой прокси работает как на картинке. Ваше соединение получает доступ до веб-страницы через другую машину-сервер, которая выступает как прокси


Пару моментов перед тем как начать


  • Я выбрал Digital Ocean (DO) как хостинг провайдера для VDS прокси-сервера, в основном, потому что у них замечательная техническая поддержка, API, крутой продукт, и огромное количество полезных и нужных дроплетов полезных сервисов, которые разворачиваются в один клик;
  • В частности вот список того, что DO прекрасно делает за вас:
    • Присвоить ssh ключ новому дроплету;
    • Создать снэпшот (бекап);
    • Создать дроплет в один клик;
    • Профит;
  • Я следовал туториалам, которые нашел в интернете. Благодарности тем ребятам, что их написали:
  • Я выбрал только открытый софт и предполагаю, что вы будете использовать Ubuntu 16;
  • Я буду рассказывать больше для Windows пользователей, обычно блоги представленные выше рассказывают для Linux или Mac пользователей;
  • Если вы используете эту реферальную ссылку, вы получите 10$ на аккаунт Digital Ocean, этого вам хватит на 2 месяца использования, как раз чтобы понять, нужно ли оно вам или нет;


Итак, начнем.


Шаг первый — аренда хостинга


  • Проследуйте по моей ссылке
  • Создайте аккаунт и добавьте свои платежные данные
  • Выберете самый дешевый тариф как описано ниже (не бойтесь нафакапить, у вас будут списывать деньги за час, а не сразу за весь месяц)


Просто создайте дроплет. Меню может изменится в будущем, но все будет понятно



Выберете 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:


---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20180413"
AAAAB3NzaC1yc2EAAAABJQAAAQEAuBflEQeTW9xfNI8N3krfFzxo8iU/NV/3cgxR
d2dkWZwYTaPaJsAoJFPtWhmsRuFuw7naZZOo/VFiqCuuYGaQcYRLrDqvfFjAusJg
B1ZK2YY57kz/ulzO9LqiVta+Fql4jL5244z9FNHF10YXbBZsmYQikAWJCItCxvZh
goY74Sfa5lPRfGojfC0xwayObJjqRcI9PS7z66ixRqO05vPMBekt/7fKoXQ+pUCP
LOVeH8AAWdaRWkvT6waCFSmjVBwfkHoghtR9pp/PZihAxpS5dM8H7AJXlvLEhNSp
6smFlkkz+XU3d3Z2FqSLV9K6pBNlNCRn+G/60xVtTqGDAsdPNw==
---- END SSH2 PUBLIC KEY ----

Убедиться, что ваш ключ будет работать с DO можно следуя этим указаниям


  • Создать ключ используя Linux как описано здесь. Вы будете использовать этот ключ на сервере DO.
  • Сохраните новые созданные публичный и приватные ключи где нибудь на своем компьютере
  • Загрузите приватный ключ в PuttyGen через Conversion -> Import Key
  • Затем нажмите "save private key" — вы будете использовать этот ключ с Putty позже


Конвертирование ключа в PuttyGen


Если вы не имеет доступа до Linux консоли, вы можете сгенерировать ключи используя следующие действия**:


  • Создайте дроплет в DO, сбросьте root пароль (смотрите картинку), откройте в онлайн консоли. Создайте ключи там и используйте команду cat для вывода ключа
  • Создайте дроплет в DO, сбросьте root пароль, откройте Putty и введите логин, пароль
  • В обоих случаях — будет проще создать новый дроплет после того, как нужные ключи будут установлены


Это меню позволяет сбросить пароли и запустить онлайн консоль


Наконец-то получить доступ до своего дроплета используя Putty и ключи


  • Создайте новое соединение в Putty
  • Введите ваш IP адрес и порт (обычно 22)
  • Введите имя для вашего соединения и нажмите сохранить
  • Пойдите в data -> Auto-login username и введите root
  • Пойдите в data -> SSH -> Auth и выберет приватный ключ, который вы сохранили с помощью PuttyGen;
  • Не забудьте вернуться обратно в сессию после всех настроек




Шаг третий — настройка вашего VDS и прокси сервера


Теперь у вас есть ваш собственный VDS и ssh терминал с root доступом до него. Отлично!


Также запомните, если вы что то зафейлите, то можно просто удалить дроплет и начать заново, создав новый. Также после того как вы закончите, вы можете использовать снэпшоты для сохранения прогресса.



Весь список команд для установки и настройки выглядит вот так


Но мы пройдемся по списку строчка за строчкой, чтобы понять, что происходит


# update packages
sudo apt-get update

# https://www.tazdij.com/post/setup-dante-1.4.1-sockd-dante-server-on-ubuntu-16.04
cd /opt/
mkdir dante-server

# download from the official website
# https://www.inet.no/dante/doc/
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

# dependencies
apt-get install libwrap0 libwrap0-dev
apt-get install gcc make

# compilation from source
mkdir /home/dante
./configure --prefix=/home/dante
make
make install

# use this config
# for details refer here
# https://la2ha.ru/dev-seo-diy/unix/socks5-proxy-server-ubuntu
# this where the conf will be stored /home/dante/danted.conf
echo '
logoutput: syslog /var/log/danted.log
internal: eth0 port = 1080
external: eth0

socksmethod: username
user.privileged: root
user.unprivileged: nobody

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: connect
    log: error
    method: username
}' > /home/dante/danted.conf
# run the server once
/home/dante/sbin/sockd -f /home/dante/danted.conf

# run the server as a daemon
/home/dante/sbin/sockd -f /home/dante/danted.conf -D

# do not forget to create the user
sudo useradd --shell /usr/sbin/nologin sockuser && sudo passwd sockuser 
# you then need to input your ip-address(hostname), login, password, port (1080 in this case) to your sock5 client

# basic ufw installation
sudo apt-get install ufw
sudo ufw status

# https://wiki.dieg.info/socks
sudo ufw allow ssh
sudo ufw allow proto tcp from any to any port 1080
sudo ufw status numbered
sudo ufw enable

# now we need to make sure that the service runs on reboot
# start daemon on reboot
sudo apt-get install cron
crontab -e
# insert this into crontab

#Borrowed from anacron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=your_email@some_mail.com
#End borrowed from anacron
# * * * * * echo ‘Run this command every minute’ >> file.log
@reboot /home/dante/sbin/sockd -f /home/dante/danted.conf -D

Обычно, это хорошая идея обновить пакеты в системе


# update packages
sudo apt-get update

Этот код в основном качает исходные коды SOCKS5 сервера и устанавливает его из исходников.


# https://www.tazdij.com/post/setup-dante-1.4.1-sockd-dante-server-on-ubuntu-16.04
cd /opt/
mkdir dante-server

# download from the official website
# https://www.inet.no/dante/doc/
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

# dependencies
apt-get install libwrap0 libwrap0-dev
apt-get install gcc make

# compilation from source
mkdir /home/dante
./configure --prefix=/home/dante
make
make install

Теперь настройка. Заметье, я использую конфиг из разных блогпостов, потому что я хотел установить сервер из исходников, но к тому же я хотел бы иметь аутентификацию в прокси через логин пароль.


# use this config
# for details refer here
# https://la2ha.ru/dev-seo-diy/unix/socks5-proxy-server-ubuntu
# this where the conf will be stored /home/dante/danted.conf
echo '
logoutput: syslog /var/log/danted.log
internal: eth0 port = 1080
external: eth0

socksmethod: username
user.privileged: root
user.unprivileged: nobody

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: connect
    log: error
    method: username
}' > /home/dante/danted.conf
# run the server once
/home/dante/sbin/sockd -f /home/dante/danted.conf

# run the server as a daemon
/home/dante/sbin/sockd -f /home/dante/danted.conf -D

После того, как вы запустите /home/dante/sbin/sockd -f /home/dante/danted.conf вам надо будет нажать ctrl+C для остановки программы. Следующая команда запустит демона.


Эти команды создают пользователя для вашего SOCKS5 сервера. Вы должны запомнить эти данные и использовать их в клиентах, в которых вы хотите иметь прокси. Linux консоль попросит вас ввести пароль


# do not forget to create the user
sudo useradd --shell /usr/sbin/nologin sockuser && sudo passwd sockuser 
# you then need to input your ip-address(hostname), login, password, port (1080 in this case) to your sock5 client

После этого вам надо будет установить фаервол ufw. Включение ufw перед тем вы разрешили ssh доступ может быть очень плохой идеей)


# basic ufw installation
sudo apt-get install ufw
sudo ufw status

# https://wiki.dieg.info/socks
sudo ufw allow ssh
sudo ufw allow proto tcp from any to any port 1080
sudo ufw status numbered
sudo ufw enable

Теперь вы должны убедиться, что демон стартует после перезагрузки системы. Некоторое время назад, я нашел отличный шаблон для крона, который я использовал для этого случая. После того как вы выполните команду crontab -e, откроется текстовый редактор, и вам надо будет скопировать текст ниже в конфиг крона (в текстовом редакторе).


# now we need to make sure that the service runs on reboot
# start daemon on reboot
sudo apt-get install cron
crontab -e
# insert this into crontab

#Borrowed from anacron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=your_email@some_mail.com
#End borrowed from anacron
# * * * * * echo ‘Run this command every minute’ >> file.log
@reboot /home/dante/sbin/sockd -f /home/dante/danted.conf -D

Шаг четвертый — использование!


Теперь, давайте создадим пользователя и пароль для него и попробуем прокси с приложением, которое поддерживает SOCKS5 прокси, например Telegram
sudo useradd --shell /usr/sbin/nologin sockuser && sudo passwd sockuser



Hostname это IP адрес вашего дроплета. Порт из конфига данте. Логин и пароль, тот который вы выбрали


Или например, можно использовать браузер Firefox, который из коробки умеет это, в отличии от Chrome и других браузеров на основе Chromium, которые не поддерживают прокси аутентификацию. А еще можно установить в него дополнительные расширения (тысячи их), которые позволять легко управлять прокси для разных сайтов.


А еще кроме того, чтобы не лазить в настройки, телеграм умеет получать настройки прокси по ссылке: t.me/socks?server=example.com&port=9999&user=username&pass=password. И по такой ссылке можно даже послать их своей бабушке)

+6
~2800

комментарии (59)

0
ArtificialLife ,  
Поясните мне, человеку, который не разбирается в сетях совсем — торренты будут работать через прокси?
+2
snakers4 ,   * (был изменён)

В самом популярном торрент-клиенте mu-torrent даже вкладка специальная есть:


Но учитывайте, пару вещей:


  • Прокси не шифруют трафик. Если там, где вы живете интернет провайдеры фильтруют и преследуют именно трафик по протоколу bit-torrent, то не факт что прокси прямо поможет
  • На сайты трекеров — обычно помогает заходить
  • Провайдер VDS скорее всего не заинтересуется, если вы будете чатиться, звонить или ходить на сайты через их прокси, но если там пойдут терабайты трафика (а в минимальном тарифе обычно 1-2ТБ трафика включено) — то скорее всего у него появится "флажок"
+1
Barnaby ,  

А еще udp-трекеры и DHT не работает, иногда без них просто не найти пиров.

0
Bonio ,  
Не путайте. Этот прокси используется только для установки соединения с трекерами.
+1
LuckyStarr ,   * (был изменён)
uTorrent Help Center
Does you support proxies?
Last Updated: Jan 25, 2016 11:01PM PST
Yes. Open the preferences and go to Connection. It supports SOCKS4, SOCKS5, HTTP Connect, and HTTP proxies. Peer communication proxying is not supported with standard HTTP proxies, and UDP proxying is only supported with SOCKS5. HTTP Connect proxies are HTTP proxies that support arbitrary TCP connections.

Соединение с пирами не поддерживается HTTP проксями, но поддерживаются SOCKS5.
0
vconst ,  
Полезный гайд, но зачем надо было оставлять в статье чужую реферальную ссылку?
+1
snakers4 ,   * (был изменён)
Автор с оригинального сайта — мой друг, поэтому не стал чистить. Ну и с учетом цены, которую на хайпе вломили некоторые сервисы VPN (видел всякую рекламу за 50+ долларей) — 10 баксов — это 2 месяца халявы для вас и вашего ближайшего окружения. По сути некий бонус, чтобы начать прокачивать свой скилл было весело и приятно
–1
rub_ak ,   * (был изменён)
Опять из пушки по воробьям.
Aruba 1$ в месяц.
Для телеги хватит за глаза, а если поискать вообще можно найти за пару баксов в год на АРМ хостинге.
0
snakers4 ,  
Да VDS можно найти и за пару баксов. Тот же Vulture кажется имеет ценник в US$3. На распродажах продают по US$1. Но тут фишка в том, что если человек, не очень прокачанный в этом деле возьмет не самый user-friendly сервис, то его может постигнуть разочарование и он забьет. А DO снимает часть геморроя (бекапы, прописывание ключей, мониторинг, уведомления).
+1
snakers4 ,  
Вы еще не учитываете, что автор намекает, что надо шерить свой прокси-сервер с друзьями. Человек на 10-20 легко такой потянет.
Ну и что мешает потом задуматься про OpenVPN?
+2
Loxmatiymamont ,  
>>Проследуйте по моей ссылке
Неприкрытые реферальные ссылки? Ну фу так делать…
+1
+2 –1
snakers4 ,  

У вас есть выбор
Вы можете пройти или не пройти
Хуже когда обманом заставляют

0
+1 –1
dimytr ,  
Вообще не понимаю проблем с реф ссылками. кому от этого плохо? При нажатии на нее с вас ничего не спишется, а вы получите хороший Бонус! win-win
+1
snakers4 ,  

В этом собственно и идея. Продвигаем цифровую свободу и равенство, даём маленькую морковку и возможность подтянуть всех вокруг. Win — win — win
Паралельно юзаем лучшие практики и радуемся

0
3aBulon ,  
амазон aws не пойдет? на год дают сервера «попробовать». я там три мастерноды поднимал, на трех аккаунтах, естественно
0
snakers4 ,  
Да что угодно подойдёт с Ubuntu 16.04 чистой и фиксированным IP. Вопрос просто удобства, привычки, нужных лично вам фич.

Мне лично Амазон не нравится, т.к. там овер9000 уровней абстракции. Но у меня задачи или требуют много GPU и мне дешевле самому собрать сервер или VDS за несколько баксов хватает.

Соответственно я просто использую то, где быстрее и проще.
0
bykvaadm ,   * (был изменён)
Подскажите пожалуйста, нахрена собирать из исходников, то что есть в репозитории, да еще и более актуальной версии, чем предлагаете вы? Ставим debian 9, подключаем репозитории от 10-ки, в одну команду ставим актуальную версию dante. А не сборку 2014 года.

2) вас не учили объединять команды через &&?
3) объединять apt install package1… packageN? нет, лучше мы несколько раз запусти apt-get. Причем ладно бы в разных частях скрипта, но у вас идет это подряд. Зачем?
4) sudo apt-get update обновляет список пакетов в репозитории, а не пакеты в системе.
0
snakers4 ,  

Про выбор системы — это личные предпочтения.
Тут банально — в репо для убунты новая версия пока в пре-релизе.
Да и такой софт лучше ставить с оф.сайта все таки как мне кажется.

0
bykvaadm ,  
Dante 1.4.x releases

Binary versions of the release can be found at the binary release page.

2017-02-06: Dante 1.4.2 FTP HTTP (SHA256: )
2014-09-03: Dante 1.4.1 FTP HTTP (MD5: )
2013-11-18: Dante 1.4.0 FTP HTTP (MD5: )

Оффсайт: www.inet.no/dante/files/dante-1.4.2.tar.gz — актуальная версия.
0
bykvaadm ,  
Выбор системы — ваше дело. а советовать ставить устаревший софт на публичном ресурсе, извините.
0
snakers4 ,  

Да что угодно подойдёт с Ubuntu 16.04 чистой и фиксированным IP. Вопрос просто удобства, привычки, нужных лично вам фич.


Мне лично Амазон не нравится, т.к. там овер9000 уровней абстракции. Но у меня задачи или требуют много GPU и мне дешевле самому собрать сервер или VDS за несколько баксов хватает.


Соответственно я просто использую то, где быстрее и проще.

+1
bykvaadm ,   * (был изменён)
sudo useradd -m soksuser && sudo passwd soksuser

Здесь допущена грубая ошибка безопасности. Вы создаете пользователя, не отбирая у него права логиниться по SSH! При этом зато нахрена-то создаете ему домашнюю директорию. Учетке, которая существует сугубо как пара логин-пароль для авторизации на прокси. правильно писать

#useradd -s /bin/nologin soksuser
0
snakers4 ,  
(1) Это уже было поправлено на момент вашего комментария

(2) Если юзать DO — то там по дефолту логин по паролю отключен, если залить свой ключ. Обратите внимание, что всеми правдами и неправдами пользователю советуют юзать авторизацию только по ssh-ключам
0
bykvaadm ,  
Будьте добры выполнить команду

grep soksuser /etc/passwd
0
bykvaadm ,   * (был изменён)
К сожалению не уведел исправления этой команды в вашей статье. Но видите ли в чем дело, если вы пишете статью, то должны рассчитывать на то что не все будут поднимать сервис в DO, а значит они могут попасть на эту проблему. Кроме того, в статье, которую вы привели как источник аж 2 раза, этот момент оговаривается.

вот цитата:

sudo useradd --shell /usr/sbin/nologin proxyuser
sudo passwd proxyuser
[Вводим дважды пароль]
0
snakers4 ,  
(1) В указанном месте поправил. Сначала правил с телефона, пропустил, что команда несколько раз встречалась
(2) Про DO — собственно по этой причине там так много оговорок, почему надо с ключом работать вместо пароля
0
bykvaadm ,  
ну и да, авторизация по ключу здесь вообще не причем. Речь идет о том, что dante использует системный /etc/passwd файл как базу с логинами-паролями. В данной ситации создавая обычного пользователя в системе и используя его для авторизации в dante, вы наделяете этого пользователя всеми правами обычного пользователя в linux. в том числе и логиниться по ssh.
0
snakers4 ,  
Интересно, но если при этом у него отключена возможность логиниться по паролю, является ли это риском?
0
snakers4 ,  
В DO, если ключ прописать, сразу ставится вот это
PasswordAuthentication no
0
bykvaadm ,   * (был изменён)
по-умолчанию в некастомизированных дата-центрами операционных системах логиниться по паролю можно всем кроме рута. (начиная с debian 8)
Если эта возможность отключена, то это не является проблемой, ровно до той поры, пока эта возможность не понадобится. В таком случае никто и никогда про пользователя для dante не вспомнит.

Вы же пишете инструкцию «для чайников» которые об этом даже не задумаются. И поднимать проки не обязательно будут в DO. Я вам пытаюсь донести, чтобы статья была качественной, вы должны учитывать такие моменты, а не зацикливаться на частном случае — в DO безопасно, значит никому это и не понадобится.

И все же, проверьте на всякий случай файл /etc/ssh/sshd_config на предмет директив PasswordAuthentication и PermitRootLogin. Проблема может крыться в том, что DO выполняет настройку только для нескольких пользователей. Например амазон создавая виртуалку запрещает логин от рута, разрешает от admin. но и это все. любой дополнительно создаваемый пользователь получает возможность входить в систему по паролю.

— пока писал комментарий вы уже проверили =) Ну, с DO — хорошо. а в любом другом случайно выбранном DC может уже так не быть. Инструкция должна это учитывать
0
snakers4 ,  
PasswordAuthentication no
PermitRootLogin yes
0
ValdikSS ,  
Изменение shell на nologin блокирует только доступ к шеллу, но не доступ к SSH в общем. Например, можно будет подключиться к серверу и пробросить порты (в том числе и поднять Socks5-сервер средствами OpenSSH).
На таких забывчивых людях и делаются бизнесы по продаже Socks5-прокси.
0
bykvaadm ,  
@reboot /home/dante/sbin/sockd -f /home/dante/danted.conf -D

Это неправильное решение. Запускаемые службы должны управляться менеджерами служб, а не запускаться по крону. Самая примитивная проблема, которая вас ожидает — если прокси вдруг случайно завершит свою работу из-за сбоя никто ее не перезапустит.

Правильное решение — создать unit-файл для system.d:

[Unit]
Description=SOCKS (v4 and v5) proxy daemon (danted)
Documentation=man:danted(8) man:danted.conf(5)
After=network.target

[Service]
Type=forking
PIDFile=/run/danted/danted.pid
ExecStart=/usr/sbin/danted -D -p /run/danted/danted.pid
ExecStartPre=/bin/sh -c ' \
uid=`sed -n -e "s/[[:space:]]//g" -e "s/#.*//" -e "/^user\\.privileged/{s/[^:]*://p;q;}" /etc/danted.conf`; \
if [ -n "$uid" ]; then \
touch /run/danted/danted.pid; \
chown $uid /run/danted/danted.pid; \
fi \
'

[Install]
WantedBy=multi-user.target
0
snakers4 ,  
Для полноты, не напишите, куда и как это файл правильно сохранить, протестировать что запускается, итд итп?
0
bykvaadm ,  
Да, конечно.
кастомные unit-файлы (если вы ставите из исходников все-таки) кладутся например вот так: /etc/systemd/system/danted.service
После чего нужно заставить system.d перечитать новый конфиг:
systemctl daemon-reload
А затем добавить в автозапуск:
systemctl enable danted.service
Запустить:
systemctl restart danted.service
Проверить статус:
systemctl status danted.service
Если нужно, отредактировать:
systemctl --full edit danted.service

мой пример взят из пакета, установленного из репозитория debian, т.е. он автоматически прописывается в системе при установке. В вашем случае нужно будет подправить пути на те, где ваши исходники.
0
Samaritan ,  
Я себе поставил Стрейзанд на DO. Мне кажется этот вариант поинтереснее.
github.com/StreisandEffect/streisand/blob/master/README-ru.md
0
snakers4 ,  
Прошел по ссылке… это конечно уже не из пушки по воробьям, а из термоядерного оружия по бактериям.
Интересно знать про такое.
По количеству вложенностей напоминает уже конфиги для ML коробок.
Интересно знать что такое есть.
0
vconst ,  
Не обязательно ставить все все все, можно только один нужный сервис. Главное то, что там все продумано с обновлениями и безопасностью.
0
evdokiacrew ,  

толкового, спасибо!

0
Akr0n ,  
Спасибо автору (переводчику), тут знающие люди в комментариях дают советы по конфигу, хотелось бы чтоб рекомендации были добавлены сразу в статью для использования :)
0
snakers4 ,  
Это надо будет сделано после окончания замеса, когда соберутся все комментарии.
0
bykvaadm ,  
если вы будете править версию на 1.4.2 обратите внимание, что в конфиге нужно заменить method на socksmethod
0
snakers4 ,  
Я вот думаю, по-хорошему надо заменить на версию 14.2 из ppa, но в убунте написано, что там «pre-release freeze» — это критично?
0
bykvaadm ,   * (был изменён)
это значит, что на момент согласования версий пакетной базы для релиза, данный софт еще не был выпущен, а теперь эта версия войдет в следующий релиз. причем если автор выпустит завтра версию 1.4.3, то в пакетную базу новой убунты все равно войдет 1.4.2. Т.е. по сути это говорит о заморозке той версии которая идет в новый релиз. у дебиана в частности этот цикл занимает 2 года. за это время пакеты довольно-таки устаревают и через какое-то время просто подключается репозиторий от следующего релиза debian и некоторые пакеты ставятся оттуда.

убунта идет немного впереди, но смысл у нее такой же.
0
snakers4 ,  
то есть говоря простым языком, имея на руках 16.04 при установке я могу просто указать эту версию, или без бубнов не выйдет?
–1
bykvaadm ,   * (был изменён)
t.me/bykvaadm/639

вот тут я описал некорые полезные моменты для версии 1.4.2
0
Sly_tom_cat ,  
В этом случае, просто загрузите приватный ключ на ваш аккаунт Digital Ocean и проследуйте дальше.

Приватный на то и приватный что бы держать при себе…
0
snakers4 ,  
Поправил, спасибо, что нашли опечатку
0
bykvaadm ,  
Кроме того, чтобы не лазить в настройки, телеграм умеет получать настройки прокси по ссылке: t.me/socks?server=example.com&port=9999&user=username&pass=password
0
snakers4 ,  
На этом собственно и построены каналы, которые все это шерят по таким ссылкам
Но что-то я особо не верю такой щедрости у нас

Так легко, к примеру, дать такую штуку, своей бабушке
0
bykvaadm ,   * (был изменён)
я имел ввиду, что в конце вашей статьи можно указать этот вариант как более простой способ, вместо того чтобы лезть в настройки. Этот же способ пригодится, например, чтобы послать себе ссылку в ЛС и настроить прокси на всех устройствах в один клик — на телефоне, пк, планшете итп.

в этой ссылке ровно все те же 4 параметра, которые вы задаете в полях настроек вручную. и делает она ровно то же самое — настраивает вам эти параметры. никому больше.
0
snakers4 ,  
а, понял, это легко добавить, сейчас
0
xruyn ,  
Извините за частичный оффтоп… А под OpenWRT нет Socks5 сервера? А то что-то погуглил, какие-то противоречивые сведения. Есть в репах никий sockd, в описании которого проскакивает слово Dante…
0
Sly_tom_cat ,  
В голосовалке нет пункта «у меня OneBigPovider и я знаю как снимать его блокировки без прокси и VPN.»
0
snakers4 ,  
А расшифруйте, что это значит?
0
Sly_tom_cat ,  

Детали уже есть в предыдущем сообщении (внимательность нужна)...

0
spectralboy ,  
Так как используем версию данте 1.4 то в разделе socks pass вместо method надо указывать socksmethod.
0
miga ,  
Вся эта возня со сборкой из исходников замечательно заменяется
$ cat > docker-compose.yml <<EOF
dante:
  image: vimagick/dante
  ports:
    - "8080:8080"
  volumes:
    - ./sockd.conf:/etc/sockd.conf
  restart: always
EOF
$ docker-compose up -d
0
loskiq ,  
Google Chrome и Chromium поддерживают Proxy
www.chromium.org/developers/design-documents/network-stack/socks-proxy