Autenticação do Linux via ADS - permitindo apenas grupos específicos no PAM

6

Estou usando a rota samba / winbind / PAM para autenticar usuários em nossos servidores linux em nosso domínio do Active Directory.

Tudo funciona, mas quero limitar o que os grupos do AD podem autenticar. O Winbind / PAM atualmente permite qualquer conta de usuário habilitada no diretório ativo, e o pam_winbind.so não parece prestar atenção ao parâmetro require_membership_of=MYDOMAIN\mygroup . Não importa se eu o defino nos arquivos /etc/pam.d/system-auth ou /etc/security/pam_winbind.conf .

Como posso forçar o winbind a honrar a configuração require_membership_of ? Usando o CentOS 5.5 com pacotes atualizados.

Atualização: Acontece que o PAM sempre permite que o root passe pela autenticação, em virtude do fato de ser o root. Portanto, enquanto a conta existir, o root passará a autenticação. Qualquer outra conta está sujeita às restrições de autenticação.

A atualização 2: require_membership_of parece estar funcionando, exceto quando o usuário solicitante tem o uid root. Nesse caso, o login é bem-sucedido, independentemente da configuração require_membership_of . Isso não é um problema para qualquer outra conta. Como posso configurar o PAM para forçar a require_membership_of check mesmo quando o usuário atual é root?

A configuração atual do PAM está abaixo:

auth sufficient pam_winbind.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so

account sufficient pam_winbind.so
account sufficient pam_localuser.so
account required pam_unix.so broken_shadow

password ..... (excluded for brevity)

session required pam_winbind.so
session required pam_mkhomedir.so skel=/etc/skel umask=0077
session required pam_limits.so
session required pam_unix.so

require_memebership_of está atualmente definido no arquivo /etc/security/pam_winbind.conf e está funcionando (exceto para o caso raiz descrito acima).

    
por Kenaniah 10.11.2010 / 21:42

5 respostas

1

Aviso: Você provavelmente não deve tentar require_membership_of para root . Há algum caso em que root não consiga fazer o login? Você corre o risco de não conseguir consertar essa máquina sem reinicializar no modo único se algo der errado (como se a rede estivesse inoperante).

Eu respondo mesmo assim.

TL; DR: Se você quiser impor a associação mesmo para usuários locais (raiz incluída), substitua o primeiro sufficient por requisite .

require_membership_of é usado somente em pam_winbind.c em pam_sm_chauthtok (envolvido no grupo de gerenciamento password ) e pam_sm_authenticate (envolvido no grupo de gerenciamento auth ).

Portanto, se um usuário não tiver a associação necessária, a etapa do PAM que falhará será:

auth [...] pam_winbind.so [...]

Você tem um, mas está marcado como sufficient :

auth sufficient pam_winbind.so

Portanto, se falhar, o PAM continuará passando por sua cadeia. Próxima parada:

auth sufficient pam_unix.so nullok try_first_pass

Este será bem-sucedido, se getent passwd root retornar um usuário válido, getent shadow root (executado como root ) retornará uma senha criptografada válida e a senha digitada pelo usuário corresponder.

Não mostrarei o resto, mas nada impedirá que root faça o login.

Gostaria de me referir a pam.d(5) para obter mais informações sobre o mecanismo geral de configuração do PAM, pam_unix(8) & co para os vários módulos.

    
por 04.07.2012 / 07:20
0

Você pode ter mais sorte se referindo ao grupo pelo SID.

Procure o SID para um grupo:

wbinfo -n "mygroup"

Em seguida, defina require_membership_of usando o SID (determinado pelo wbinfo)

require_membership_of=S-1-5-21-1757981276-1399067357-839522115-75638
    
por 10.11.2010 / 22:47
0

Em nossa configuração, isso é restrito pela seguinte linha no arquivo /etc/security/pam_lwidentity.conf:

require_membership_of = OURDOMAIN\domain^admins
    
por 11.11.2010 / 08:33
0

Nessa situação, eu trapaceei e usei o pam_access em vez de bater na minha cabeça contra o pam_winbind.

    
por 01.06.2011 / 22:26
0

Você pode usar a porta do catálogo global do seu servidor do AD? fala protocolo LDAP, provavelmente na porta 3268 (ou 3269 para ldaps criptografados).

Acho que é mais fácil, mais rápido e mais confiável usar a autenticação ldap & Módulos nsswitch que winbind, e também (como sugerido por Handyman5 acima), use pam_access e edite o /etc/security/access.conf para controlar quem tem permissão para efetuar login.

    
por 15.09.2011 / 06:23