Un inicio de sesión VPN que comprueba las credenciales contra un directorio implica dos conexiones de red separadas. La conexión del usuario con la puerta de enlace está protegida por el propio certificado de la VPN y por la configuración del protocolo. La conexión de la puerta de enlace con el directorio es otra sesión con sus propios ajustes TLS, su propio almacén de confianza y sus propios modos de fallo. Nada de lo primero garantiza nada de lo segundo.

Esa asimetría es el mecanismo detrás de un inicio de sesión que parece cifrado y aun así envía una contraseña de bind en claro.

Dos conexiones, dos decisiones de confianza

La sesión externa es lo que ve el usuario: un certificado vinculado al nombre de host de la VPN, validado por el cliente, que transporta el intercambio de autenticación. La sesión interna pertenece al cliente de directorio dentro de la puerta de enlace, que abre su propia conexión y o negocia TLS o no. Cada lado valida al par con el que habla, usando material de un archivo de configuración distinto. Un tramo interno mal configurado permanece invisible desde el lado del usuario, porque el tramo externo funciona exactamente como estaba previsto.

Por eso el fallo es silencioso y no ruidoso. Una puerta de enlace que nunca comprueba el certificado del directorio sigue autenticando a los usuarios correctamente; simplemente los autentica por un canal que no ha verificado.

StartTLS y LDAPS, elegidos a propósito

StartTLS se abre como LDAP simple y se actualiza en el sitio, convencionalmente en el puerto 389. LDAPS inicia TLS con la conexión, convencionalmente en el 636. Ambos son legítimos y el adaptador tiene que coincidir con lo que ofrece el directorio. Exigir StartTLS es distinto de probarlo y continuar cuando la actualización falla, y esa diferencia es exactamente donde puede escaparse una contraseña de bind. Configure el modo estricto y no permita una alternativa no protegida para un bind con contraseña.

ldapsearch -H ldap://dc1.corp.example -ZZ -x -D "CN=VPN Bind,OU=Service Accounts,DC=corp,DC=example" -W -b "DC=corp,DC=example" "(sAMAccountName=example-user)" dn

El parámetro -ZZ es todo el punto: la consulta falla en lugar de continuar en silencio sin la actualización. Los nombres y cuentas de esa línea son ejemplos. La documentación TLS de OpenLDAP cubre los ajustes de confianza que hay detrás.

¿Qué almacén de confianza lee el cliente LDAP?

La biblioteca de cliente OpenLDAP lee su propia configuración de confianza, ya provenga del archivo del sistema o de un ajuste específico del complemento. La directiva CA de la VPN se aplica a los pares de la VPN y no es prueba de que la biblioteca LDAP lea el mismo archivo. Use el nombre de host del directorio que el certificado cubre realmente, más la cadena emisora en la que confía la biblioteca. En Active Directory, implemente un certificado de servicio de directorio con el uso correcto de autenticación de servidor en lugar de razonar a partir de un nombre para mostrar.

Cada destino de failover tiene que satisfacer la misma política de identidad. Un entorno donde el primario está validado y el secundario no lo está es peor que uno sin failover, porque el camino más débil solo se descubre durante una interrupción.

La cuenta de bind sigue siendo un problema aparte

Proteger el transporte no reduce lo que puede hacer la cuenta de bind. El alcance de búsqueda en el directorio, la autorización por grupos y los privilegios de la cuenta de servicio son decisiones separadas, y una cuenta de bind amplia sigue siendo amplia después de habilitar TLS. Use la cuenta de servicio y la base de búsqueda más estrechas que necesite la integración, y registre el punto final, el modo TLS, el propietario de la confianza y el proceso de renovación junto con la configuración de la VPN.

Cuando aparezca una discrepancia de certificado, implemente el certificado o la cadena correctos. Desactivar la verificación convierte una discrepancia visible en invisible y deja la segunda relación de confianza sin probar.

Dos conexiones, dos propietarios, dos fechas de renovación. Mantenerlas separadas en la documentación es lo que mantiene honesto el inicio de sesión.

Artículos relacionados