SSS 구성에서 Active Directory의 사용자에 대한 로그인 셸 설정

SSS 구성에서 Active Directory의 사용자에 대한 로그인 셸 설정

AD 도메인의 다양한 사용자에 대해 서로 다른 로그인 셸을 정의하려고 합니다.여기에 명시된 바와 같이. 목적은 SSH 터널을 허용하면서 특정 그룹의 구성원에 대한 로그인을 거부하는 것입니다.

아래는 파일입니다 /etc/sssd/sssd.conf. MYDOMAIN.GLOBAL은 AD에서 제공하는 기본 도메인입니다. 다음 구성은 테스트 도메인 MYDOMAIN_TEST.GLOBAL(AD에 없음)을 이러한 제한된 사용자의 도메인으로 정의합니다. (이것은 테스트 전용 구성입니다. 나중에 도메인 섹션 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의 구성원은 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 로그인을 허용하지 않는 필요한 작업을 수행하는 작업 구성입니다.

제한된 그룹의 구성원은 as user@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]

관련 정보