Назад | Перейти на главную страницу

Понимание процедуры аутентификации PAM на FreeBSD с помощью security / sssd

Я пытаюсь понять, что ошибочно ведет себя в моей конфигурации PAM на FreeBSD 10.0

Машина настроена с двумя разными областями аутентификации, одна из которых является аутентификацией Unix по умолчанию, а другая использует демон служб безопасности системы (sssd).

На данный момент я использую эту конфигурацию в /etc/pam.d/sshd так как я просто хочу разрешить входы sssd из ssh.

auth            sufficient      pam_opie.so                  no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so            no_warn allow_local
auth            sufficient      /usr/local/lib/pam_sss.so
#auth           sufficient      pam_krb5.so                  no_warn try_first_pass
#auth           sufficient      pam_ssh.so                   no_warn try_first_pass
auth            required        pam_unix.so                  no_warn use_first_pass

# account
account         required        pam_nologin.so
#account        required        pam_krb5.so
account         required        pam_login_access.so
account         required        /usr/local/lib/pam_sss.so    ignore_unknown_user
account         required        pam_unix.so

# session
#session        optional        pam_ssh.so                   want_agent
session         optional        /usr/local/lib/pam_sss.so
session         optional        /usr/local/lib/pam_mkhomedir.so      mode=0700
session         required        pam_permit.so

# password
password        sufficient      /usr/local/lib/pam_sss.so    use_authtok
#password       sufficient      pam_krb5.so                  no_warn try_first_pass
password        required        pam_unix.so                  no_warn try_first_pass

Если я правильно понял, когда пользователь sssd входит в систему, он попадает в auth sufficient /usr/local/lib/pam_sss.so линия и поскольку это sufficientон войдет в систему без каких-либо проблем. Когда локальная учетная запись пользователя пытается войти в систему, она не проходит проверку sssd, но успешно pam_unix.so используя пароль, введенный впервые, без повторного запроса пароля.

Но это не то, что происходит. Чтобы успешно войти как локальная учетная запись, я должен удалить use_first_pass из pam_unix.so optiions в области аутентификации, и когда пользователь входит в систему, система сначала запрашивает учетную запись sssd, но это не удается, поскольку локальные пользователи не существуют во внешней службе аутентификации. Затем система снова запрашивает тот же пароль, но аутентифицируется на pam_unix.so модуль. И, наконец, доступ предоставляется.

Например, он ведет себя следующим образом:

ssh sssd-test.example.com -l local-user-account
Password: 
Password for local-user-account@sssd-test.example.com:
Last login: Sat May 24 16:22:40 2014 from 192.168.1.100
FreeBSD 10.0-RELEASE-p1 (GENERIC) #0: Tue Apr  8 06:45:06 UTC 2014

Welcome to FreeBSD!

$

Я не совсем понимаю, почему это происходит и связано ли это с account сеанс. Что касается моего понимания PAM, конфигурация должна быть правильной.

Заранее спасибо,

Что ж, мои предположения о работе PAM были правильными.

В pam_sss.so модуль ожидал аргумента forward_pass передать пароль для других модулей PAM, так как pam_unix.soмодуль. Так что просто поставив эту опцию, сделайте свою работу. Результирующая строка была:

auth            sufficient      /usr/local/lib/pam_sss.so           forward_pass

Что закончилось другой проблемой. Если sssd или даже область аутентификации sssd не работают, вы не сможете войти в систему, так как pam_sss.so модуль не будет работать, и, следовательно, пароль не будет отправлен.

Таким образом, очевидным выбором было поставить pam_unix.so перед pam_sss.so и пусть все будет "достаточно" с красивой pam_deny.so в конце. Это способ решения проблемы в Linux, но, похоже, он не работает во FreeBSD.

После некоторого поиска в списках рассылки правильный способ сделать это во FreeBSD - использовать странный порядок в PAM:

auth            sufficient      pam_opie.so                 no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so           no_warn allow_local
auth            sufficient      pam_unix.so                 no_warn
auth            sufficient      /usr/local/lib/pam_sss.so   use_first_pass
auth            required        pam_unix.so                 no_warn use_first_pass

Так положив pam_unix.so два раза в PAM, первый как sufficient и последний как required Покажи фокус. Я не знаю, почему это происходит, но это работает и кажется правильным.