Active Directory のユーザー用に SSS 構成でログイン シェルを設定する

Active Directory のユーザー用に SSS 構成でログイン シェルを設定する

ADドメインの異なるユーザーごとに異なるログインシェルを定義しようとしています。ここで説明されているように目的は、特定のグループのメンバーが SSH トンネリングを実行できるようにしながら、ログインすることを拒否することです。

以下はファイルです/etc/sssd/sssd.conf。MYDOMAIN.GLOBAL は AD によって提供されるデフォルトのドメインです。以下の構成では、AD にないテスト ドメイン MYDOMAIN_TEST.GLOBAL をこれらの制限されたユーザーのドメインとして定義しています。(これはテスト用の構成です。後で、MYDOMAIN_TEST.GLOBAL ドメイン セクションでoverride_shell = /bin/zshが に置き換えられますoverride_shell = /sbin/nologin。)

[sssd]
domains = MYDOMAIN.GLOBAL,MYDOMAIN_TEST.GLOBAL
config_file_version = 2
services = nss, pam

[nss]
default_shell = /bin/bash

[domain/MYDOMAIN.GLOBAL]
ad_server = ad.mydomain.global
ad_domain = MYDOMAIN.GLOBAL
ldap_user_search_filter = (memberOf=CN=AdminsGroup,OU=Groups,DC=MYDOMAIN,DC=GLOBAL)
id_provider = ad
simple_allow_groups = [email protected]
override_shell = /bin/bash

[domain/MYDOMAIN_TEST.GLOBAL]
ad_server = ad.mydomain.global
ad_domain = MYDOMAIN.GLOBAL
ldap_user_search_filter = (memberOf=CN=LimitedGroup,OU=Groups,DC=MYDOMAIN,DC=GLOBAL)
id_provider = ad
simple_allow_groups = [email protected]
override_shell = /bin/zsh

MYDOMAIN.GLOBAL のメンバーは SSH 経由でログインできますが、MYDOMAIN_TEST.GLOBAL のメンバーはログインできず、「アクセスが拒否されました。もう一度お試しください」または「認証に失敗しました」というエラーが表示されます。

ログsssdファイルにはエラーは表示されません。

何故ですか?

MYDOMAIN_TEST.GLOBAL は AD に存在する必要がありますか? 必要な場合、何らかの方法でこれを回避し、異なる「ローカル カテゴリ」のユーザーで sss を構成して、必要な操作を実行することは可能ですか?

(注:どうやらこれはnlscdで実行できるようだ。この質問に関してそしてこの他の質問ただし、LDAP サーバーが必要であり、AD を使用するように構成すると、別の問題が発生する可能性があります。

答え1

これは、sssd の新しいバージョンで動作するはずです:

[sssd]
domains = MYDOMAIN_ADMINS,MYDOMAIN_LIMITED,MYDOMAIN_ALL
config_file_version = 2
services = nss, pam

[nss]
default_shell = /bin/bash

[domain/MYDOMAIN_ADMINS]
ad_server = srv001.company.local,srv002.company.local,srv003.company.local,srv004.company.local
ad_domain = company.local  
ldap_user_search_base = DC=company,DC=local?subtree?(memberOf=CN=unix_admins,OU=Groupes,OU=Main Office,DC=company,DC=local)
id_provider = ad
override_shell = /usr/bin/pwd
override_homedir = /home/%u

[domain/MYDOMAIN_LIMITED]
ad_server = srv001.company.local,srv002.company.local,srv003.company.local,srv004.company.local
ad_domain = company.local  
ldap_user_search_base = DC=company,DC=local?subtree?(memberOf=CN=unix_limited,OU=Groupes,OU=Main Office,DC=company,DC=local)
id_provider = ad
override_shell = /usr/bin/date
override_homedir = /home/%u

[domain/MYDOMAIN_ALL]
ad_server = srv001.company.local,srv002.company.local,srv003.company.local,srv004.company.local
ad_domain = company.local  
ldap_user_search_base = DC=company,DC=local
id_provider = ad
override_homedir = /home/%u

は、ldap_user_search_base現在非推奨(削除?)となっている の代わりに使用されますldap_user_search_filter

simple_allow_groupsフィルターで を追加するのが正しいかどうかわかりませんldap_user_search_base。 ディレクティブだけでも機能するのだろうかと思いますsimple_allow_groups

答え2

おかげsssd メンテナー答えが見つかりました。これは、必要なことを実行する実用的な構成です。つまり、SSH トンネリングは許可しますが、AD LimitedGroup のメンバーである AD ユーザーへの SSH ログインは許可しません。

制限付きグループのメンバーはuser@MYDOMAIN_TEST.GLOBAL、 としてではなくとして ssh を実行する必要があることに注意してください[email protected]。そうしないと、機能しません。

解決策の要点は、ディレクティブで AD ドメイン名の代わりに SSSD セクションのドメイン名を使用することです。ただし、行とがsimple_allow_groupsなくても構成は機能することに注意してください。コメントでユーザーが報告したように、ディレクティブなしで設定することも可能です。access_provider = simplesimple_allow_groups = ...simple_allow_groups = groupuse_fully_qualified_names = True

また、この設定でldap_user_search_baseは非推奨の の代わりにを使用することに注意してくださいldap_user_search_filter

その他の構成オプションは、構成ファイルにすでに含まれているため、完全性のためだけに存在します。

[sssd]
domains = MYDOMAIN.GLOBAL,MYDOMAIN_TEST.GLOBAL
config_file_version = 2
services = nss, pam

[nss]
default_shell = /bin/bash

[domain/MYDOMAIN_TEST.GLOBAL]
ldap_user_search_base = DC=MYDOMAIN,DC=GLOBAL?subtree?(memberOf=CN=LimitedGroup,OU=Groups,DC=MYDOMAIN,DC=GLOBAL)
default_shell = /sbin/nologin
ad_server = ad.mydomain.global
ad_backup_server = ad2.mydomain.global
ad_domain = MYDOMAIN.GLOBAL
krb5_realm = MYDOMAIN.GLOBAL
realmd_tags = manages-system joined-with-adcli 
cache_credentials = False
id_provider = ad
krb5_store_password_if_offline = True
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = simple
simple_allow_groups = LimitedGroup@MYDOMAIN_TEST.GLOBAL

[domain/MYDOMAIN.GLOBAL]
ldap_user_search_base = DC=MYDOMAIN,DC=GLOBAL?subtree?(memberOf=CN=AdminsGroup,OU=Groups,DC=MYDOMAIN,DC=GLOBAL)
default_shell = /bin/bash
ad_server = ad.mydomain.global
ad_backup_server = ad2.mydomain.global
ad_domain = MYDOMAIN.GLOBAL
krb5_realm = MYDOMAIN.GLOBAL
realmd_tags = manages-system joined-with-adcli 
cache_credentials = False
id_provider = ad
krb5_store_password_if_offline = True
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = simple
simple_allow_groups = [email protected]

関連情報