Прокси-сервера являются посредниками между клиентами и серверами. Например они позволяют из локальной сети обращаться к ресурсам глобальной сети. Не самым распространённым но одним из самых продвинутых прокси-протоколов является SOCKS (SOCKet Secure). Для многих приложений это единственный поддерживаемый или наиболее предпочтительный прокси-протокол.
В Linux в качестве SOCKS-прокси обычно используется пакет dante-server, а доступ ограничивают по IP-адресам или включают поддержку PAM и используют системных пользователей. Первый вариант далеко не всегда удобен, а второй весьма спорен. Далее будет показано как настроить dante-сервер с авторизацией по логину и паролю, но без использования системных пользователей.
Мы будем разворачивать наш прокси-сервер на самой дешёвой VPS от Vultr (всего 2.5 USD за достаточную для наших целей конфигурацию), работающей под управлением Ubuntu 16.04. Установим dante-server:
apt-get install dante-server
Далее нужно привести файл "/etc/danted.conf" к виду:
# Настроки логирования
logoutput: stderr
logoutput: /var/log/sockd.log
# Системные пользователи для разных операций
user.privileged: root
user.notprivileged: nobody
user.libwrap: nobody
# Интерфейс и порт, на котором слушает сервер
internal: ens3 port = 8088
# Интерфейс для исходящего трафика
external: ens3
# Будем использовать авторизацию через PAM
method: pam
# Списки доступов.
# Разрешаем всё для авторизованных пользователей
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error
}
pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error
# Имя сервиса в PAM
pam.servicename: sockd
}
Здесь мы указываем авторизацию через PAM, однако несмотря на это мы не будем использовать системных пользователей, а будем использовать файл с паролями. Для этого нам понадобится модуль "pam_pwdfile" и утилита "mkpasswd" из пакета "whois". Установим необходимые пакеты:
apt-get install libpam-pwdfile whois
Теперь создаём файл "/etc/pam.d/sockd" (Важно: имя файла должно совпадать с параметром "pam.servicename" в файле "dante.conf"!), он имеет вид:
#%PAM-1.0 auth required /lib/x86_64-linux-gnu/security/pam_pwdfile.so pwdfile=/etc/danted.passwd account required pam_permit.so
Ну и наконец создаём файл "/etc/danted.passwd", каждая строчка которого имеет вид:
логин:шифрованный_пароль
И вот тут как раз пригодится утилита "mkpasswd": с ещё помощью нужно шифровать пароли. Закончив настройку перезапускаем сервис:
service danted restart
Так же если используется файрволл то необходимо разрешить обращение к порту tcp/8088. На этом настройка сервера закончена и можно приступать к настройкам клиентов. Например для одного популярного мессенджера настройки будут выглядеть так:

Если вы используете браузер Firefox то столкнётесь с тем что он не поддерживает авторизацию на SOCKS-прокси. В качестве решения можно установить дополнение FoxyProxy Standard. В браузере Google Chrome такое же ограничение можно обойти с помощью расширения Proxy Helper.
На этом всё. Приятной работы!

Anonymous 2018-04-20 12:13:49 (#)
Как скорость на вультре из Казани?
А само соединение до сокс-прокси получается нешифрованным?