Вопрос или проблема
Несколько лет назад я настроил сервер vsftpd с виртуальными пользователями, согласно некоторым инструкциям (все еще) доступным в интернете, используя pam_userdb.
Например, файл под названием /etc/pam.d/vsftpd.virtual
:
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/users crypt=crypt
account required pam_userdb.so db=/etc/vsftpd/users crypt=crypt
session required pam_loginuid.so
Настройка внутри /etc/vsftpd/vsftpd.conf
:
pam_service_name=vsftpd.virtual
И база данных BerkeleyDB, содержащая хэши пользователей и паролей (/etc/vsftpd/users.db
).
Согласно мануалу pam_userdb
, этот модуль поддерживает только открытые пароли или пароли с использованием crypt
, всегда в базе данных BerkeleyDB.
В то же время этот подход кажется мне устаревшим и непрактичным, так как обычные crypt
пароли небезопасны (даже не говоря о варианте в открытом виде), а работа с базой данных BerkeleyDB, содержащей их, требует использования некоторой обертки.
Итак: Существует ли какой-либо альтернативный PAM модуль, который, например, может обрабатывать текстовый файл с пользователями и паролями, закодированными с помощью bcrypt
? Или хотя бы с паролями, использующими какой-либо SHA хэш? Который можно обновлять, используя, например, htpasswd
(или mkpasswd
)? Что-то вроде файла пользователей Dovecot или файла htaccess для использования, например, с Lighttpd?
Что-то вроде
some_user:$2y$05$ensqtXGZXUf5DQosKk51.utplrWUqkeZzNNI8.lCVT.K86uillL4a
? Я предполагаю, что какой-то другой PAM модуль мог бы использоваться vsftpd аналогичным образом? Спасибо за всю помощь!
Существует ли какой-либо альтернативный PAM модуль, который, например, может обрабатывать текстовый файл с пользователями и паролями, закодированными с помощью bcrypt? Или хотя бы с паролями, использующими какой-либо SHA хэш? Который можно обновлять, используя, например, htpasswd (или mkpasswd)?
libpam-pwdfile кажется тем, что вам нужно.
Из README:
Файл паролей в основном выглядит как passwd(5): одна строка для каждого пользователя с двумя или более полями, разделенными двоеточием. Первое поле содержит имя пользователя, второе — зашифрованный парол.
Зашифрованные пароли в различных форматах могут быть сгенерированы с помощью mkpasswd из пакета whois.
Arch Linux имеет очень хорошее руководство по настройке этого:
/etc/pam.d/vsftpd:
auth required pam_pwdfile.so pwdfile /etc/vsftpd/.passwd
account required pam_permit.so
Ответ или решение
Для замены устаревшего модуля pam_userdb
, который используется с vsftpd
и способен работать только с паролями в формате crypt
, предлагается рассмотреть использование модуля libpam-pwdfile
. Это решение должно помочь обеспечить более безопасное хранение паролей и упростить управление пользователями.
Что такое libpam-pwdfile?
libpam-pwdfile
представляет собой модуль PAM, который позволяет использовать текстовый файл для аутентификации пользователей. В этом файле каждая строка соответствует одному пользователю и содержит два или более полей, разделенных двоеточиями. Первое поле – это имя пользователя, а второе – это хэшированный пароль (например, с использованием bcrypt
или SHA
). Дополнительные поля могут содержать другую информацию.
Преимущества использования libpam-pwdfile:
-
Гибкость в хранении паролей: Модули поддерживают несколько форматов хэширования, включая более безопасные алгоритмы, такие как
bcrypt
, что существенно повышает безопасность по сравнению сcrypt
. -
Удобство обновлений: Вы можете использовать инструменты, такие как
htpasswd
илиmkpasswd
, для генерации и обновления паролей в файле, что упрощает процесс администрирования. -
Легкость интеграции: Настройка модуля
libpam-pwdfile
сvsftpd
достаточно проста и не требует сложных изменений в конфигурации.
Настройка vsftpd с libpam-pwdfile
Для работы с vsftpd
вам необходимо произвести следующие действия:
-
Установка libpam-pwdfile: Убедитесь, что у вас установлен модуль
libpam-pwdfile
. В большинстве дистрибутивов Linux он доступен в стандартных репозиториях. -
Создание файла паролей: Создайте файл, в котором будут храниться ваши пользователи и пароли. Примерная структура файла
/etc/vsftpd/.passwd
:some_user:$2y$05$ensqtXGZXUf5DQosKk51.utplrWUqkeZzNNI8.lCVT.K86uillL4a another_user:$2y$05$....(ваш хэшированный пароль)
-
Настройка PAM для vsftpd: Измените файл конфигурации PAM для
vsftpd
, который обычно находится в/etc/pam.d/vsftpd
. Он должен выглядеть следующим образом:#%PAM-1.0 auth required pam_pwdfile.so pwdfile /etc/vsftpd/.passwd account required pam_permit.so session required pam_loginuid.so
Заключение
Выбор libpam-pwdfile
в качестве современного альтернативного решения для управления пользователями на vsftpd
не только решает проблемы старого подхода с pam_userdb
, но и обеспечивает безопасность пользователей за счет использования современных алгоритмов хеширования паролей. Это упрощает процесс администрирования и позволяет избежать проблем, связанных с использованием устаревших технологий.
Для более детальной информации о настройке и использовании данного модуля рекомендуется ознакомиться с документацией Arch Linux и официальной документацией libpam-pwdfile
.