Всем доброго дня. Столкнувшись с необходимостью настроить SOCKS5 я обнаружил, что в интернетах и в частности на Хабре при настройке авторизации для dante-server используется метод «username».
Этот метод отнюдь не является безопасным. Об этом не раз писалось ( например ) и приводилось множество сравнений с 3proxy который для авторизации использует отдельный файл паролей. Кого интересует реализация данной возможности в Dante прошу под кат.
Описывать установку и базовую настройку не буду, этих статей огромное множество и в общем ничего сложного в них нет. Затрону лишь тему отдельного файла паролей. Все команды будут приведены для Ubuntu, однако сделать то же самое на других дистрибутивах так же не сложно.
Необходимо оговориться, что данте для данного функционала должен быть собран с поддержкой PAM, в статьях по установке это отображено тем, что в статусе конфигурации исходников должна быть следующая строка:
Если же вы устанавливаете пакет из репозитория, то PAM уже идет в его зависимотях.
Итак, для начала нам понадобятся дополнительные компоненты:
Пакет libpam-pwdfile представляет возможность аутентификации по отдельному файлу формата /etc/passwd.
После установки редактируем файл /etc/pam.d/sockd
В файл вписываем следующее:
Здесь мы задаем файл с паролями для нашего сервиса. Замените ${DIR_FOR_PASSWD_FILE} на директорию где у вас будет лежать файл с паролями (например /opt/dante ).
Сам файл с паролями имеет формат файла /etc/passwd, что означает отдельная строка для каждого пользователя в виде разделенных двоеточием параметров. Первый параметр имя пользователя, второй — шифрованный пароль.
Шифрованые пароли можно получить посредством утилиты mkpasswd из пакета whois следующим образом:
После того как мы все подготовили, остается только включить соответствующий метод авторизации в Dante. Для этого редактируем ваш файл /etc/sockd.conf и меняем следующую строчку
на эту
Презагружаем Dante и получаем авторизацию по отдельному файлу паролей.
P.S.
Имя PAM сервиса используемое Dante по умолчанию sockd. Так же, если вы хотите использовать файл конфигурации libpam_pwdfile от другого настроенного сервиса, либо использовать несколько конфигураций, вы можете воспользоваться директивой pamservicename в конфигурационном файле Dante. Пример использования:
Для более полного понимания использования данной директивы рекомендую обратиться к документации Dante, ссылка на которую приведена ниже.
Использованные материалы:
Документация Dante. PAM Autentication.
Описание модуля libpam-pwdfile на GitHub
Этот метод отнюдь не является безопасным. Об этом не раз писалось ( например ) и приводилось множество сравнений с 3proxy который для авторизации использует отдельный файл паролей. Кого интересует реализация данной возможности в Dante прошу под кат.
Описывать установку и базовую настройку не буду, этих статей огромное множество и в общем ничего сложного в них нет. Затрону лишь тему отдельного файла паролей. Все команды будут приведены для Ubuntu, однако сделать то же самое на других дистрибутивах так же не сложно.
Необходимо оговориться, что данте для данного функционала должен быть собран с поддержкой PAM, в статьях по установке это отображено тем, что в статусе конфигурации исходников должна быть следующая строка:
PAM: Enabled
Если же вы устанавливаете пакет из репозитория, то PAM уже идет в его зависимотях.
Итак, для начала нам понадобятся дополнительные компоненты:
aptitude install libpam-pwdfile
Пакет libpam-pwdfile представляет возможность аутентификации по отдельному файлу формата /etc/passwd.
После установки редактируем файл /etc/pam.d/sockd
nano /etc/pam.d/sockd
В файл вписываем следующее:
auth required pam_pwdfile.so pwdfile ${DIR_FOR_PASSWD_FILE}/sockd.passwd
account required pam_permit.so
Здесь мы задаем файл с паролями для нашего сервиса. Замените ${DIR_FOR_PASSWD_FILE} на директорию где у вас будет лежать файл с паролями (например /opt/dante ).
Сам файл с паролями имеет формат файла /etc/passwd, что означает отдельная строка для каждого пользователя в виде разделенных двоеточием параметров. Первый параметр имя пользователя, второй — шифрованный пароль.
SomeUser:$1$1bhzkYnM$cfYSzS9Vx17AypWYAnnhn0
Шифрованые пароли можно получить посредством утилиты mkpasswd из пакета whois следующим образом:
mkpasswd --method=md5 SomeStrongPassword
После того как мы все подготовили, остается только включить соответствующий метод авторизации в Dante. Для этого редактируем ваш файл /etc/sockd.conf и меняем следующую строчку
socksmethod: username
на эту
socksmethod: pam.username
Презагружаем Dante и получаем авторизацию по отдельному файлу паролей.
P.S.
Имя PAM сервиса используемое Dante по умолчанию sockd. Так же, если вы хотите использовать файл конфигурации libpam_pwdfile от другого настроенного сервиса, либо использовать несколько конфигураций, вы можете воспользоваться директивой pamservicename в конфигурационном файле Dante. Пример использования:
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
#the servicename should differ from the servicename in socks-rules
pamservicename: pam_host
}
Для более полного понимания использования данной директивы рекомендую обратиться к документации Dante, ссылка на которую приведена ниже.
Использованные материалы:
Документация Dante. PAM Autentication.
Описание модуля libpam-pwdfile на GitHub
Only registered users can participate in poll. Log in, please.
Используете ли вы Dante?
68.66% да92
17.91% нет24
13.43% теперь буду18
134 users voted. 19 users abstained.