Protección de Ingress
Este tema cubre las diversas formas de proteger su Ingress utilizando NetScaler y las anotaciones proporcionadas por NetScaler Ingress Controller.
La siguiente tabla enumera los casos de uso de TLS con anotaciones de ejemplo que puede utilizar para proteger su Ingress utilizando Ingress NetScaler y NetScaler Ingress Controller:
| Casos de uso | Anotaciones de ejemplo |
|---|---|
| Habilitar el protocolo TLSv1.3 | ingress.citrix.com/frontend-sslprofile: '{"tls13":"enabled", "tls13sessionticketsperauthcontext":"1", "dhekeyexchangewithpsk":"yes"}' |
| Seguridad de transporte estricta HTTP (HSTS) | ingress.citrix.com/frontend-sslprofile: '{"hsts":"enabled", "maxage" : "157680000", "includesubdomain":"yes"} |
| OCSP stapling | ingress.citrix.com/frontend-sslprofile: '{"ocspstapling":"enabled"}' |
| Establecer la autenticación de cliente como obligatoria | ingress.citrix.com/frontend-sslprofile: '{"clientauth":"enabled", "clientcert" : "mandatory"}' |
| Extensión de ticket de sesión TLS | ingress.citrix.com/frontend-sslprofile: '{"sessionticket" : "enabled", "sessionticketlifetime : "300"}' |
| Reutilización de sesión SSL | ingress.citrix.com/frontend-sslprofile: '{"sessreuse" : "enabled", "sesstimeout : "120"}' |
| Grupos de cifrado | ingress.citrix.com/frontend-sslprofile:'{"snienable": "enabled", "ciphers" : [{"ciphername": "secure", "cipherpriority" :"1"}, {"ciphername": "secure", "cipherpriority" :"21"}]}' |
| Redirección de cifrado | ingress.citrix.com/frontend-sslprofile:'{"snienable": "enabled", "ciphers" : [{"ciphername": "secure", "cipherpriority" :"1"}], "cipherredirect":"enabled", "cipherurl": "https://redirecturl"}' |
Habilitar el protocolo TLS v1.3
Mediante las anotaciones para perfiles SSL, puede habilitar la compatibilidad con el protocolo TLS 1.3 en el perfil SSL y establecer los parámetros
tls13SessionTicketsPerAuthContext y dheKeyExchangeWithPsk en el perfil SSL para el Ingress NetScaler.
El parámetro
tls13SessionTicketsPerAuthContext le permite establecer el número de tickets que emite el Ingress NetScaler cada vez que se negocia TLS 1.3, se habilita la reanudación basada en tickets y se completa un protocolo de enlace o la autenticación del cliente posterior al protocolo de enlace. El valor se puede aumentar para permitir que los clientes abran varias conexiones paralelas utilizando un ticket nuevo para cada conexión. El valor mínimo que puede establecer es 1 y el máximo es 10. De forma predeterminada, el valor se establece en 1.
Nota:
No se envían tickets si la reanudación está deshabilitada.
El parámetro
dheKeyExchangeWithPsk le permite especificar si el intercambio de claves Ingress NetScaler requires a DHE debe ocurrir cuando se acepta una clave precompartida durante un protocolo de enlace de reanudación de sesión TLS 1.3. Un intercambio de claves DHE garantiza la confidencialidad directa, incluso si las claves de ticket se ven comprometidas, a expensas de los recursos adicionales necesarios para llevar a cabo el intercambio de claves DHE.
A continuación, se muestra una anotación de ejemplo para el perfil HTTP para habilitar la compatibilidad con el protocolo TLS 1.3 en el perfil SSL y establecer los parámetros
tls13SessionTicketsPerAuthContext y dheKeyExchangeWithPsk en el perfil SSL.
ingress.citrix.com/frontend-sslprofile: '{"tls13":"enabled", "tls13sessionticketsperauthcontext":"1", "dhekeyexchangewithpsk":"yes"}'
Seguridad de transporte estricta HTTP (HSTS)
Los dispositivos Ingress NetScaler admiten la seguridad de transporte estricta HTTP (HSTS) como una opción integrada en los perfiles SSL. Mediante HSTS, un servidor puede forzar el uso de una conexión HTTPS para toda la comunicación con un cliente. Es decir, solo se puede acceder al sitio mediante HTTPS. La compatibilidad con HSTS es necesaria para la certificación A+ de SSL Labs. Para obtener más información, consulte Compatibilidad de NetScaler con HSTS.
Mediante las anotaciones para perfiles SSL, puede habilitar HSTS en un perfil SSL de front-end en Ingress NetScaler. La siguiente es una anotación de entrada de ejemplo:
ingress.citrix.com/frontend-sslprofile: '{"hsts":"enabled", "maxage" : "157680000", "includesubdomain":"yes"}'
Donde:
-
HSTS- El estado de HTTP Strict Transport Security (HSTS) en el perfil SSL. Mediante HSTS, un servidor puede forzar el uso de una conexión HTTPS para toda la comunicación con un cliente. Los valores admitidos son ENABLED y DISABLED. De forma predeterminada, el valor se establece en DISABLED. -
maxage- Permite establecer el tiempo máximo, en segundos, en el encabezado de seguridad de transporte estricto (STS) durante el cual el cliente debe enviar solo solicitudes HTTPS al servidor. El tiempo mínimo que puede establecer es 0 y el máximo es 4294967294. De forma predeterminada, el valor es 0. -
IncludeSubdomains- Permite habilitar HSTS para subdominios. Si se establece enYes, un cliente debe enviar solo solicitudes HTTPS para los subdominios. De forma predeterminada, el valor se establece en No.
Grapado OCSP
El Ingress NetScaler puede enviar el estado de revocación de un certificado de servidor a un cliente, en el momento del protocolo de enlace SSL, después de validar el estado del certificado desde un respondedor OCSP. El estado de revocación de un certificado de servidor se «grapa» a la respuesta que el dispositivo envía al cliente como parte del protocolo de enlace SSL. Para obtener más información sobre la implementación de CRL y los informes OCSP de NetScaler, consulte OCSP stapling.
Para usar la función de OCSP stapling, puede habilitarla mediante un perfil SSL con la siguiente anotación de entrada:
ingress.citrix.com/frontend-sslprofile: '{"ocspstapling":"enabled"}'
Nota:
Para usar OCSP stapling, debe agregar un respondedor OCSP en el dispositivo NetScaler.
Establecer la autenticación de cliente como obligatoria
Mediante las anotaciones para perfiles SSL, puede habilitar la autenticación de cliente; el dispositivo Ingress NetScaler solicita el certificado de cliente durante el protocolo de enlace SSL.
El dispositivo comprueba el certificado presentado por el cliente en busca de restricciones normales, como la firma del emisor y la fecha de caducidad.
Estos son algunos casos de uso:
-
Requerir un certificado de cliente válido antes de que se muestre el contenido del sitio web. Esto restringe el contenido del sitio web solo a máquinas y usuarios autorizados.
-
Solicite un certificado de cliente válido. Si no se proporciona un certificado de cliente válido, solicite al usuario la autenticación multifactor.
La autenticación de cliente se puede configurar como obligatoria u opcional.
-
Cuando se configura como obligatoria, si el cliente SSL no transmite un certificado de cliente válido, la conexión se interrumpe. Válido significa: firmado/emitido por una autoridad de certificación específica, y no caducado ni revocado.
-
Cuando es opcional, NetScaler solicita el certificado de cliente, pero procede con la transacción SSL incluso si el cliente presenta un certificado no válido o ningún certificado. Esta configuración es útil para escenarios de autenticación (por ejemplo, requerir autenticación de dos factores si no se proporciona un certificado de cliente válido).
Mediante las anotaciones para perfiles SSL, puede habilitar la autenticación de cliente en un servidor virtual SSL y establecer la autenticación de cliente como
Mandatory.
A continuación, se muestra una anotación de ejemplo del perfil SSL:
ingress.citrix.com/frontend-sslprofile: '{"clientauth":"enabled", "clientcert" : "mandatory"}'
Nota:
Asegúrese de vincular el certificado de cliente al servidor virtual SSL en el Ingress NetScaler.
Extensión de ticket de sesión TLS
Un protocolo de enlace SSL es una operación que consume mucha CPU. Si la reutilización de sesiones está habilitada, la operación de intercambio de claves del servidor o del cliente se omite para los clientes existentes. Se les permite reanudar sus sesiones. Esto mejora el tiempo de respuesta y aumenta el número de transacciones SSL por segundo que un servidor puede admitir. Sin embargo, el servidor debe almacenar los detalles de cada estado de sesión, lo que consume memoria y es difícil de compartir entre varios servidores si las solicitudes se equilibran entre ellos.
Los dispositivos Ingress NetScaler admiten la extensión TLS SessionTicket. El uso de esta extensión indica que los detalles de la sesión se almacenan en el cliente en lugar de en el servidor. El cliente debe indicar que admite este mecanismo incluyendo la extensión TLS del ticket de sesión en el mensaje Hello del cliente. Para los clientes nuevos, esta extensión está vacía. El servidor envía un nuevo ticket de sesión en el mensaje de protocolo de enlace NewSessionTicket. El ticket de sesión se cifra utilizando un par de claves conocido solo por el servidor. Si un servidor no puede emitir un nuevo ticket actualmente, completa un protocolo de enlace regular.
Mediante las anotaciones para perfiles SSL, puede habilitar el uso de tickets de sesión, según la RFC 5077. Además, puede establecer la vida útil de los tickets de sesión emitidos por el Ingress NetScaler, utilizando el parámetro
sessionticketlifetime.
A continuación, se muestra la anotación de entrada de ejemplo:
ingress.citrix.com/frontend-sslprofile: '{"sessionticket" : "enabled", "sessionticketlifetime : "300"}'
Reutilización de sesión SSL
Puede reutilizar una sesión SSL existente en un dispositivo NetScaler. Mientras que el proceso de renegociación SSL consiste en un protocolo de enlace SSL completo, la reutilización SSL consiste en un protocolo de enlace parcial porque el cliente envía el ID SSL con la solicitud.
Mediante las anotaciones para perfiles SSL, puede habilitar la reutilización de sesiones y también establecer el valor de tiempo de espera de la sesión (en segundos) en el Ingress NetScaler.
La siguiente es la anotación de entrada de ejemplo:
ingress.citrix.com/frontend-sslprofile: '{"sessreuse" : "enabled", "sesstimeout : "120"}'
De forma predeterminada, la opción de reutilización de sesión está habilitada en el dispositivo y el valor de tiempo de espera para la misma se establece en 120 segundos. Por lo tanto, si un cliente envía una solicitud en otra conexión TCP y el ID de sesión SSL anterior dentro de 120 segundos, el dispositivo realiza un handshake parcial.
Uso de grupos de cifrado
El Ingress NetScaler se envía con grupos de cifrado integrados. Para usar cifrados que no forman parte del grupo de cifrado PREDETERMINADO, debe vincularlos explícitamente a un perfil SSL. También puede crear un grupo de cifrado definido por el usuario para vincularlo al servidor virtual SSL en el Ingress NetScaler.
Los grupos de cifrado integrados se pueden usar en NetScaler de Nivel 1 y Nivel 2, y el grupo de cifrado definido por el usuario solo se puede usar en NetScaler de Nivel 1.
Para usar un grupo de cifrado definido por el usuario, asegúrese de que el NetScaler tenga un grupo de cifrado definido por el usuario. Realice lo siguiente:
-
Cree un grupo de cifrado definido por el usuario. Por ejemplo,
testgroup. -
Vincule todos los cifrados requeridos al grupo de cifrado definido por el usuario.
-
Anote el nombre del grupo de cifrado definido por el usuario.
Para obtener instrucciones detalladas, consulte Configurar un grupo de cifrado definido por el usuario.
Mediante las anotaciones para perfiles SSL, puede vincular los grupos de cifrado integrados, un grupo de cifrado definido por el usuario o ambos al perfil SSL.
La siguiente es la sintaxis de la anotación de entrada que puede usar para vincular los grupos de cifrado integrados y un grupo de cifrado definido por el usuario a un perfil SSL:
ingress.citrix.com/frontend-sslprofile:'{"snienable":"enabled", "ciphers" : [{"ciphername": "secure", "cipherpriority" :"1"}, {"ciphername": "testgroup", "cipherpriority" :"2"}]}'
La anotación de entrada vincula el grupo de cifrado integrado,
SECURE, y el grupo de cifrado definido por el usuario, testgroup, al perfil SSL.
Uso de redirección de cifrado
Durante el handshake SSL, el cliente SSL (normalmente un navegador web) anuncia el conjunto de cifrados que admite, en el orden configurado de preferencia de cifrado. De esa lista, el servidor SSL selecciona un cifrado que coincide con su propia lista de cifrados configurados.
Si los cifrados anunciados por el cliente no coinciden con los cifrados configurados en el servidor SSL, el handshake SSL falla. El fallo se anuncia mediante un mensaje de error críptico mostrado en el navegador. Estos mensajes rara vez mencionan la causa exacta del error.
Con la redirección de cifrado, puede configurar un servidor virtual SSL para entregar mensajes de error precisos y significativos cuando falla un handshake SSL. Cuando el handshake SSL falla, el dispositivo NetScaler redirige al usuario a una URL configurada previamente o, si no hay ninguna URL configurada, muestra una página de error generada internamente.
La siguiente es la sintaxis de la anotación de entrada que puede usar para vincular grupos de cifrado y habilitar la redirección de cifrado para redirigir la solicitud a
redirecturl.
ingress.citrix.com/frontend-sslprofile:'{"snienable": "enabled", "ciphers" : [{"ciphername": "secure", "cipherpriority" :"1"}], "cipherredirect":"enabled", "cipherurl": "https://redirecturl"}'