Características poco conocidas de Illumio ASP – Policy Compute Engine Certificate Checks
En este serial rápido, el equipo de gestión de productos de Illumio destacará las características menos conocidas (pero no menos poderosas) de Illumio ASP.
El protocolo de seguridad de la capa de transporte (TLS) es un protocolo criptográfico para proteger la comunicación a través de redes informáticas, empleando certificados de clave pública. El formato más común para los certificados de clave pública es X.509, descrito en RFC 5280. Los certificados X.509 son documentos criptográficos complejos con opciones para diversos usos, como autenticación, cifrado, confianza, etc. Siguiendo las mejores prácticas de la industria, la comunicación ASP de Illumio está protegida mediante TLS.
Para proteger la comunicación en Illumio ASP, ciertas opciones deben estar presentes en el certificado con criterios de implementación específicos, y los certificados deben instalar en Policy Compute Engine (PCE), el "cerebro" de Illumio ASP que centraliza la visibilidad y la administración de políticas. Si bien estos son criterios comunes para los certificados, pueden ser onerosos y requerir atención a los detalles por parte del usuario.
En esta publicación de blog, describiré los criterios de implementación para los certificados PCE de Illumio y una característica poco conocida para las verificaciones de certificados.
Protocolo TLS y certificados
TLS se emplea para proteger las siguientes sesiones de comunicación:
- Acceso de usuario a la consola sitio web PCE y a la API REST a través del protocolo HTTPS (HTTP sobre TLS).
- Comunicación entre el PCE y los VEN, con API REST sobre HTTPS y Event Service, un protocolo personalizado que emplea TLS sobre TCP.
- Comunicación entre servicios PCE en diferentes nodos PCE en un clúster de varios nodos, como la administración de clústeres y la detección de servicios.
Para TLS, se debe instalar un certificado de servidor X.509 en cada nodo PCE durante la instalación. Cuando cualquier cliente (por ejemplo, el VEN) abre una sesión TLS al PCE, el PCE presenta el certificado de servidor X.509 para cerciorar la comunicación con el cliente. Durante la instalación, el certificado de servidor se carga en la PCE como parte de un paquete de certificados, que contiene el certificado de servidor y un conjunto de certificados de CA (intermedios o raíz) para establecer la cadena de confianza de nuevo en una entidad de certificación raíz.
Los certificados X.509 generalmente son emitidos por una autoridad de certificación (CA) pública como Digicert, Verisign, GoDaddy y LetsEncrypt. Además, los clientes pueden usar certificados emitidos por sus propias CA privadas (CA interna) o usar certificados autofirmados. Independientemente de cómo se emita un certificado, el cliente debe poder validar la cadena de confianza en la entidad de certificación raíz para este certificado; de lo contrario, se produce un error en el protocolo de enlace TLS y no se puede establecer un canal de comunicación seguro.
Comprobación del certificado PCE
Durante la implementación inicial del PCE, el usuario generalmente tiene que validar los certificados para cerciorar de que se cumplan los requisitos variados y complicados. Illumio PCE se envía con una herramienta de verificación de certificados para ayudar a los usuarios a automatizar la verificación de certificados con respecto a los criterios de implementación específicos.
El paquete de certificados para el PCE de Illumio debe cumplir los siguientes criterios:
- Debe contener certificados codificados en PEM.
- Los certificados se firman mediante un algoritmo de firma aceptable.
- El paquete debe incluir todos los certificados de CA (intermedios o raíz) necesarios para establecer la cadena de confianza de regreso a la CA raíz. Si el certificado lo genera una entidad de certificación privada, el paquete debe incluir todos los certificados de la cadena de confianza hasta la entidad de certificación raíz y los certificados de entidad de certificación intermedia.
- La certificación del servidor debe ser el primer certificado del paquete.
- Todos los certificados del paquete deben ser válidos para la fecha actual.
- El certificado debe coincidir con el FQDN de PCE, en los campos Asunto y Nombre alternativo del firmante (SAN).
- El certificado debe admitir la autenticación de servidor y cliente.
Del mismo modo, la clave privada que coincida con el certificado X.509 debe instalar en cada nodo PCE con los siguientes criterios:
- La clave privada debe estar codificada en PEM.
- El archivo no debe codificar de otras maneras, p. ej. DER, PKCS7/P7B, PKCS8 o PKCS12/PFX.
- El archivo no debe estar protegido con contraseña.
Con el tiempo, Illumio descubrió que la implementación de PCE en las compañías enfrenta múltiples desafíos cuando se trata de la creación e implementación de certificados.
Por ejemplo, es posible que los certificados no se emitan para el FQDN de PCE; o los nombres de host de los múltiples nodos no se incluyen correctamente en el campo SANTO; o no se proporciona el conjunto correcto de opciones en el campo Uso extendido de claves de los certificados. Del mismo modo, durante el proceso de instalación, es posible que los certificados se instalen sin las licencias correctas para los archivos o directorios, o que se pierdan algunas partes de la cadena de confianza durante la instalación.
Los desafíos están reservados para el proceso de instalación inicial y pueden extender más allá. Si el PCE se escala de un clúster de 4 nodos a un clúster de 6 nodos, los certificados deberán actualizar para incluir el FQDN del nuevo nodo en el campo SANTO. Para reducir el esfuerzo manual con los certificados, Illumio proporciona una herramienta administrativa de línea de comandos llamada "illumio-pce-env" para verificar los certificados automáticamente.
Esta herramienta proporciona varias opciones para validar certificados para una variedad de casos de uso, algunos de los cuales son:
- Para validar el certificado TLS con pruebas básicas, incluida la cadena de confianza y otros aspectos, ejecute el siguiente comando:
- illumio-pce-env setup --list
- La opción de especificación "--list" comprueba la configuración y los certificados e indica posibles problemas estableciendo el código de retorno. Esta es una forma rápida de verificar si hay problemas y se puede invocar como parte de Chef, Ansible u otros scripts de instalación.
- Para validar el certificado TLS con pruebas básicas, incluida la cadena de confianza y otros aspectos, ejecute el siguiente comando:
- illumio-pce-env setup –list –test 5
- Si el comando anterior falla, es posible que un administrador quiera encontrar exactamente qué salió mal. Para ayudar con esto, es posible especificar un argumento de nivel de verbosidad (1 (menos) a 5 (más), con la opción --test. Con un nivel de detalle de 5, el comando muestra los resultados detallados con cada paso de su validación de certificados, incluida la información sobre las pruebas que se ejecutaron y los resultados de cada prueba. Esto ayuda a diagnosticar el problema exacto con los certificados o la cadena de confianza.
- Para validar los certificados con nombres de dominio alternativos, ejecute el siguiente comando:
- illumio-pce-env setup --list –test 5:some.alternative.hostAndDomainName
- En el caso de que el plan de FQDN que se va a usar para el PCE en producción sea diferente de la implementación de prueba o si un PCE se expande de un clúster de 4 nodos a un clúster de 6 nodos, será necesario comprobar si el certificado incluye los nombres de host correctos. El campo SANTO permite el uso de comodines, lo que hace que sea un poco complicado confirmar manualmente nombres de host válidos. Esta sintaxis comprueba el certificado y la cadena con el some.alternative.hostAndDomainName especificado.
- Para validar los certificados con una prueba de un extremo a otro mediante la sintaxis "+", ejecute el siguiente comando:
- illumio-pce-env setup --list --test 5+
- Aquí, el argumento para probar es "5+". A veces, las pruebas estáticas de un certificado pueden no ser suficientes, y un administrador puede querer validar el sistema con una prueba completa de un extremo a otro del certificado con las bibliotecas TLS del sistema operativo. Esto emula el uso real del certificado en tiempo de ejecución. La sintaxis '+' crea un servidor OpenSSL de bucle invertido que se ejecuta en el puerto 4433 e intenta usar el comando curl para establecer una conexión TLS.
- Para validar los certificados antes de copiarlos en la ubicación de producción planeada, ejecute el siguiente comando:
- illumio-pce-env setup --batch --list \email=required\@emailaddress node=value \cert=/path/to/cert \pkey=/path/to/private_key \trust=/path/to/certificate_chain \--test 5
- Si un administrador desea verificar el certificado sin instalarlo realmente, hay una sintaxis que lo permite. Esto se usaría si se implementa un nuevo certificado y el administrador desea verificar si cumple con los requisitos de PCE.
Consulte la documentación de Illumio PCE para obtener una lista completa de los mensajes mostrados por la herramienta illumio-pce-env, así como una lista completa de posibles mensajes de error.
En resumen, los certificados X.509 empleados para proteger la comunicación con TLS tienen requisitos variados y complicados y pueden ser una carga para que el administrador los valide. Illumio ASP proporciona una herramienta de línea de comandos con un amplio conjunto de opciones para validar certificados para diferentes necesidades, desde pruebas básicas hasta pruebas completas de extremo a extremo para realizar pruebas más exactas y precisas antes de la implementación.
Espero que esta publicación de blog ayudó a proporcionar información sobre esta característica poco conocida y útil del Illumio PCE. Si tiene más preguntas, contáctenos en [email protected] y no olvide consultar las otras publicaciones de este serial, que cubren: