barra de menu

miércoles, 4 de diciembre de 2019

A10 - ADC - HTTP/HTTPS

HTTP

HTTP ( Hypertext Transfer Protocol) es un protocolo TCP no encriptado que se usa para acceder al contenido web. Por defecto, usa el puerto 80.

HTTPS usa el mismo protocolo pero con una encriptación SSL para añadir seguridad. Por defecto, usa el puerto 443.

HTTP es en realidad una secuencia de peticiones y respuesta. Las opciones de las peticiones y las respuestas van configuradas en las cabeceras (headers). Los navegadores abren múltiples sesiones TCP para descargar los múltiples objetos en paralelo de un sitio web.



PETICIONES HTTP (Request)

Los principales métodos de peticiones son:

  • GET url: petición de un objeto al servidor
  • POST url: envía datos o un objeto al servidor
  • HEAD: petición de cabeceras
  • CONNECT: inicia la comunicación. Puede usar para abrir una comunicación túnel

Las principales peticiones de cabeceras:

  • HOST: nombre del sitio
  • Connection: Keep Alive: el cliente soporta múltiples peticiones/respuesta en la misma sesión
  • Accept-encoding: gzip, deflate: soporta compresión HTTP
  • Cookie: texto usado para mantener el rastro (track) de la información del usuario


RESPUESTAS HTTP (Response)

Los principales códigos de respuesta son:

  • 200: OK
  • 301: redirigido permanentemente
  • 302: redirigido temporalmente
  • 304: no modificado
  • 404: página no encontrada
  • 5xx: error de servidor


Las principales respuestas de cabeceras:

  • Last-Modified: cuando el objeto fue modificado la última vez
  • Etag: Entity tag, es usado para detectar los cambios en el objeto
  • Connection: Keep Alive: el cliente soporta múltiples peticiones/respuesta en la misma sesión
  • Set-Cookie: pregunta al usuario para salvar la cookie
  • Chache-Control / Pragma: capacidad del objeto para meterlo en caché


CONFIGURACIÓN DE SLB PARA HTTP

No se necesita ninguna configuración específica para el balanceo básico de HTTP. Cualquier L4 SLB VIP funciona para los servicios HTTP.

Aún así, podemos mejorar el rendimiento del balanceo para HTTP ofreciendo una mayor flexibilidad, disponibilidad, aceleración y seguridad. Los equipos A10 tienen plantillas con estas opciones que se asocian a los Virtual Server Ports.

Http Health Monitor

Necesita los siguientes parámetros obligatorios:

  • Puerto Tcp
  • Método: GET, HEAD o POST
  • URL


Podemos configurar los siguientes opcionalmente:

  • Usuario y Password: para los sitios web que requieren autenticación
  • Expect: Código de respuesta o texto del servidor
  • Código de mantenimiento: para marcar que el servidor está en mantenimiento en vez de caído (los usuarios con persistencia permanecen en el servidor)


URL Failover

Cuando todos los servidores fallan, el A10 puede devolver un "HTTP redirect" a una dirección de backup.


  • (config-http)#failover-url http://xxxxx.xxx




Reintentos de peticiones HTTP en códigos HTTP 5xx

Cuando un servidor devuelve un HTTP 5xx, por defecto el A10 se lo envía al cliente. Esta opción le dice al A10 que reenvíe la petición a otra servidor del Service Group. Tenemos opciones disponibles:

  • Todas las peticiones se reenvían a otro servidor
  • Las peticiones se reenvían a otro servidor y al servidor que respondió con un 5xx no se le envían peticiones por 30 segundos.
  • Número de servidores a los que se pueden intentar reenviar
  • Generar logs cuando se dé este código


Inserción de la cabecera IP del cliente

En los logs de los servidores web, la dirección ip del cliente es registrada. Esta ip se coge de la información del campo de "dirección de origen (source address). Esto se hace normalmente por cuestiones de seguridad.

En algunas opciones HTTP del A10 fuerzan a este a establecer la conexión con el servidor desde la propia IP del A10. En estos casos, el servidor web pierda la ip del cliente. Para permitir que los servidores web tengan la ip del cliente, se puede inyectar la ip en una "petición de cabecera" (request header):

  • (config-http)#insert-client-ip


Persistencia de Cookie

Igual que la Persistencia de IP, la persistencia de Cookie se usa cuando los clientes HTTP/HTTPS deben tener futuras conexiones al mismo servidor.

Incluso clientes que vienen del mismo proxy, que vienen de la misma dirección ip, pueden conseguir diferente persistencia gracias a la cookie.



HTTPS

Se puede decir que es HTTP over TLS. Es la versión segura de HTTP. Por defecto, usa el puerto 443.

Nos ofrece autenticación de servidores y clientes con certificados. También encriptación con TLS/SSL.


Autenticación con servidores

TLS/SSL está basado en certificados públicos y claves privadas. Estos certificados son emitidos por una Autoridad Certificadora (CA).

Los clientes HTTPS primero piden el certificado público del servidor y lo validan usando una lista confiable de Autoridades Certificadoras. Una vez que el certificado del servidor es validado, los clientes envían su petición de tráfico HTTPS.



Negociación SSL



En nuestro equipo A10, creamos plantillas para habilitar la comunicación HTTPS tanto para los clientes como para los servidores

La plantilla SSL para clientes configuramos:

  • Certificado Público que se le presenta a los clientes
  • Clave Privada
  • El cifrado SSL soportado (algoritmo de encriptación)
  • Petición de certificado del cliente (opcional)




La plantilla SSL para servidores configuramos:
  • El cifrado SSL soportado (algoritmo de encriptación)
  • Autoridad Certificadora (CA) que será usado para validar el certificado (opcional)



SSL Off-Load

Este concepto quiere decir que cuando un cliente solicita una comunicación HTTPS, nuestro equipo A10 lo recibe y lo desencripta, pero la petición que le envía al servidor es en HTTP, para descargar de procesamiento a este último.



Necesitamos una Plantilla SSL de cliente en el Virtual Port. El certificado SSL del cliente normalmente viene emitido por una CA confiable. Tenemos que configurar el puerto 80 con aFleX o usar una plantilla de redireccionamiento de peticiones HTTP a peticiones HTTPS.

Para configurar una plantilla de redireccionamiento:

  • (config)#slb template http
  • (config-http)#redirect-rewrite secure



Cuando el servidor responde con una redirección, el A10 reescribe el nuevo valor.

Nota: las redirecciones y la reescritura se pueden hacer también con scripts de aFleX.



No hay comentarios:

Publicar un comentario