Como posso usar diferentes princípios do kerberos para sudo do que para system-auth?

2

Na minha organização, somos obrigados a usar diferentes princípios do kerberos ao autenticar para sudo do que para outros tipos de autenticação, como efetuar login. Por exemplo, meu principal (login) principal pode ser chamado de foobar@DOMAIN , enquanto meu sudo principal é chamado foobar/sudo@DOMAIN . No passado, atendemos a esse requisito criando nosso próprio sudo com os sinalizadores --with-kerb5 e --enable-kerb5-instance=sudo definidos no momento da criação. Isso significa que nossa versão do sudo se conecta diretamente ao kerberos, nunca usando a pilha do PAM.

Estamos tentando ver se podemos atender ao requisito do principal dividido sem construir e distribuir nossa própria versão do sudo. Minha pergunta é: isso é possível e, em caso afirmativo, como?

Usando o pacote padrão do RHEL 6/7 sudo, não posso usar a opção --with-kerb5 build-time; Eu tenho que usar o PAM como minha pilha de autenticação. Isso significa que devo usar pam_krb5 . Com pam_krb5 , notei que posso mapear nomes de usuários para nomes principais em /etc/krb5.conf usando a opção de configuração appdefaults/pam/mappings . Isso me deixa no meio do caminho, já que me permite mapear um nome de usuário de foobar para um nome principal de foobar/sudo . No entanto, pelo que posso dizer, não há como definir mapeamentos por aplicativo (o Kerberos vê o PAM como um único aplicativo, independentemente de qual aplicativo invocar a pilha do PAM), o que significa que o mapeamento se aplica a qualquer aplicativo que use pam_krb5 em seus aplicativos. Configuração do PAM. Assim, posso fazer com que o sistema use os princípios sudo tanto para sudo quanto para login, ou login principal para ambos, mas não consigo fazer o sistema usar os principais sudo para sudo e login principals para login.

Alguma ideia? Ou estou preso a ter que construir & distribuir um sudo personalizado?

    
por jayhendren 28.07.2015 / 01:17

1 resposta

2

Esta não é uma resposta completa, mas gostaria de saber se você poderia fazer isso usando o SSSD.

O módulo pam_sss permite restringir um serviço a considerar somente domínios específicos em /etc/sssd/sssd.conf . De pam_sss(8) :

domains

Allows the administrator to restrict the domains a particular PAM service is allowed to authenticate against. The format is a comma-separated list of SSSD domain names, as specified in the sssd.conf file.

Em teoria, você poderia ter dois domínios apontando para o mesmo ambiente de autenticação upstream, mas com regras diferentes para mapear usuários para entidades.

Infelizmente, parece que o SSSD só suporta mapeamentos estáticos de nomes de usuários para nomes principais, o que não é muito escalável.

Atualizar

Também parece que versões mais recentes do módulo pam_krb5 suportam uma opção alt_auth_map que <<> exatamente deseja o que você deseja. Ou seja, em /etc/pam.d/sudo , posso fazer isso:

auth    required    pam_krb5.so alt_auth_map=%s/sudo only_alt_auth

... e agora sudo sempre usará o <username>/sudo principal para autenticação.

Esta versão do pam-krb5 é distribuída com o Ubuntu, mas presumivelmente pode-se construir um rpm e instalá-lo nos seus sistemas sem muito esforço.

    
por 28.07.2015 / 04:07