Autenticação de rede + diretório pessoal de roaming - qual tecnologia devo usar?

8

Estou pesquisando softwares que fornecem ao usuário uma única identidade em vários computadores. Ou seja, um usuário deve ter as mesmas permissões em cada computador, e o usuário deve ter acesso a todos os seus arquivos (diretório pessoal de roaming) em cada computador. Parece haver muitas soluções para essa ideia geral, mas estou tentando determinar a melhor para mim. Aqui estão alguns detalhes, juntamente com os requisitos:

  1. A rede de máquinas são instâncias do Amazon EC2 executando o Ubuntu.
    • Nós acessamos as máquinas com SSH.
    • Algumas máquinas nesta LAN podem ter usos diferentes, mas estou discutindo apenas máquinas para um determinado uso (executando uma plataforma de multilocação).
  2. O sistema não terá necessariamente uma quantidade constante de máquinas.
    • Podemos ter que alterar permanentemente ou temporariamente a quantidade de máquinas em execução. Esta é a razão pela qual estou procurando autenticação / armazenamento centralizado.
  3. A implementação desse efeito deve ser segura.
    • Não temos certeza se os usuários terão acesso direto ao shell, mas o software deles provavelmente estará em execução (sob nomes de usuários restritos do Linux, é claro) em nossos sistemas, o que é tão bom quanto o acesso direto ao shell.
    • Vamos supor que o software deles possa ser potencialmente malicioso por motivos de segurança.

Já ouvi falar de várias tecnologias / combinações para alcançar meu objetivo, mas não tenho certeza das ramificações de cada uma delas.

  • Uma postagem mais antiga do ServerFault recomendou o NFS & NIS, embora a combinação tenha problemas de segurança de acordo com este artigo antigo da Symantec . O artigo sugere mudar para o NIS +, mas, como é antigo, este artigo da Wikipédia citou declarações que sugerem uma tendência de afastamento de NIS + pela Sun. O substituto recomendado é outra coisa de que ouvi falar ...
  • LDAP. Parece que o LDAP pode ser usado para salvar as informações do usuário em um local centralizado em uma rede. O NFS ainda precisaria ser usado para cobrir o requisito de 'pasta doméstica de roaming', mas vejo referências a eles sendo usados juntos. Como o artigo da Symantec apontou problemas de segurança no NIS e no NFS, há algum software para substituir o NFS ou devo seguir as sugestões desse artigo para bloqueá-lo? Estou tendendo para o LDAP porque outra parte fundamental da nossa arquitetura, o RabbitMQ, possui um plug-in de autenticação / autorização para o LDAP. O RabbitMQ estará acessível de maneira restrita aos usuários do sistema, portanto, gostaria de vincular os sistemas de segurança, se possível.
  • O Kerberos é outro protocolo de autenticação seguro do qual ouvi falar. Eu aprendi um pouco sobre isso alguns anos atrás em uma aula de criptografia, mas não me lembro muito sobre isso. Eu tenho visto sugestões on-line que podem ser combinadas com LDAP de várias maneiras. Isso é necessário? Quais são os riscos de segurança do LDAP sem o Kerberos? Eu também me lembro do Kerberos sendo usado em outro software desenvolvido pela Universidade Carnegie Mellon ...
  • Andrew File System ou AFS. O OpenAFS está disponível para uso, embora sua configuração pareça um pouco complicada. Na minha universidade, o AFS fornece os dois requisitos ... Eu posso fazer login em qualquer máquina, e minha "pasta do AFS" está sempre disponível (pelo menos quando eu adquiro um token do AFS).

Junto com sugestões para qual caminho eu deveria olhar, alguém tem algum guia que seja particularmente útil? Como o texto em negrito apontou, o LDAP parece ser a melhor escolha, mas estou particularmente interessado nos detalhes da implementação (Keberos? NFS?) Com relação à segurança.

    
por Brian 09.09.2011 / 20:08

2 respostas

6

Informações de autenticação, autorização e diretório

Esta não é uma resposta completa para a sua pergunta, mas eu pensei que poderia ajudar a resolver suas dúvidas sobre o NIS x LDAP vs. Kerberos.

Comece com este , que fornece uma boa visão geral da diferença entre autenticação e autorização , o que é importante entender para este tipo de discussão.

O Kerberos é, como você diz, apenas um protocolo de autenticação. Dado um conjunto de credenciais, por exemplo, um nome de usuário e uma senha, ele informará se elas são válidas ou não. Isso é tudo que faz.

