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

9

Estou procurando um software que forneça ao usuário uma identidade única em vários computadores. Ou seja, um usuário deve ter as mesmas permissões em cada computador e deve ter acesso a todos os seus arquivos (diretório inicial móvel) em cada computador. Parece haver muitas soluções para essa idéia 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.
    • 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 permanente ou temporariamente a quantidade de máquinas em execução. Essa é a razão pela qual estou analisando a 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 seu software estará em execução (sob nomes restritos de usuário 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 malicioso por questões de segurança.

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

  • Uma publicação mais antiga do ServerFault recomendava NFS e NIS, embora a combinação tenha problemas de segurança, de acordo com este artigo antigo da Symantec . O artigo sugere a mudança para o NIS +, mas, como é antigo, este artigo da Wikipedia citou declarações que sugerem uma tendência do Sun para o NIS +. A substituição recomendada é outra coisa que ouvi falar ...
  • LDAP. Parece que o LDAP pode ser usado para salvar informações do usuário em um local centralizado em uma rede. O NFS ainda precisaria ser usado para atender ao requisito de 'pasta inicial móvel', mas vejo referências deles sendo usados ​​juntos. Como o artigo da Symantec apontou problemas de segurança no NIS e no NFS, existe algum software para substituir o NFS ou devo prestar atenção às sugestões desse artigo para bloqueá-lo? Estou tendendo ao LDAP porque outra peça fundamental da nossa arquitetura, o RabbitMQ, possui um plugin de autenticação / autorização para o LDAP. O RabbitMQ estará acessível de maneira restrita aos usuários do sistema, portanto, eu gostaria de unir os sistemas de segurança, se possível.
  • O Kerberos é outro protocolo de autenticação segura que ouvi falar. Eu aprendi um pouco sobre isso alguns anos atrás, em uma aula de criptografia, mas não me lembro muito disso. Vi sugestões online de que ele pode ser combinado com o LDAP de várias maneiras. Isso é necessário? Quais são os riscos de segurança do LDAP sem o Kerberos? Também me lembro do Kerberos sendo usado em outro software desenvolvido pela Carnegie Mellon University ...
  • 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 ... Posso efetuar login em qualquer máquina e minha "pasta AFS" está sempre disponível (pelo menos quando adquiro um token AFS).

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

Brian
fonte

Respostas:

7

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

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

Comece com isso , que fornece uma boa visão geral da diferença entre autenticação e autorização , o que é importante entender para esse 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 senha - ele informará se são válidas ou não. Isso é tudo o que faz.

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

O NIS realmente não realiza nenhuma autenticação para você sozinho. Em vez disso, expõe um hash de senha às máquinas clientes, e seu sistema local executa a etapa de autenticação real da mesma maneira 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 hashes de senha e, em seguida, montar um ataque de força bruta contra eles à vontade.

O LDAP é um pouco mais seguro, pois a etapa de autenticação é realmente executada no servidor. Você deve certificar-se de criptografar suas sessões LDAP com SSL ou TLS; caso contrário, a senha será exposta em texto não criptografado, onde é vulnerável à detecção de pacotes.

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

O LDAP, por outro lado, é geralmente muito mais extensível, aumenta de tamanho se você tiver um grande número de usuários (ou outros objetos de diretório), fornece consultas completas e geralmente é mais gerenciável. O LDAP também é suportado nativamente em uma variedade de aplicativos, enquanto o NIS possui um estranho relacionamento incestuoso com o sistema operacional principal que pode ser indesejável.

Se você estiver criando coisas do zero, sugiro o Kerberos para autenticação e o LDAP para o serviço de diretório.

Sistemas de arquivos

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

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

  • Tem um modelo de segurança ruim. Geralmente, as decisões de segurança do NFS são baseadas inteiramente no seu ID numérico do usuário. Se você possui root 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 do usuário apropriado. Isso não é rigorosamente verdade, porque o NFSv3 e o NFSv4 têm vários níveis de suporte para autenticação Kerberos, mas ainda não encontrei ninguém usando isso ... portanto, sua milhagem pode variar.

Para pequenas implantaçõ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, assim como o AFS e outros - mas a maioria deles exige algum trabalho de sua parte para executá-los em qualquer distribuição que você selecionou. Ouvi coisas boas sobre o GlusterFS recentemente, portanto, se eu estivesse procurando uma alternativa ao NFS, esse poderia ser o primeiro local a procurar.

larsks
fonte
Obrigado por esclarecer essas coisas. Na verdade, tenho uma boa base em autorização x autenticação; Não tenho certeza dos recursos de cada pedaço de software. A parte de armazenamento também é importante; você sabe como o modelo de segurança do Kerberos / LDAP se vincula ao NFS?
Brian
Atualizei a resposta com algumas informações sobre o NFS.
Larsks # 9/11
Nesse caso, não vejo razão para estar limitado a um único servidor NFS, embora um possa ser suficiente e mais possa ser adicionado posteriormente. help.ubuntu.com/community/AutofsLDAP
84104 10/10
Eu tentei passar por esse guia do AutofsLDAP e por outros. Está mal escrito ou desatualizado, pois meus resultados diferem e não posso prosseguir além de um certo ponto. :(
Brian
Você pode abrir uma nova pergunta com os detalhes apropriados.
Larsks
0

Esta é uma resposta parcial.

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

OpenLDAP (também conhecido como slapd no Ubuntu)
Certifique-se de configurar ACLs e SSF adequados (fatores de força de segurança).
É muito fácil enviar senhas de maneira clara, se você não tomar cuidado.
http://www.openldap.org/doc/

NFS
NFS não é um criptografado.
Pode ser envolto em ssl com alguns truques.
Sem o Kerberos, o ip_addr conta com autenticação.
Com o Kerberos, é possível que o SASL seja usado para criptografar tudo.

Kerberos
Requer que o OpenLDAP possua autenticação de passagem SASL para autenticação LDAP. (Não é difícil.)
Deve usar entradas DNS. (Não é necessário, mas muito útil).
GSSAPI pode ser usado em vez de ssh-keys. (Podem coexistir.) As
máquinas KDC devem ser separadas das máquinas clientes.

OpenAFS
criptografado com DES. (Não é considerado seguro.)
Requer kerberos ou seu próprio servidor de autenticação legado.
Possui suas próprias ACLs do sistema de arquivos.

84104
fonte