Autenticación de red + directorio de inicio de roaming: ¿qué tecnología debería considerar usar?

9

Estoy buscando un software que proporcione al usuario una identidad única en varias computadoras. Es decir, un usuario debe tener los mismos permisos en cada computadora, y el usuario debe tener acceso a todos sus archivos (directorio de inicio móvil) en cada computadora. Parece que hay muchas soluciones para esta idea general, pero estoy tratando de determinar la mejor para mí. Aquí hay algunos detalles junto con los requisitos:

  1. La red de máquinas son instancias de Amazon EC2 que ejecutan Ubuntu.
    • Accedemos a las máquinas con SSH.
    • Algunas máquinas en esta LAN pueden tener diferentes usos, pero solo estoy discutiendo las máquinas para un uso determinado (ejecutar una plataforma de arrendamiento múltiple).
  2. El sistema no tendrá necesariamente una cantidad constante de máquinas.
    • Es posible que tengamos que modificar permanente o temporalmente la cantidad de máquinas en funcionamiento. Esta es la razón por la que estoy buscando autenticación / almacenamiento centralizado.
  3. La implementación de este efecto debe ser segura.
    • No estamos seguros de si los usuarios tendrán acceso directo a la shell, pero su software potencialmente se estará ejecutando (bajo nombres de usuario de Linux restringidos, por supuesto) en nuestros sistemas, lo que es tan bueno como el acceso directo a la shell.
    • Asumamos que su software podría ser potencialmente malicioso en aras de la seguridad.

He oído hablar de varias tecnologías / combinaciones para lograr mi objetivo, pero no estoy seguro de las ramificaciones de cada una.

  • Una publicación anterior de ServerFault recomendaba NFS y NIS, aunque la combinación tiene problemas de seguridad según este artículo anterior de Symantec . El artículo sugiere pasar a NIS +, pero, como es antiguo, este artículo de Wikipedia ha citado declaraciones que sugieren una tendencia a alejarse de NIS + por Sun. El reemplazo recomendado es otra cosa de la que he oído hablar ...
  • LDAP Parece que LDAP se puede usar para guardar la información del usuario en una ubicación centralizada en una red. NFS aún tendría que usarse para cubrir el requisito de 'carpeta de inicio de itinerancia', pero veo referencias de que se usan juntos. Dado que el artículo de Symantec señalaba problemas de seguridad tanto en NIS como en NFS, ¿hay algún software que reemplace a NFS, o debería tener en cuenta las sugerencias de ese artículo para bloquearlo? Me inclino por LDAP porque otra pieza fundamental de nuestra arquitectura, RabbitMQ, tiene un complemento de autenticación / autorización para LDAP. RabbitMQ será accesible de manera restringida para los usuarios del sistema, por lo que me gustaría vincular los sistemas de seguridad si es posible.
  • Kerberos es otro protocolo de autenticación seguro del que he oído hablar. Aprendí un poco sobre eso hace algunos años en una clase de criptografía, pero no recuerdo mucho al respecto. He visto sugerencias en línea de que se puede combinar con LDAP de varias maneras. ¿Es esto necesario? ¿Cuáles son los riesgos de seguridad de LDAP sin Kerberos? También recuerdo que Kerberos se estaba utilizando en otro software desarrollado por la Universidad Carnegie Mellon ...
  • Andrew File System, o AFS. OpenAFS está disponible para su uso, aunque su configuración parece un poco complicada. En mi universidad, AFS proporciona ambos requisitos ... Puedo iniciar sesión en cualquier máquina y mi "carpeta AFS" siempre está disponible (al menos cuando adquiero un token AFS).

Junto con las sugerencias sobre el camino que debo seguir, ¿alguien tiene alguna guía que sea particularmente útil? Como señaló el texto en negrita, LDAP parece ser la mejor opción, pero estoy particularmente interesado en los detalles de implementación (Keberos? NFS?) Con respecto a la seguridad.

Brian
fuente

Respuestas:

7

Autenticación, autorización e información de directorio

Esta no es una respuesta completa a su pregunta, pero pensé que podría ayudar a responder sus preguntas sobre NIS vs. LDAP vs. Kerberos.

Comience con esto , que proporciona una buena visión general de la diferencia entre autenticación y autorización , que es importante comprender para este tipo de discusión.

Kerberos es, como usted dice, solo un protocolo de autenticación. Dado un conjunto de credenciales, por ejemplo, un nombre de usuario y contraseña, le dirá si son válidos o no. Esto es todo lo que hace.

En contraste, tanto NIS como LDAP son servicios de directorio. Permiten que un cliente los consulte para obtener información sobre los usuarios (¿cuál es su directorio personal? ¿Cuál es su ID de usuario?). Ambos se pueden utilizar como fuentes de autenticación con diferentes grados de problemas.

NIS realmente no realiza ninguna autenticación por sí mismo. Más bien, expone un hash de contraseña a las máquinas cliente, y su sistema local realiza el paso de autenticación real de la misma manera que lo haría para las cuentas locales. El problema aquí es que cualquier persona que tenga una cuenta en uno de sus clientes NIS puede obtener todos los valores hash de su contraseña y luego montar un ataque de fuerza bruta sobre ellos cuando lo desee.