Por outro lado, tanto o NIS quanto o LDAP são serviços de diretório. Eles permitem que um cliente os consulte para obter informações sobre os usuários (qual é o seu diretório inicial? Qual é o seu ID de usuário?). Ambos podem ser usados como fontes de autenticação com diferentes graus de problemas.

O NIS realmente não realiza nenhuma autenticação por conta própria. Em vez disso, expõe um hash de senha a máquinas clientes, e seu sistema local executa a etapa de autenticação real da mesma forma que faria para as contas locais. O problema aqui é que qualquer pessoa com uma conta em um de seus clientes NIS pode pegar todos os seus hashes de senha, e então montar um ataque de força bruta sobre eles no seu tempo livre.

O LDAP é um pouco mais seguro, já que a etapa de autenticação é realmente executada no servidor. É necessário certificar-se de que você esteja criptografando suas sessões LDAP com SSL ou TLS, caso contrário, a senha será exposta em texto não criptografado, onde está vulnerável a sniffing de pacotes.

É muito comum usar o Kerberos para autenticação e, em seguida, NIS ou LDAP para autorização (geralmente isso significa "associação ao grupo") e informações de diretório. Eu diria que o NIS, depois de ter removido os hashes de senha (movendo sua autenticação para o Kerberos) não é realmente menos seguro que o LDAP, e tem a vantagem de estar disponível "fora da caixa" em qualquer distribuição Linux moderna. p>

O LDAP, por outro lado, é geralmente muito mais extensível, é melhor dimensionado se você tiver um grande número de usuários (ou outros objetos de diretório), fornecer consultas ricas e, geralmente, é mais gerenciável. O LDAP também é suportado nativamente em uma variedade de aplicações, enquanto o NIS tem uma estranha relação incestuosa com o sistema operacional central que pode ser indesejável.

Se você estiver construindo coisas do zero, eu sugeriria o Kerberos para autenticação e LDAP para o seu serviço de diretório.

Sistemas de arquivos

O NFS tem uma grande vantagem: você já o possui, é amplamente implementado e é geralmente estável. Existem duas desvantagens primárias no NFS:

  • Não dimensiona bem para E / S paralela. Se você tem um grande número de máquinas acessando o mesmo sistema de arquivos, seu único servidor NFS pode ter dificuldade em acompanhar. É por isso que os clusters maiores geralmente usam um sistema de arquivos em cluster (como Luster, GlusterFS, GPFS, GFS, etc.) que foi projetado para suportar i / o paralela.

  • Tem um modelo de segurança ruim. Geralmente, as decisões de segurança do NFS são baseadas inteiramente em seu ID de usuário numérico. Se você tem raiz em um sistema que pode montar um sistema de arquivos NFS, você tem acesso a todos os arquivos - porque você sempre pode criar um usuário local com o ID de usuário apropriado. Isso não é estritamente verdadeiro, porque tanto o NFSv3 quanto o NFSv4 possuem vários níveis de suporte para a autenticação Kerberos, mas ainda não encontrei ninguém usando isso ... então sua milhagem pode variar.

Para pequenas implementações, a maioria das pessoas usa o NFS apesar de suas limitações.

Existem várias outras soluções - os sistemas de arquivos em cluster que mencionei acima, bem como o AFS e outros - mas a maioria deles exigirá algum trabalho de sua parte para colocá-los em execução em qualquer distribuição que você tenha selecionado. Eu ouvi coisas boas sobre o GlusterFS recentemente, então se eu estivesse procurando por uma alternativa NFS que poderia ser o primeiro lugar que eu pareço.

    
por 09.09.2011 / 22:35
0

Esta é uma resposta parcial.

NIS / NIS +
Não use o NIS. Use o LDAP com o esquema nis.

OpenLDAP (a.k.a. slapd no Ubuntu)
Certifique-se de configurar as ACLs e SSF adequadas (fatores de força de segurança). É muito fácil enviar senhas claramente se você não tiver cuidado. link

NFS
O NFS não é criptografado.
Pode ser embrulhado em ssl com alguns truques.
Sem Kerberos é depende de ip_addr para auth.
Com o Kerberos é possível que o SASL é usado para criptografar tudo.

Kerberos
Requer que o OpenLDAP tenha autenticação de passagem SASL para autenticação LDAP. (Não é difícil.)
Deve usar entradas de DNS. (Não é obrigatório, mas é muito útil).
GSSAPI pode ser usado em vez de chaves ssh. (Pode coexistir.)
As máquinas KDC devem ser separadas das máquinas do cliente.

OpenAFS
Criptografado com DES. (Não considerado seguro.)
Requer o kerberos ou o próprio authserver legado.
Tem suas próprias ACLs do sistema de arquivos.

    
por 09.09.2011 / 23:40