¿Cómo prevenir un ataque de encabezado de host en Ubuntu Server 14.04?

1

Si enviamos una solicitud desde cualquier host como example.com , nuestro servidor devuelve un estado de respuesta HTTP 1.1 200 OK .

En las condiciones correctas, debe mostrar el estado del mensaje de error 302, 400 o 404 (respuesta no encontrada). En las condiciones actuales, muestra un mensaje de respuesta 200 OK, cuando se envía a través de nuestro host como xx.xxx.xx.xx.

Por ejemplo, si enviamos esta solicitud:

GET /web/ HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Connection: close
Upgrade-Insecure-Requests: 1

Obtenemos esta respuesta:

HTTP/1.1 200 OK
Date: Thu, 02 Mar 2017 15:23:20 GMT
Server: figi_Server
X-Frame-Options: deny
Strict-Transport-Security: 1
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: sameorigin
X-XSS-Protection: 1; mode=block

Nota:

  1. SO: Ubuntu 14.04.
  2. Servidor web: Apache 2.2.
  3. Máquina virtual que ejecuta ambos.

    
pregunta cruxster 02.03.2017 - 11:02
fuente

1 respuesta

4

Primero, esto no es un ataque contra su servidor porque no se hace ningún daño en el servidor. Y, no es específico para la versión de Ubuntu Server, pero es específico para el servidor web y su configuración, es decir, en su caso nginx con configuración desconocida.

Por defecto, el servidor web no tiene idea de qué nombres son válidos para su sistema. Debe configurar explícitamente qué nombres son válidos y qué debería hacer el servidor si no se proporcionó un encabezado de host o si no se proporcionó ninguno de los encabezados de host configurados. Con nginx como se usa en su sistema, esto significa configurar hosts virtuales para todos los nombres que desea aceptar, configurar un servidor predeterminado para rechazar todas las solicitudes a nombres desconocidos y tal vez configurar un servidor similar en caso de que desee tratar específicamente con nombres de host vacíos .
Para obtener más detalles, consulte la documentación de nginx , específicamente la parte sobre "Cómo evitar el procesamiento de solicitudes con nombres de servidor indefinidos ".

    
respondido por el Steffen Ullrich 02.03.2017 - 11:21
fuente

Lea otras preguntas en las etiquetas