LDAP es algo más seguro, ya que el paso de autenticación se realiza realmente en el servidor. Debe asegurarse de que está encriptando sus sesiones LDAP con SSL o TLS, de lo contrario, la contraseña está expuesta en texto claro en el cable, donde es vulnerable a la detección de paquetes.

Es muy común usar Kerberos para la autenticación y luego NIS o LDAP para la autorización (generalmente esto significa "pertenencia a un grupo") e información del directorio. Yo diría que NIS, una vez que haya eliminado los hashes de contraseña (moviendo su autenticación a Kerberos) no es realmente menos seguro que LDAP, y tiene la ventaja de estar disponible "fuera de la caja" en cualquier distribución moderna de Linux.

LDAP, por otro lado, generalmente es mucho más extensible, se escala mejor si tiene una gran cantidad de usuarios (u otros objetos de directorio), proporciona consultas enriquecidas y generalmente es más manejable. LDAP también es compatible de forma nativa en una variedad de aplicaciones, mientras que NIS tiene una relación incestuosa con el sistema operativo central que puede ser indeseable.

Si está creando cosas desde cero, sugeriría Kerberos para la autenticación y LDAP para su servicio de directorio.

Sistemas de archivos

NFS tiene una gran ventaja: ya lo tiene, está ampliamente implementado y, en general, es estable. Hay dos desventajas principales para NFS:

  • No escala bien para E / S paralelas. Si tiene una gran cantidad de máquinas que acceden al mismo sistema de archivos, su único servidor NFS puede tener dificultades para mantenerse al día. Esta es la razón por la cual los clústeres más grandes generalmente usan un sistema de archivos de clúster (como Luster, GlusterFS, GPFS, GFS, etc.) que ha sido diseñado para admitir E / S paralelas.

  • Tiene un mal modelo de seguridad. En general, las decisiones de seguridad de NFS se basan completamente en su ID de usuario numérico. Si tiene root en un sistema que puede montar un sistema de archivos NFS, tiene acceso a todos los archivos, porque siempre puede crear un usuario local con la ID de usuario adecuada. Esto no es estrictamente cierto, porque NFSv3 y NFSv4 tienen varios niveles de soporte para la autenticación Kerberos, pero aún no he conocido a nadie que use esto ... por lo que su kilometraje puede variar.

Para implementaciones pequeñas, la mayoría de las personas solo usan NFS a pesar de sus limitaciones.

Hay una variedad de otras soluciones, los sistemas de archivos de clúster que mencioné anteriormente, así como AFS y otros, pero la mayoría de estos requerirán un poco de trabajo de su parte para que se ejecuten en cualquier distribución que haya seleccionado. He escuchado cosas buenas sobre GlusterFS recientemente, así que si estuviera buscando una alternativa NFS, ese sería el primer lugar en el que buscaría.

larsks
fuente
Gracias por aclarar esas cosas. De hecho, tengo una buena base en la autorización frente a la autenticación; No estoy seguro de las capacidades de cada pieza de software. La porción de almacenamiento también es importante; ¿Sabes cómo se vincula el modelo de seguridad de Kerberos / LDAP con NFS?
Brian
He actualizado la respuesta con información sobre NFS.
Larsks
En este caso, no veo ninguna razón para limitarse a un solo servidor NFS, aunque uno puede ser suficiente, y se pueden agregar más más adelante. help.ubuntu.com/community/AutofsLDAP
84104
He intentado leer la guía AutofsLDAP y otras. Está mal escrito o desactualizado, ya que mis resultados difieren, y no puedo proceder más allá de cierto punto. :(
Brian
Es posible que desee abrir una nueva pregunta con los detalles apropiados.
larsks
0

Esta es una respuesta parcial.

NIS / NIS +
No utilice NIS. Utilice LDAP con nis esquema.

OpenLDAP (también conocido como slapd en Ubuntu)
Asegúrese de configurar las ACL y SSF (factores de seguridad) adecuados.
Es muy fácil enviar contraseñas de forma clara si no tiene cuidado.
http://www.openldap.org/doc/

NFS
NFS no está encriptado.
Se puede envolver en ssl con algunos trucos.
Sin Kerberos se basa en ip_addr para la autenticación.
Con Kerberos es posible que SASL se use para cifrar todo.

Kerberos
requiere que OpenLDAP tenga autenticación de transferencia SASL para la autenticación LDAP. (No es difícil).
Debe usar entradas DNS. (No requerido, pero muy útil).
GSSAPI se puede usar en lugar de ssh-keys. (Puede coexistir). Las
máquinas KDC deben estar separadas de sus máquinas cliente.

OpenAFS
cifrado con DES. (No se considera seguro).
Requiere kerberos o su propio servidor de autenticación heredado.
Tiene sus propias ACL del sistema de archivos.

84104
fuente