Linux、ドメインに参加せずに 2 つの異なる AD に対して基本パスワード認証を行う

Linux、ドメインに参加せずに 2 つの異なる AD に対して基本パスワード認証を行う

当社では、Kerberos を使用した Windows AD に対する基本パスワード認証で AIX および Linux サーバーを実行しているため、AD 内の sAMAccountName と同じユーザー名を持つローカル ユーザーであり、実行されるのはパスワード チェックのみです。

どちらのOSもシンプルなkrb5.confを使用します

    [libdefaults]
        default_realm = COMPANYA.COM

    [realms]
            COMPANYA.COM {
                    kdc = ad.companya.com:88
                    admin_server = ad.companya.com:749
            }
    
    [domain_realm]
            .companya.com = COMPANYA.COM
            companya.com = COMPANYA.COM

これは両方の OS で正常に動作します。

今では、会社 B が存在するため、2 番目の AD も存在するという状況になっています。ユーザーは両方の AD で利用できるようになることはなく、どちらか一方の AD でのみ利用できるようになります。

そこで、動作させるのが最も難しいだろうと考えて、まず AIX から始めました。

krb5.confを更新しました

[libdefaults]
    default_realm = COMPANYA.COM

[realms]
        COMPANYA.COM {
                kdc = ad.companya.com:88
                admin_server = ad.companya.com:749
        }
        COMPANYB.COM {
                kdc = ad.companyb.com:88
                admin_server = ad.companyb.com:749
        }

[domain_realm]
        .companya.com = COMPANYA.COM
        companya.com = COMPANYA.COM
        .companyb.com = COMPANYB.COM
        companyb.com = COMPANYB.COM

少し調べてみたところ、私がやるべきことは

chuser auth_domain=COMPANYB.COM <user>

これにより、/etc/security/user ファイルが更新され、Company B AD に対してパスワード検証が実行されます。これがいかに簡単か、私はうれしい驚きを覚えました。

次に Linux (Ubuntu ボックス) が登場しました。同じ krb5.conf を実行しましたが、残念ながら、Ubuntu で chuser に対して特定のユーザーを他の AD にポイントする同等のコマンドを見つけることができません。

私が見つけたのは、SSSDの使用とレルムへの参加に関するページです(2 つの AD ドメインを持つ Linux SSSDおよび/またはhttps://ubuntu.com/server/docs/service-sssd-ad) しかし、これはすべて必要以上のことです (領域への参加)。

これまでに tcpdump と kinit を使用してわかったことは次のとおりです。

kinit [email protected] 
<password>
kinit: KDC reply did not match expectations while getting initial credentials

kinit [email protected]
<password>
<no error>

login [email protected]
<password>
access denied

login [email protected]
<password>
access denied

全角大文字の kinit が機能したので、ログインも機能するだろうと予想していましたが、残念ながら機能しませんでした。

更新: ログイン[メールアドレス]Linuxボックス上でユーザーが次のように作成された場合に機能します。[メールアドレス]、それでもまだ満足していない

(ユーザーにドメインを大文字で入力するように求めるのは現実的ではないという事実を忘れています)

つまり、簡単に言えば、krb5.conf ファイル内のデフォルトの AD とは別の AD に特定のユーザーをポイントする方法です。

よろしくお願いいたします。

答え1

先週、少し進めてみましたが、どうやらうまくいくようです。ただし、PAM がどのように機能するかについてはまだ詳細を調べているところです。

/etc/pam.d/common-authを更新/変更しました

オリジナル

auth   [success=2 default=ignore]      pam_krb5.so minimum_uid=1000
auth   [success=1 default=ignore]      pam_unix.so nullok try_first_pass

新しいバージョン

auth    sufficient           pam_krb5.so minimum_uid=1000 realm=COMPANYA.COM
auth    sufficient           pam_krb5.so minimum_uid=1000 realm=COMPANYB.COM
auth    sufficient           pam_unix.so nullok try_first_pass

会社 A のユーザーとしてログインすると、会社 A の AD がチェックされ、そこにユーザーが存在するため、パスワードが検証されます。会社 B のユーザーとしてログインすると、会社 A の AD がチェックされ、そこにユーザーは存在しないため、会社 B がチェックされ、そこにユーザーが存在するため、パスワードが検証されます。

AIX ほど優れてはいませんが、それでも動作します。

よろしくお願いいたします。

関連情報