Estou tentando definir diferentes shells de login para diferentes usuários de um domínio do AD, conforme descrito aqui . O objetivo é impedir que membros de um grupo específico efetuem login enquanto permitem que eles façam o encapsulamento SSH.
Aqui abaixo está o arquivo /etc/sssd/sssd.conf
. MYDOMAIN.GLOBAL é o domínio padrão fornecido pelo AD. A configuração abaixo define um domínio de teste MYDOMAIN_TEST.GLOBAL, que não está no AD, como o domínio para esses usuários limitados. (Esta é apenas uma configuração para teste: posteriormente, na seção de domínio MYDOMAIN_TEST.GLOBAL, override_shell = /bin/zsh
será substituído por 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
Um membro de MYDOMAIN.GLOBAL pode fazer login via SSH, enquanto um membro de MYDOMAIN_TEST.GLOBAL não pode e recebe um erro "Permissão negada, tente novamente" ou "Falha na autenticação".
Os sssd
arquivos de log não mostram nenhum erro.
Por que é que?
MYDOMAIN_TEST.GLOBAL precisa estar presente no AD? Se sim, é possível contornar isso de alguma forma e configurar sss com diferentes "categorias locais" de usuários para fazer o que eu quero?
(Observação: aparentemente isso pode ser feito com nlscd, conforme esta pergunta e esta outra pergunta , mas requer um servidor LDAP e configurá-lo para usar um AD é outra lata de worms.)
Isso deve funcionar com versões mais recentes do sssd:
O
ldap_user_search_base
é usado em vez do agora obsoleto (removido?)ldap_user_search_filter
.Não sei se adicionar um
simple_allow_groups
com umldap_user_search_base
filtro está correto ou não. Gostaria de saber se funcionaria apenas com umasimple_allow_groups
diretiva.Graças aos mantenedores do sssd , encontrei a resposta. Aqui está uma configuração de trabalho que faz o que eu precisava, ou seja, permitir o tunelamento SSH, mas não o login SSH para os usuários do AD que são membros do AD LimitedGroup.
Observe que um membro do grupo limitado deve ssh como
user@MYDOMAIN_TEST.GLOBAL
, não como[email protected]
, ou não funcionará.A essência da solução está em usar o nome de domínio da seção SSSD em vez do nome de domínio AD na
simple_allow_groups
diretiva. Observe, no entanto, que a configuração também funciona sem as linhasaccess_provider = simple
esimple_allow_groups = ...
. Também é possível definirsimple_allow_groups = group
sem ause_fully_qualified_names = True
diretiva, conforme relatado por um usuário nos comentários.Além disso, observe que esta configuração usa
ldap_user_search_base
em vez do obsoletoldap_user_search_filter
.As outras opções de configuração são apenas para completar, pois já estavam no arquivo de configuração.