Прокси-сервера являются посредниками между клиентами и серверами. Например они позволяют из локальной сети обращаться к ресурсам глобальной сети. Не самым распространённым но одним из самых продвинутых прокси-протоколов является 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 (#)
Как скорость на вультре из Казани?
А само соединение до сокс-прокси получается нешифрованным?