Использование libpam при настройке SOCKS сервера Dante

habr.png

Всем доброго дня. Столкнувшись с необходимостью настроить SOCKS5 я обнаружил, что в интернетах и в частности на Хабре при настройке авторизации для dante-server используется метод «username».

Этот метод отнюдь не является безопасным. Об этом не раз писалось (например) и приводилось множество сравнений с 3proxy который для авторизации использует отдельный файл паролей. Кого интересует реализация данной возможности в Dante прошу под кат.
Описывать установку и базовую настройку не буду, этих статей огромное множество и в общем ничего сложного в них нет. Затрону лишь тему отдельного файла паролей. Все команды будут приведены для Ubuntu, однако сделать то же самое на других дистрибутивах так же не сложно.

Итак, для начала нам понадобятся дополнительные компоненты:

aptitude install libpam-pwdfile


Пакет libpam-pwdfile представляет возможность аутентификации по отдельному файлу формата /etc/passwd.

После установки редактируем файл /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, что означает отдельная строка для каждого пользователя в виде разделенных двоеточием параметров. Первый параметр имя пользователя, второй — шифрованный пароль.

Шифрованые пароли можно получить посредством утилиты mkpasswd из пакета whois следующим образом:

mkpasswd --method=md5 SomeStrongPassword


Либо с помошью утилиты htpasswd из пакета apache2-utils

в первый раз для создания фала с паролями:

htpasswd  -b -m -c ${DIR_FOR_PASSWD_FILE}/sockd.passwd UserName SomeStrongPassword


в дальнейшем, для добавления пользователей данную команду необходимо использовать без параметра »-с».

После того как мы все подготовили, остается только включить соответствующий метод авторизации в Dante. Для этого редактируем ваш файл /etc/sockd.conf и меняем следующую строчку

socksmethod: username


на эту

socksmethod: pam.username


Презагружаем Dante и получаем авторизацию по отдельному файлу паролей.

Использованные материалы:

Документация Dante. PAM Autentication.

Описание модуля libpam-pwdfile на GitHub

© Habrahabr.ru