Contenido
Resumen
El siguiente artículo describe un caso de uso real para un ISP o proveedor de alojamiento, donde el proxy inverso HTTP / S Load Balancer es el punto principal de acceso a todos los servicios web públicos, esta configuración muestra lo fácil que es configurar un WAF avanzado y potente conjunto de reglas para proteger aplicaciones web basadas en direcciones IP de origen de lista negra, donde cada Anfitrión virtual gestiona su propia lista negra de manera que se puede prohibir que una IP pública se conecte a un dominio web como www.company1.com pero se le permite conectarse a www.company2.com.
Centraremos el artículo en dos secciones, en la sección principal, la configuración del perfil HTTPS funcionará como un proxy inverso con una lista de diferentes servicios, y la segunda sección explicará cómo configurar un Firewall de aplicaciones web conjunto de reglas que gestionará una lista negra diferente por servicio HTTP / S.
Medioambiente
El siguiente diagrama describe los componentes internos de Zevenet WAF. Como se muestra, la primera capa es el módulo WAF cuyo objetivo es garantizar en una etapa temprana que solo las solicitudes seguras puedan pasar al módulo de equilibrio de carga y luego enviar la solicitud a los backends.
Primero, el HTTP Anfitrión se evalúa el encabezado y se verifica la IP del cliente en la lista negra ya configurada. Si el Anfitrión el encabezado y la dirección IP del cliente coinciden, se corta la conexión y se 403 Prohibida La respuesta HTTP se envía al cliente, pero en el caso de que la IP del cliente y solicitada Anfitrión el encabezado no coincide, entonces el tráfico se identifica como no malicioso y se pasa al módulo del equilibrador de carga, donde el destino se elige según la solicitud HTTP Anfitrión encabezado y finalmente reenviado al servidor de fondo disponible.
Aquí puede encontrar un esquema de los componentes internos de Firewall de aplicaciones web para el ejemplo dado.
Configuración del servicio virtual HTTP
Configure uno dedicado Dirección IP virtual, en nuestro ejemplo 192.168.100.58, navegando a Red> Interfaces virtuales> Crear interfaz virtual como se muestra a continuación:
Ahora vamos a configurar el servicio de equilibrio de carga HTTP, vaya a LSLB> Granjas y luego haga clic en el botón Crear granja e ingrese los detalles del servicio virtual como se muestra a continuación:
Entonces presione Crear.
Ahora haga clic en la pestaña superior Servicios y cree tantos servicios como diferentes sitios web que administre, haga clic en el botón Nuevo servicio, en nuestro caso, crearemos dos servicios diferentes, uno para administrar el servicio www.mycompany1.com y otro para www.mycompany2.com.
Una vez que se crea el servicio, agregue el Anfitrión virtual filtro y los backends como se muestra en la imagen a continuación.
En caso de que tenga varios sitios web, solo tiene que agregar más servicios para definir un servicio dedicado para administrar cada web desde la misma dirección IP.
Ahora que se ha realizado la configuración de equilibrio de carga, permite configurar el módulo de firewall de aplicación web IPDS.
Configuración de listas negras
Vamos a crear una lista negra por servicio web para ingresar en cada lista negra las direcciones IP deseadas para bloquear el acceso. En nuestro ejemplo, crearemos dos listas negras diferentes con el nombre blacklistmycompany1 y blacklistmycompany2, uno por servicio respectivamente.
Esta lista negra se guardará en la ruta /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany1.txt.
Incluimos direcciones IP de 2 para fines de prueba, considere agregar tantas IP como sea necesario. Además, el ya existente Listas negras existentes IPDS Se puede utilizar el módulo.
Esta segunda lista negra se guardará en la ruta /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany2.txt.
Tenga en cuenta que en esta lista negra incluimos la dirección IP 192.168.1.191, esta IP se usará solo con fines de prueba, desde donde ejecutaremos las solicitudes HTTP.
Configuración del conjunto de reglas del firewall de aplicaciones web
El propósito de esta configuración es mantener diferentes listas negras de IP por sitio web, para evitar mantener la misma lista negra para todo el punto de acceso de la granja.
Vamos a configurar un conjunto de reglas, que es un grupo de reglas, con nombre HostingBlacklisting. Este conjunto de reglas estará compuesto por dos reglas simples (ID de regla 1000 e ID de regla 1001 en nuestro ejemplo), cada regla se define como una coincidencia y una acción, donde si la condición coincide, se ejecuta la acción. En nuestro ejemplo, utilizaremos la misma acción en ambas reglas, si la condición coincide con un Rechazar acción se ejecuta con un Acceso denegado a 403 respuesta.
Ve a IPDS> WAF, luego haz clic en Crear conjunto de reglas WAF y establezca un nombre descriptivo de conjunto de reglas, en nuestro ejemplo HostingBlacklisting.
Configurar el campo Fase por defecto a Se reciben los encabezados de solicitud. Este campo significa que el módulo WAF analizará los encabezados de solicitud entrantes del cliente.
Luego ve a la pestaña Reglas y crea el primero Regla De tipo Tarjetas, flyers, carteles personalizados como se muestra a continuación.
Ahora que se crea la primera regla del conjunto de reglas, permite crear las condiciones para que coincida con la IP del cliente en la lista negra para cada Anfitrión encabezamiento. Ir Condiciones y crear una condición de acuerdo con el REMOTE_ADDR variable como se muestra a continuación.
Luego cree otra condición para el Anfitrión virtual coincidir de acuerdo con el SERVER_NAME variable de la siguiente manera:
En este punto, el primer sitio web alojado www.mycompany1.com administra una dirección IP de la lista negra de aplicaciones web desde la lista negra ya configurada, referida Blacklistmycompany1.txt.
Creemos otra regla para el segundo sitio web www.mycompany2.com y repita la misma configuración que la configuración de la regla anterior, pero en este caso, debe cambiar el SERVER_NAME a mycompany2.com y se refieren a lo siguiente blacklist2.txt.
Vea la configuración completa del conjunto de reglas WAF compuesto:
Finalmente, agregue este conjunto de reglas a la granja ya creada, vaya a la pestaña Granjas y mover la granja Alojamiento Web (Hosting), en nuestro ejemplo, a la Granjas habilitadas sección como se muestra a continuación.
Ahora inicie el conjunto de reglas WAF para la granja, haga clic en la acción Juega en la sección superior izquierda de esta ventana, y el sistema comenzará a filtrar el tráfico HTTP para la granja Alojamiento Web (Hosting).
Prueba del conjunto de reglas del firewall de aplicaciones web
La IP del cliente 192.168.1.191 solicitará el sitio web http://www.mycompany1.com y http://www.mycompany2.com y, de acuerdo con nuestra configuración, el sistema WAF permitirá conectarse al primer servicio con el mismo nombre pero la conexión será denegada a mycompany2.com porque esta IP se ha incluido en la lista negra con nombre Blacklistmycompany2.
Desde la dirección IP 192.168.1.191 hasta VIP solicitando el sitio web www.mycompany1.com a través del equilibrador de carga:
root@192.168.1.191:# curl -H "Host: www.mycompany1.com" http://192.168.100.58 -v * Rebuilt URL to: http://192.168.100.58/ * Trying 192.168.100.58... * TCP_NODELAY set * Connected to 192.168.100.58 (192.168.100.58) port 80 (#0) > GET / HTTP/1.1 > Host: www.mycompany1.com > User-Agent: curl/7.52.1 > Accept: */* > < HTTP/1.1 200 OK < Server: nginx/1.10.3 < Date: Tue, 10 Sep 2019 15:36:22 GMT < Content-Type: text/html < Content-Length: 11383 < Last-Modified: Thu, 13 Dec 2018 11:01:49 GMT < Connection: keep-alive < ETag: "5c123c1d-2c77" < Accept-Ranges: bytes <
Desde la dirección IP 192.168.1.191 hasta VIP solicitando el sitio web www.mycompany2.com a través del equilibrador de carga:
root@192.168.1.191:# curl -H "Host: www.mycompany2.com" http://192.168.100.58 -v * Rebuilt URL to: http://192.168.100.58/ * Trying 192.168.100.58... * TCP_NODELAY set * Connected to 192.168.100.58 (192.168.100.58) port 80 (#0) > GET / HTTP/1.1 > Host: www.mycompany2.com > User-Agent: curl/7.52.1 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 403 Request forbidden < Content-Type: text/html < Content-Length: 17 < Expires: now < Pragma: no-cache < Cache-control: no-cache,no-store < * Curl_http_done: called premature == 0 * Closing connection 0 replied forbiddenp
Una vez que la Prohibido Cuando se genera la respuesta, el módulo WAF notifica el rechazo en el archivo Syslog del equilibrador de carga.
root@zva6000:# tail -f /var/log/syslog Sep 10 15:38:44 zva6000 pound: Hosting, ModSecurity: Warning. Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"] Sep 10 15:38:44 zva6000 pound: Hosting, [WAF,service mycompany2, backend 192.168.100.22:80,] (7f6cfac3c700) [client 192.168.1.191] ModSecurity: Access denied with code 403 (phase 1). Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"] Sep 10 15:38:44 zva6ktpl1 pound: Hosting, service mycompany2, backend 192.168.100.25:80, (7f6cfac3c700) WAF denied a request from 192.168.1.191
Ahora puede crear sus conjuntos de reglas de firewall personalizados para proteger sus aplicaciones web utilizando técnicas de inspección profunda de paquetes HTTP / S.