Глава 7. Аутентификация пользователя

1. Почему системой аутентификации по умолчанию является PAM?
2. Поддерживаемые способы аутентификации
3. Проблемы с не-PAM аутентификацией
4. Директива AuthPAMAuthorative неизвестна!
5. Конфигурирование PAM
6. pam_sm_open_session ошибки
7. Обычные пользователи не могут залогиниться, только анонимные (anon).
8. AuthPAMAuthoritative
9. LDAP
10. Зашифрованные пароли
11. SecureID
12. Одноразовые пароли
13. RADIUS
14. Проверка анонимных паролей
15. Почему я вижу "PAM(name): Authentication failure", но все равно могу залогиниться?

Этот раздел находится в процессе правки из-за глобальных структурных изменений в SQL модуле, предшествующем 1.2.0

1. Почему системой аутентификации по умолчанию является PAM?

Из элементарных соображений безопасности. PAM наиболее безопасный метод из возможных систем авторизации. Большинство описаний возможных вариантов и подсказок по настройкам конфигурации PAM содержится в файле README.PAM, которые (описания и посказки) зависят отисходного кода сервера и сборки его с поддержкой тех или иных программных пакетов. Для использования /etc/passwd будет необходима компилляция вручную с указанием в скрипте конфигурации --without-pam. До тех пор, пока PAM подсистема не будет тщательно сконфигурирована, аутентификация не удастся.

2. Поддерживаемые методы аутентификации

  • PAM

  • Стандартный /etc/passwd поиск

  • NIS

  • Скрытые (shadow) пароли

  • Личные passwd/group файлы для каждого виртуального пользователя

  • базы данных SQL

    Если они не согласуются с вашей системой, тогда для работы с ProFTPD вам необходимо написать обычный модуль или использовать "ld.so.preload" подход для перехвата getpwbynam() системных звонков.

  • 3. Проблемы с non-PAM аутентификацией

    Обычно эти проблемы решаются либо путем полного отключения PAM, либо отключением директив

    PersistentPasswd   off
    AuthPAMAuthoritative off
              

    4. Директива AuthPAMAuthorative неизвестна!

    Проверьте правильность написания - должно быть написано AuthPAMAuthoritative, а не AuthPAMAuthorative, и никакой другой вариант.

    5. Конфигурирование PAM

    Вверху установочной директории ProFTPD есть файл README.Pam:

    Redhat Linux

    #%PAM-1.0
    auth       required     /lib/security/pam_listfile.so item=user
    sense=deny file=/etc/ftpusers onerr=succeed
    auth       required     /lib/security/pam_pwdb.so shadow nullok
    account    required     /lib/security/pam_pwdb.so
    session    required     /lib/security/pam_pwdb.so
              

    SuSE Linux

    SuSE появляется при использовании pam_unix чаще, чем при использовании pam_pwdb, которая является методом Redhat. Все ссылки на pam_pwdb долны быть заменены на "pam_unix" для SuSE систем.

    Следующий фрагмент программы прекрасно работает на SuSE 6.2

    /etc/pam.d/ftpd
    #%PAM-1.0
    
    # Uncomment this to achieve what used to be ftpd -A.
    # auth       required     /lib/security/pam_listfile.so item=user sense=allow file=/etc/ftpchroot onerr=fail
    
    auth     required       /lib/security/pam_listfile.so item=user
    sense=deny file=/etc/ftpusers onerr=succeed
    auth     sufficient     /lib/security/pam_ftp.so
    auth     required       /lib/security/pam_unix.so
    auth     required       /lib/security/pam_shells.so
    account  required       /lib/security/pam_unix.so
    password required       /lib/security/pam_unix.so
    session  required       /lib/security/pam_unix.so
              

    FreeBSD

    FreeBSD не поддерживает директивы PAM сессии. Если вы удалите следующую строчку из раздела FreeBSD README.PAM, PAM должен прекрасно работать с новыми версиями FreeBSD.

     ftp session required    pam_unix.so         try_first_pass
              

    6. pam_sm_open_session ошибки

    Для работы ProFTPD необходима версия PAM 0.59 или более поздние. pam_sm_open_session не является частью предыдущих версий.

    7. Обычные пользователи не могут залогиниться, только анонимные (anon).

    Убедитесь, что файл /etc/pam.d/ftp существует в системе и сконфигурирован, как указано в README.PAM

    8. AuthPAMAuthoritative

    В настоящее время AuthPAMAuthoritative установлена по умолчанию на "ON", что приводит к сбою логинов, если PAM не может аутентифицировать пользователя. Это нарушает директиву AuthUserFile, поскольку она не может аутентифицировать пользователя, пока AuthPAMAuthoritative директива настроена на "OFF"

    Такая настройка по умолчанию необходима для того, чтобы убедиться в том, что система безопасна, учитывая то, что системный администратор может отключить данную опцию. Сейчас данный вопрос вызывает много споров, что может привести к тому, что настройка директивы вернется к установленному "Off" в AuthUserFile.

    Внимание: также, как и в текущем CVS, в будущем pre9 релизе установки по умолчанию изменены на "Off"

    9. LDAP

    mod_ldap в настоящее время стабилен; были обнаружены пара ошибок, которые были устранены после релиза модуля 1.0. Сейчас все еще идет доработка, загляните на http://horde.net/~jwm/software/proftpd-ldap/ для более подробной информации. На сайте автора приведен в качестве примера фрагмент, который дает представление о том, как использовать данный модуль.

    10. Зашифрованные пароли

    Существуют патчи, которые в настоящее время соединяются для того, чтобы обеспечить SHA шифрование. Идея состоит в том, чтобы сервер получал всю информацию о пользователе, кроме паролей, анонимно. Затем сервер возобновляет соединение, когда пользователь логинится, и пытается получить пароль через шифрованное соединение. Об этом подробнее вы сможете прочитать в следующем релизе (2.5)

    11. SecureID

    Пока не поддерживается

    12. Одноразовые пароли

    Использование одноразовых паролей возможно при использовании PAM или Opie модулей. Модуль возвращает вызов, который пользователь посылает клавишному генератору вместе с "pass phrase", что дает 5 слов, которые посылаются в качестве пароля. Если вы сделаете все правильно, пароль никогда не будет повторен.

    Здесь требуется установленный на сервере http://inner.net/opie/. Существуют key gen клиенты для win95/98, *nix, mac.

    ftp://ftp.urbanrage.com/pub/c/mod_opie.c

    13. RADIUS

    Новый mod_radius модуль предусматривает RADIUS аутентификацию и поддержку аккаунта для ProFTPD.

    14. Проверка анонимных паролей

    Возможно ли проверить предложенный email адрес с анонимным логином перед разрешением доступа? Ответ прост, анонимный доступ сделан для того, чтобы можно было попасть на сайт без каких-либо ограничений и проверок, кроме тех, что установлены при скачиваниях/зачачиваниях на сайт. Самое лучшее, что здесь может быть, это умеренная регистрация и трэкинг доступа, а также запрашиваемые IP.

    15. Почему я вижу "PAM(name): Authentication failure", но все равно могу залогиниться?

    Если операционная система поддерживает PAM (Сменные Аутентификационные Модули - Pluggable Authentication Modules), proftpd будет выполнять аутентификацию PAM по умолчанию. Однако, эта аутентификация не является "полномочной" ("authoritative") по умолчанию, что значит проблемы при PAM аутентификации необязательно приведут к проблемам с логином. Использование PAM может быть сконфигурировано при помощи конфигурационной директивы AuthPAM; "полномочность" любых проверок PAM контролируется через конфигурационную директиву AuthPAMAuthoritative.