web-dev-qa-db-ja.com

security / sssdを使用したFreeBSDでのPAM認証手順を理解する

FreeBSD10.0のPAM設定で何が間違って動作しているかを理解しようとしています

マシンは2つの異なる認証レルムで構成されています。1つはデフォルトのUnix認証で、もう1つはSystem Security Services Daemon(sssd)を使用しています。

現時点では、sshからのsssdログインを許可したいだけなので、/etc/pam.d/sshdでこの構成を使用しています。

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を削除する必要があります。ユーザーがログインすると、システムは最初にsssdアカウントを要求しますが、ローカルユーザーが存在しないため失敗します。外部認証サービスで。次に、システムは同じパスワードを再度要求しますが、pam_unix.soモジュールで認証します。そして最後にアクセスが許可されます。

例として、次のように動作します。

ssh sssd-test.example.com -l local-user-account
Password: 
Password for [email protected]:
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についての私の理解としては、構成は正しいはずです。

前もって感謝します、

4

さて、PAMの働きについての私の前提は正しかった。

pam_sss.soモジュールは、引数forward_passpam_unix.somoduleとして他のPAMモジュールのパスワードに中継することを期待していました。したがって、このオプションを配置するだけで機能します。結果の行は次のとおりです。

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に2回入れて、最初の1つをsufficientとして、最後の1つをrequiredとして配置するとうまくいきます。なぜこれが起こるのかわかりませんが、機能しており、正しい方法のようです。

4