Autenticación centralizada en redes locales como medio seguro
Introducción:
Una de las recomendaciones en el área de la seguridad de la información es utilizar contraseñas diferentes para cada uno de los servicios dentro de las organizaciones. Esta práctica se considera esencial para mitigar riesgos a posibles ciberataques.
Generar y recordar las múltiples contraseñas puede resultar desafiante para los administradores y más para los usuarios que usan los servicios, por ello siempre se recomienda un buen gestor de contraseñas que resguarda las contraseñas de forma cifrada y se recupera mediante una contraseña maestra.
A pesar de que esto sería una buena práctica como individuo, en el ámbito organizacional puede traer diferentes problemas y con ellos riesgos dentro de la organización. Por esta razón, dentro las organizaciones, se tiene una solución que es la autenticación centralizada, la cual tiene como objetivo simplificar la administración de usuarios, establecer políticas de seguridad y permiten implementar medidas de seguridad adicionales.
Lo ideal es seguir ambas recomendaciones para mitigar el mayor numero de riesgo, tanto como a nivel organizacional y personal. Al combinar estas prácticas, las organizaciones pueden mejorar su seguridad significativamente, ya que pueden proteger los activos de riesgos y ataques.
¿Qué es la autenticación centralizada?
Es un sistema de comunicación entre aplicaciones que permite construir una infraestructura unificada segura bajo una variedad de jerarquías para el inicio de sesión en sistemas y aplicativos webs con un único usuario y contraseña.
Para lograr esto, es necesario que la autenticación centralizada se integre con diversos tipos de bases de datos externas como lo son SQL, Radius o servidor de directorio LDAP; ya que estos brindan flexibilidad y compatibilidad con distintos entornos. Esto significa que la autenticación centralizada puede adaptarse a las bases de datos existentes en una organización, evitando la necesidad de duplicar información o implementar sistemas adicionales.
No podemos hablar de un servicio seguro sin hablar de criptografía, ya que esto siempre nos ayuda a proteger la integridad y la confidencialidad de los datos. Se puede decir que el cifrado desempeña un papel importante en la comunicación de servicios, ya que convierte la información legible en un formato no legible.
En el área de la ciberseguridad se usa algoritmos de cifrados complejos y robustos. Estos algoritmos están diseñados para dificultar la decodificación de la información protegida sin la clave correcta. Por ello se emplean algoritmos de cifrado avanzados, como el Estándar de Cifrado Avanzado (AES), ampliamente reconocido por su alta seguridad y eficiencia.
Y como este servicio es un sistema de comunicación entre aplicaciones se usa un certificado digital bajo el estándar X509 que permite la autenticación de clientes. (Un certificado digital es un archivo que contiene una clave pública y está certificado por una Autoridad Certificadora (AC), como DigiCert, para garantizar su autenticidad.)
Es decir, estos certificados digitales se codifican siguiendo el estándar IETF establecido en la RFC 5280. Esta especificación define el formato y las reglas para la estructura de los certificados digitales. Además, se asigna un número de 64 bits para identificar de manera única cada uno de estos certificados.
Desarrollo
Existen soluciones que ayudan a crear una autenticación centralizada, inicio de sesión único (SSO) esta centralización para mejorar la seguridad y la eficiencia en el manejo de accesos y autenticación.
El Servicio de Autenticación Centralizada (CAS) ofrece la capacidad de autenticación mediante bases de datos externas, permite a las aplicaciones web obtener los resultados de autenticación y los atributos de los usuarios.
Estas características hacen que Servicio de Autenticación Centralizada sea una solución flexible y fácil de implementar para la autenticación en entornos web. Su mecanismo de autenticación se basa en ajustar un cliente en las aplicaciones web. El cliente usa el mecanismo de autenticación por:
- "Cookie de concesión de tickets" (TGC): Se emite después de que un usuario se autentica correctamente y contiene información de identificación y tiempo de expiración. La TGC se almacena en el cliente y permite acceder a recursos protegidos sin tener que volver a proporcionar credenciales.
- "Service Ticket" (ST): Es un token utilizado en sistemas de inicio de sesión único que permite a los usuarios acceder a servicios o recursos sin tener que autenticarse nuevamente. Después de autenticarse con un TGT, el ST emite y contiene información de identificación y marca de tiempo. El usuario presenta el ST al proveedor del servicio para obtener acceso. El proveedor verifica la autenticidad y validez del ST. Si es válido, el usuario puede acceder al recurso sin necesidad de autenticación adicional.
Para entender mejor el mecanismo utilizado por Servicio de Autenticación Centralizada sigamos los siguientes pasos:
Paso 1: Redirección al servidor Servicio de Autenticación Centralizada
- Cuando un usuario accede a una aplicación web sin ningún Service Ticket (ST)
- El módulo de cliente Servicio de Autenticación Centralizada de esa aplicación emite una redirección HTTP al servidor Servicio de Autenticación Centralizada.
- Esta redirección permite que el servidor Servicio de Autenticación Centralizada intente autenticar el navegador si no tiene un Ticket-Granting Cookie (TGC) válido.
Paso 2: Autenticación y emisión del TGC
- Si el servidor Servicio de Autenticación Centralizada autentica con éxito al navegador
- Utilizando bases de datos externas de usuarios
- Se obtiene el ID del usuario de esas bases de datos.
- El servidor Servicio de Autenticación Centralizada emite un TGC, que es un identificador único para el navegador, y lo envía de vuelta al navegador. Además, el servidor Servicio de Autenticación Centralizada realiza una redirección a la aplicación web utilizando un parámetro en la URL de redirección. Durante esta redirección, se incluye un Service Ticket (ST) en la URL.
Paso 3: Verificación del ST por parte de la aplicación web
- La aplicación web que recibe el acceso del usuario incluye el ST como un parámetro en la URL.
- La aplicación web puede verificar la validez del ST enviándolo al servidor Servicio de Autenticación Centralizada para su validación.
- Si el ST es válido, la aplicación web continúa su procesamiento normal y otorga el acceso correspondiente al usuario.
CAS que se puede decir que su enfoque es más limitado ya que su alcance se centra en la gestión de acceso a recursos específicos dentro de una red o sistema particular.
Por otro lado, el tenemos la Gestión de Identidades y Acceso (IAM) que abarca un conjunto más amplio de funcionalidades, como lo es la gestión de identidades, la administración de roles y privilegios, la federación de identidad, la autenticación multifactor y la administración de contraseñas, incluyendo la autenticación centralizada y el inicio de sesión de único.
Esto es decir que IAM es responsable de mantener el ciclo de identidad del usuario y sobre qué derechos de acceso y a qué recursos tiene.
El IAM se ha convertido en uno de los pilares fundamental ciberseguridad y crítica de cómputo en la nube, pero esto no significa que su aplicación no funciona para gestionar el acceso a recursos locales y sistemas internos. Si bien es importante destacar que el IAM no es el único componente de la ciberseguridad y el cómputo en la nube, su implementación adecuada y efectiva es considerada una buena práctica.
Para facilitar la autenticación y la autorización de forma centralizada se usa el protocolo Security Assertion Markup Language (SAML) que está basado en xml. SAML V2.0 permite el inicio de sesión único (SSO)
El cual IAM utiliza principalmente para la federación de identidades y la autenticación en entornos empresariales donde hay un proveedor de identidad centralizado que emite declaraciones de confianza sobre la identidad de los usuarios a diferentes proveedores de servicios.
Para comprender mejor el funcionamiento de SAML, imaginemos que SAML actúa como el proveedor de identidad (IdP) de una aplicación web en la que intentamos iniciar sesión:
- Cuando un usuario intenta acceder a una aplicación proporcionada por una URL
- El proveedor del servicio (SP) se pone en contacto con el proveedor de identidad (IdP).
- El proveedor del servicio (SP) emite una redirección HTTP
- El software de identidad federada (FIS) en el proveedor de identidad (IdP) solicitan la autenticación
- Valida la identidad del usuario.
- Construye un mensaje formateado que contiene la información sobre el usuario y lo pasa al software de identidad federada que se ejecuta en el SP, lo que determina que el mensaje ha llegado para un IdP conocido.
- A continuación, crea la sesión especial para el usuario de destino y permite al usuario obtener acceso directo a la aplicación.
Todo el proceso es transparente para el usuario. El IdP está conectado a servicios de directorio como Active Directory o LDAP
Sin embargo, es importante destacar que protocolos como OAuth y OpenID son utilizados por IAM pueden ser utilizados en entornos centralizados, pero su enfoque principal es permitir la autorización y autenticación en entornos más distribuidos, donde los usuarios pueden autorizar a aplicaciones de terceros o utilizar una identidad única en múltiples servicios en línea.
El servicio de IAM es ofrecido por compañías importantes en el campo de la tecnología como lo es IBM, Microsoft, Oracle y Salesforce y es ampliamente utilizado por instituciones gubernamentales y organizaciones de todo el mundo.
Aunque normalmente se asocia con servicios en la nube, también se puede utilizar en entornos de red local para gestionar la identidad y los accesos de los usuarios.
Herramientas Open Source como keycloak y OpenLDAP para una autenticación centralizada moderna
Keycloak es una solución de IAM de código abierto que proporciona capacidades de autenticación, autorización y gestión de identidad para aplicaciones y servicios, se puedes definir y gestionar usuarios, grupos, roles y políticas de acceso. Mediante una interfaz de administración web se puede configurar y administrar la identidad y los accesos de los usuarios. También es compatible con una variedad de protocolos de autenticación, incluyendo SAML, OAuth y OpenID Connect.
OpenLDAP es un sistema de servicios de directorio de código abierto utilizado para almacenar y gestionar información de identidad, como usuarios y grupos. Proporciona una base sólida para la autenticación y la gestión de identidades. Permite poder implementar un sistema de doble autenticación.
Al utilizar Keycloak con OpenLDAP te permite hacer una solución de IAM de código abierto robusta para gestionar la identidad y los accesos en tus aplicaciones y servicios. Esto proporciona una solución flexible y escalable para el control de acceso y la seguridad en una organización. Además de poder implementar
Conclusión
La autenticación centralizada es un mecanismo de vital para el área de seguridad de la información ya que proporciona la protección de la información y de los sistemas informáticos. Esto nos ayuda a proporcionar mecanismos para verificar la identidad de los usuarios, así como garantizar una confianza de que solo las personas autorizadas tengan acceso a los sistemas y datos.
Es importante conocer las herramientas que se pueden emplear dentro de las organizaciones, y dependiendo del contexto se pueden ajustar a diferentes organizaciones. Como por ejemplo Servicio de Autenticación Centralizada se puede ajustar a organizaciones que ya cuenten con aplicativos que ayuden a la gestión de identidades, la administración de roles y privilegios, la federación de identidad, de los usuarios como Active Directory y deseen centralizar el medio de autenticación.
Sin embargo, siempre se deben realizar pruebas de viabilidad y de riesgo por cada cambio en la infraestructura, todo lo que se hace con planeación y preparación minimizaran los riesgos.
Referencias
Eubanks, R. (s/f). Password Managers. Recuperado el 30 de mayo de 2023, de Sans.org website: https://www.sans.org/newsletters/ouch/password-managers/
Naito, H., Kajita, S., Hirano, Y., & Mase, K. (2007). Multiple-tiered security hierarchy for web applications using central authentication and authorization service. 2007 International Symposium on Applications and the Internet Workshops, 27–27. IEEE.
Domino. (s/f). Recuperado el 1 de junio de 2023, de Dominodatalab.com website: https://admin.dominodatalab.com/en/4.2/admin_guide/b5dd5a/keycloak-authentication-service/
Qadeer, M. A., Salim, M., & Akhtar, M. S. (2009). Profile Management and Authentication Using LDAP. 2009 International Conference on Computer Engineering and Technology, 2, 247–251. IEEE.
Server administration guide. (s/f). Recuperado el 1 de junio de 2023, de Keycloak.org website: https://www.keycloak.org/docs/latest/server_admin/
Sharma, A., Sharma, S., & Dave, M. (2015). Identity and access management- a comprehensive study. 2015 International Conference on Green Computing and Internet of Things (ICGCIoT), 1481–1485. IEEE.
Tablado, F. (2021, julio 6). Certificado X.509. ¿Qué es y para qué se usa? Recuperado el 30 de mayo de 2023, de Grupo Atico34 website: https://protecciondatos-lopd.com/empresas/certificado-x509/
La Coordinación de Seguridad de la Información/UNAM-CERT agradece el apoyo en la elaboración o traducción y revisión de este Documento a:
M. C. Carlos R. Tlahuel Perez (carlos dot tlahuel at cert dot unam dot mx)
Emmanuel Julián José (emmanuel dot julian at cert dot unam dot mx)