Современная альтернатива pam_userdb (для использования с vsftpd)

Вопрос или проблема

Несколько лет назад я настроил сервер 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

подробности на вики Arch Linux

Ответ или решение

Для замены устаревшего модуля pam_userdb, который используется с vsftpd и способен работать только с паролями в формате crypt, предлагается рассмотреть использование модуля libpam-pwdfile. Это решение должно помочь обеспечить более безопасное хранение паролей и упростить управление пользователями.

Что такое libpam-pwdfile?

libpam-pwdfile представляет собой модуль PAM, который позволяет использовать текстовый файл для аутентификации пользователей. В этом файле каждая строка соответствует одному пользователю и содержит два или более полей, разделенных двоеточиями. Первое поле – это имя пользователя, а второе – это хэшированный пароль (например, с использованием bcrypt или SHA). Дополнительные поля могут содержать другую информацию.

Преимущества использования libpam-pwdfile:

  1. Гибкость в хранении паролей: Модули поддерживают несколько форматов хэширования, включая более безопасные алгоритмы, такие как bcrypt, что существенно повышает безопасность по сравнению с crypt.

  2. Удобство обновлений: Вы можете использовать инструменты, такие как htpasswd или mkpasswd, для генерации и обновления паролей в файле, что упрощает процесс администрирования.

  3. Легкость интеграции: Настройка модуля libpam-pwdfile с vsftpd достаточно проста и не требует сложных изменений в конфигурации.

Настройка vsftpd с libpam-pwdfile

Для работы с vsftpd вам необходимо произвести следующие действия:

  1. Установка libpam-pwdfile: Убедитесь, что у вас установлен модуль libpam-pwdfile. В большинстве дистрибутивов Linux он доступен в стандартных репозиториях.

  2. Создание файла паролей: Создайте файл, в котором будут храниться ваши пользователи и пароли. Примерная структура файла /etc/vsftpd/.passwd:

    some_user:$2y$05$ensqtXGZXUf5DQosKk51.utplrWUqkeZzNNI8.lCVT.K86uillL4a
    another_user:$2y$05$....(ваш хэшированный пароль)
  3. Настройка 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.

Оцените материал
Добавить комментарий

Капча загружается...