Amazon EC2 Linux インスタンスドメインの結合エラー - AWS Directory Service

Amazon EC2 Linux インスタンスドメインの結合エラー

以下は、Amazon EC2 Linux インスタンスを AWS Managed Microsoft AD ディレクトリに結合する時に表示されることがあるエラーメッセージのトラブルシューティングに役立ちます。

Linux インスタンスはドメインに結合したり、認証を行ったりすることができません

Ubuntu の領域を Microsoft Active Directory で使用する際は、その Ubuntu の (14.04、16.04、および 18.04 の) インスタンスでは、DNS での逆引き解決ができる必要があります。それ以外の場合は、以下の 2 つのシナリオのいずれかが発生する可能性があります。

シナリオ 1: まだ領域に結合されていない Ubuntu インスタンス

領域への結合を試行中の Ubuntu インスタンスの場合、ドメインに結合するために必要なアクセス許可が sudo realm join コマンドにより提供されず、次のようなエラーが表示されることがあります。

! Couldn't authenticate to active directory: SASL(-1): generic failure: GSSAPI Error: An invalid name was supplied (Success) adcli: couldn't connect to EXAMPLE.COM domain: Couldn't authenticate to active directory: SASL(-1): generic failure: GSSAPI Error: An invalid name was supplied (Success) ! (! Active Directory への認証に失敗しました: SASL(-1): 一般エラー: GSSAPI エラー: 無効な名前が入力されました (成功) adcli: EXAMPLE.COM ドメインに接続できませんでした: Active Directory への認証に失敗しました: SASL(-1): 一般エラー: GSSAPI エラー: 無効な名前が入力されました (成功) !) Insufficient permissions to join the domain realm: Couldn't join realm: Insufficient permissions to join the domain (ドメイン領域に結合するための権限が不十分です: 領域に結合できませんでした: ドメインに結合するための権限が不十分です)

シナリオ 2: 領域に結合済みの Ubuntu インスタンス

既に Microsoft Active Directory ドメインに結合されている Ubuntu インスタンスの場合、ドメイン認証情報を使用してインスタンスに SSH 接続を試みると、次のエラーで失敗することがあります。

$ ssh admin@EXAMPLE.COM@198.51.100

no such identity: /Users/username/.ssh/id_ed25519: No such file or directory

admin@EXAMPLE.COM@198.51.100's password: (admin@EXAMPLE.COM@198.51.100 のパスワード:)

Permission denied, please try again.

admin@EXAMPLE.COM@198.51.100's password: (admin@EXAMPLE.COM@198.51.100 のパスワード:)

公開キーを使用してインスタンスにログインし /var/log/auth.log を参照すると、次のような、ユーザーが見つからないことを知らせるエラーが表示されることがあります。

May 12 01:02:12 ip-192-0-2-0 sshd[2251]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=203.0.113.0

May 12 01:02:12 ip-192-0-2-0 sshd[2251]: pam_sss(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=203.0.113.0 user=admin@EXAMPLE.COM

May 12 01:02:12 ip-192-0-2-0 sshd[2251]: pam_sss(sshd:auth): received for user admin@EXAMPLE.COM: 10 (User not known to the underlying authentication module)

May 12 01:02:14 ip-192-0-2-0 sshd[2251]: Failed password for invalid user admin@EXAMPLE.COM from 203.0.113.0 port 13344 ssh2

May 12 01:02:15 ip-192-0-2-0 sshd[2251]: Connection closed by 203.0.113.0 [preauth]

ただし、このユーザーの kinit は引き続き使用可能です。以下に例を示します。

ubuntu@ip-192-0-2-0:~$ kinit admin@EXAMPLE.COM Password for admin@EXAMPLE.COM: ubuntu@ip-192-0-2-0:~$ klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: admin@EXAMPLE.COM

回避方法

これらの両方のシナリオで現在推奨されている回避策は、次に示すように [libdefaults] セクションの /etc/krb5.conf でリバース DNS を無効にすることです。

[libdefaults] default_realm = EXAMPLE.COM rdns = false

シームレスなドメイン結合での一方向の信頼認証の問題

AWS Managed Microsoft Active Directory とオンプレミス AD との間で一方向の送信の信頼が確立されている場合、Winbind で信頼された Active Directory 認証情報を使用して、ドメインに結合している Linux インスタンスに対し認証を試みた際に、認証に失敗することがあります。

エラー

Jul 31 00:00:00 EC2AMAZ-LSMWqT sshd[23832]: Failed password for user@corp.example.com from xxx.xxx.xxx.xxx port 18309 ssh2 (7月31日 00:00:00 EC2AMAZ-LSMWqT sshd[23832]: xxx.xxx.xxx.xxx ポート 18309 ssh2 からの user@corp.example.com のパスワードが失敗しました)

Jul 31 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam_winbind(sshd:auth): getting password (0x00000390) (7月31日 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam_winbind(sshd:auth): パスワードの取得 (0x00000390))

Jul 31 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam_winbind(sshd:auth): pam_get_item returned a password (7 月31日 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam_winbind(sshd:auth): pam_get_item がパスワードを返しました)

7月31日 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam_winbind(sshd:auth): リクエスト wbcLogonUser が失敗しました: WBC_ERR_AUTH_ERROR: PAM エラー: PAM_SYSTEM_ERR (4)、NTSTATUS: **NT_STATUS_OBJECT_NAME_NOT_FOUND**、エラーメッセージ: オブジェクト名が見つかりません。

Jul 31 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam_winbind(sshd:auth): internal module error (retval = PAM_SYSTEM_ERR(4), user = 'CORP\user') (7月31日 00:05:00 EC2AMAZ-LSMWqT sshd[23832]: pam_winbind(sshd:auth): 内部モジュールエラー (retval = PAM_SYSTEM_ERR (4)、ユーザー = 'CORP\user'))

回避方法

この問題を解決するには、次の手順に従って、PAM モジュール設定ファイル (/etc/security/pam_winbind.conf) 内のディレクティブをコメントアウトするか、それを削除する必要があります。

  1. テキストエディタで /etc/security/pam_winbind.conf ファイルを開きます。

    sudo vim /etc/security/pam_winbind.conf
  2. ディレクティブ 「krb5_auth = yes」 をコメントアウトするか、削除してください。

    [global] cached_login = yes krb5_ccache_type = FILE #krb5_auth = yes
  3. Winbind サービスを停止した後に再起動します。

    service winbind stop or systemctl stop winbind net cache flush service winbind start or systemctl start winbind