web-dev-qa-db-ja.com

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

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

以下はファイル/etc/sssd/sssd.confです。 MYDOMAIN.GLOBALは、ADによって提供されるデフォルトのドメインです。以下の設定では、ADにないテストドメインMYDOMAIN_TEST.GLOBALを、これらの制限されたユーザーのドメインとして定義しています。 (これはテスト用の構成にすぎません。後で、MYDOMAIN_TEST.GLOBALドメインセクションで、override_Shell = /bin/zshoverride_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を使用するように設定することは別ですワームの缶。)

5
dr_

sssdメンテナに感謝 答えを見つけました。これは、私が必要とすることを実行する設定です。つまり、SSHトンネリングは許可しますが、AD LimitedGroupのメンバーであるADユーザーへのSSHログインは許可しません。

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

ソリューションの要点は、simple_allow_groupsディレクティブでADドメイン名の代わりにSSSDセクションドメイン名を使用することです。ただし、設定は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]
3
dr_

これは、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ディレクティブのみで機能するのだろうか。