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

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

ADドメイン内のさまざまなユーザーに対して異なるログインシェルを定義しようとしています。ここで述べたように。目的は、SSHトンネルを許可しながら特定のグループのメンバーへのログインを拒否することです。

以下はファイルです/etc/sssd/sssd.conf。 MYDOMAIN.GLOBAL は AD が提供するプライマリドメインです。次の構成は、テストドメインMYDOMAIN_TEST.GLOBAL(ADにはありません)をこれらの制限付きユーザーのドメインとして定義します。 (これはテスト専用の設定です。後でドメインセクションMYDOMAIN_TEST.GLOBALoverride_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のメンバーはSSH経由でログインできず、「権限が拒否されました。再試行してください」または「認証に失敗しました」というエラーが表示されます。

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

なぜそんなことですか?

MYDOMAIN_TEST.GLOBALはADに存在する必要がありますか?それでは、どういうわけかこれをバイパスし、他の「ローカルクラス」ユーザーとしてsssを設定して、私が望むことをすることはできますか?

(注:これはnlscdを使用して実行できるようです。この質問によるとそしてこれは別の質問ですしかし、LDAPサーバーが必要であり、ADを使用するように構成することは別のワームです。 )

答え1

これは最新バージョンのSSDで動作します。

[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

ありがとうSSDマネージャ私は答えを見つけました。これは、AD LimitedGroupのメンバーであるADユーザーに対してSSHトンネリングを許可するがSSHログインを許可しない必要なタスクを実行するタスク構成です。

制限付きグループのメンバーはasuser@MYDOMAIN_TEST.GLOBALではなくasとしてsshする必要があります[email protected]。それ以外の場合は動作しません。

回避策のポイントは、ディレクティブでADドメイン名の代わりにドメイン名のSSSD部分を使用することですsimple_allow_groups。ただし、この構成access_provider = simpleは行の合計なしで機能しますsimple_allow_groups = ...。ユーザーがコメントで提供したように、simple_allow_groups = group別途の指示なしに設定できます。use_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]

関連情報