Localmente, negue login a usuários autenticados via LDAP

1

Eu tenho um servidor Linux RedHat que é usado por mais de 1.000 usuários

Os nomes dos usuários estão chegando ao servidor por meio do protocolo LDAP, portanto, a autenticação de login é do LDAP

Minha pergunta: é possível bloquear o login do usuário na máquina local, enquanto os nomes dos usuários vêm do LDAP?

    
por maihabunash 24.02.2015 / 11:25

1 resposta

3

A lógica de autenticação geralmente é tratada pelo PAM atualmente. Meu palpite é que você deve ser capaz de configurar isso nos arquivos de configuração do PAM (no meu caso, em /etc/pam.d ).

A lógica de autenticação comum é armazenada em common-auth . No seu caso, acho que você deveria ter algo assim:

auth    [success=2 default=ignore]   pam_unix.so nullok_secure
auth    [success=1 default=ignore]   pam_ldap.so use_first_pass
auth    requisite                    pam_deny.so
auth    required                     pam_permit.so

... ou talvez algo um pouco mais simples, como:

auth    sufficient                   pam_unix.so nullok_secure
auth    sufficient                   pam_ldap.so use_first_pass

... dependendo se o LDAP é a primeira ou segunda fonte em comparação com a autenticação padrão do UNIX (considerando que ela também está envolvida).

Agora, se você quiser desabilitar a autenticação LDAP em uma máquina, ou negar o acesso a usuários autenticados por LDAP, tudo o que você precisa fazer é remover essa fonte da configuração do PAM e confiar Apenas autenticação do UNIX:

auth    [success=1 default=ignore]   pam_unix.so nullok_secure
auth    requisite                    pam_deny.so
auth    required                     pam_permit.so
  • Quando pam_unix.so for bem-sucedido, ignore 1 elemento do restante da cadeia ( pam_deny.so ) e avalie o próximo ( pam_permit.so ). Isso significa que, quando a autenticação do UNIX falha, o usuário é lançado em pam_deny.so , o que resulta em uma falha de autenticação. Quando é bem-sucedido, chega a pam_permit.so e recebe acesso ao sistema.
  • O LDAP não está envolvido aqui, o que significa que qualquer usuário que não esteja armazenado em /etc/passwd não poderá acessar o sistema.

Agora, se você quiser bloquear especificamente os usuários do LDAP ...

auth    [success=die]                pam_ldap.so
auth    sufficient                   pam_unix.so
  • Quando pam_ldap.so for bem-sucedido, retorne um código de falha e encerre a cadeia. Se falhar, pam_unix.so é suficiente para acessar o sistema.
  • Isso interromperá todas as autenticações do PAM sempre que as credenciais do LDAP coincidirem. Usuários do UNIX ainda podem acessar o sistema.

Claro, existem muitas outras maneiras de configurar o PAM, e algumas são provavelmente melhores / mais eficientes do que aquelas que acabei de dar. Para mais informações sobre isso, dê uma olhada em esta página . Apenas uma observação: antes de começar a jogar com a configuração do PAM, verifique se você tem um terminal root em segurança em algum lugar. Se você bagunçar a lógica de autenticação, ficará mais do que feliz em acessar /etc/pam.d novamente e reverter suas alterações :)

Outra observação: enquanto o PAM lida com autenticação (e algumas outras coisas), a resolução de nomes é tratada pelo NSS ( Name Service Switch ), cuja configuração pode ser encontrada em /etc/nsswitch.conf . Se você deixar o LDAP nesse arquivo, o sistema ainda saberá sobre esses usuários LDAP, mas não permitirá que eles entrem. Basicamente, ele permite que o sistema combine UIDs com nomes, por exemplo, quando você está listando o conteúdo de um arquivo LDAP. diretório ( ls -l ) e obtendo os proprietários dos arquivos.

Você também pode remover essa fonte de nome LDAP editando a configuração do NSS, mas eu não a recomendaria se seus usuários realmente possuíssem arquivos disponíveis na máquina.

    
por 25.02.2015 / 21:59