NeuVector Security Policy Overview
Para detectar violaciones del comportamiento normal, NeuVector mantiene una Política de Seguridad que puede ser gestionada desde la interfaz gráfica (GUI), la línea de comandos (CLI), CRD o API REST.
Groups
Esto proporciona la vista principal de los Grupos de Servicio y Grupos personalizados para establecer el modo (Descubrir, Monitorear, Proteger) para cada servicio y gestionar las reglas. Los grupos son creados automáticamente por NeuVector, pero se pueden agregar grupos personalizados. Las reglas para cada Grupo son creadas automáticamente por NeuVector cuando los contenedores comienzan a ejecutarse.
Puede ingresar a la consola web de NeuVector, por medio de Rancher Manager Server para visualizar los Grupos existentes:
Luego visualizar los Grupos existentes.

Network Rules
Los Network Rules son una lista de reglas que NeuVector debe aplicar. NeuVector puede descubrir automáticamente y crear un conjunto de reglas de lista blanca mientras está en modo Discover. Las reglas se pueden agregar manualmente si lo desea.
NeuVector crea automáticamente reglas de lista blanca de Capa 7 (capa de aplicación) cuando está en modo Discover, observando las conexiones de red y creando reglas que hacen cumplir los protocolos de aplicación.
NeuVector también tiene detección de ataques de red incorporada que está habilitada todo el tiempo, independientemente del modo (Discover, Monitor, protect). Las amenazas de red detectadas incluyen ataques DDoS, tunelización e inyección SQL.
El módulo NeuVector Violation Detection tiene tres modos de operar: Discover, Monitor, and Protect. En cualquier momento, cualquier grupo (que comience con 'nv' o el grupo 'Nodos') puede estar en cualquiera de estos modos.
En las siguientes pantallas, puede verificar los Groups creados hasta el momento y revisar en donde se cambia el Modo (No haga ningún cambio en este momento)

Estos Network Rules pueden observarse en la siguiente pantalla:

WAF Sensors
Los sensores WAF representan la inspección del tráfico de red hacia/desde un Pod/Contenedor. Estos sensores se pueden aplicar a cualquier grupo aplicable, incluso grupos personalizados (por ejemplo, grupos de Namespace). El tráfico entrante a TODOS los contenedores dentro del grupo será inspeccionado para detectar la regla WAF. Además, se inspeccionarán todas las conexiones de salida (salida) externas al clúster.
Esto significa que, si bien esta función se denomina WAF, es útil y aplicable a cualquier tráfico de red, no solo al tráfico de aplicaciones web, y por lo tanto proporciona protecciones más amplias que los simples WAF. Por ejemplo, la seguridad de API se puede aplicar en conexiones salientes a un servicio de API externo, permitiendo solo solicitudes GET y bloqueando POST.

A continuación se llevará a cabo un ejercicio de laboratorio para ejemplificar los WAF Sensors
Ejercicio de Laboratorio sobre WAF Sensors
-
En la línea de comandos del servidor proporcionado ejecuta el siguiente comando para la instalación de unzip
Espera que el comando anterior finalice sin inconvenenientes.sudo zypper install unzip -y -
Ahora procedemos a llevar a cabo la descarga de un script para simular un ataque Descargar script de prueba de WAF:
El script que se ha descargado, creará un recurso tipo Deployment de un servicio Web al cual se le estará realizando el ataque simulado, creará algunos WAF Sensors y finalmente atacará nuestro servicio Web.wget https://open-docs.neuvector.com/assets/files/waf_test-b54bc5fa9530dc205ac4c3b7e6e7e82f.zip -
Cuando lo hayas descargado, puedes descomprimirlo ejecutando el siguiente comando:
unzip waf_test-b54bc5fa9530dc205ac4c3b7e6e7e82f.zip -
El archivo descomprimido creará un directorio llamado waf_test al cual debes ingresar para ejecutar los siguientes comandos:
cd waf_testLo anterior es una corrección al script para que ejecute el archivo correctamente.cp http_backend.yml http_backend.yaml -
Posteriormente debes hacer login al cluster de Kubernetes por medio de la opción KUBECONFIG:
export KUBECONFIG=/home/student/rke2_conn/cluster1/cluster1_kubeconfig.yaml - Ejecuta el script para crear los recursos necesarios y simular un ataque de la siguiente manera:
Debes obtener una salida similar a la siguiente:
./setup_waf_test.shnamespace/httpdtest created service/httpdtest-service created deployment.apps/httpd-deployment created 10.43.164.122:80 nvwafsecurityrule.neuvector.com/sensor.traversal created nvwafsecurityrule.neuvector.com/sensor.injection created nvwafsecurityrule.neuvector.com/sensor.cross created nvwafsecurityrule.neuvector.com/sensor.execution created nvsecurityrule.neuvector.com/httpdtest-group created ===>TEST Log4j ===>TEST CCBill ===>TEST formmail ===>TEST SQLSleepFunction ===>TEST WebcenterFatWireSatellite ===>TEST HyperSeek ===>TEST autohtml.php ===>TEST anaconda ===>TEST webplus ===>TEST LinuxFileServerRequestForgery ===>TEST mailman ===>TEST ApacheTomcatServlet - Puedes comprobar el despliegue del servicio Web con el siguiente comando:
Debes obtener una salida similar a la siguiente:
kubectl get pods -n httpdtestNAME READY STATUS RESTARTS AGE httpd-deployment-5fcbcd9667-4vlcb 1/1 Running 0 63s -
Ejecuta el script para simular un ataque de la siguiente manera (Nuevamente, ejecutarlo varias ocasiones para que se pueda realizar las validaciones de una mejor manera):
Nota: Es normal al ejecutar el script nuevamente obtener el siguiente mensaje:./setup_waf_test.shError from server (AlreadyExists): namespaces "httpdtest" already exists -
Ingresa a la consola web de NeuVector para visualizar en primer lugar los Grupos creados automaticamente:

Puedes verificar que existen nuevos WAF Sensors
- Puedes verificar los Network Rules creados en base a la actividad de red detectada:

- Verificar los Security Events y verificar que efectivamente existen alertas ocasionadas por el intento de explotar vulnerabilidades:

- Posteriormente en Network Activity revisa los eventos registrados, trata de ubicar las conexiones desde el o lost Hosts lab-X-node{1,2} hacia httpd-deployment...:

- A continuación dar click sobre la línea amarilla que marca la conexión entre los componentes, revisar la regla y darle clieck en el botón Review Rule:

- En la siguiente pantalla, crear una nueva regla con polílica Deny como se muestra en la siguiente pantalla y dar click en el botón Deploy:

- Regresar a la pantalla de visualización de Network Rules, y ubicar la regla creada manualmente y la regla creada automaticamente, como se muestra en la siguiente imagen. Además debes eliminar la regla creada automaticamente cuya política es Allow:
La eliminación se realiza posicionando el curso sobre el menú de los tres puntos y seleccionando el ícono de la papelera.
Asegurarse de dar click en el botón de confirmación Ok, luego en el botón Save, y nuevamente Ok

-
Regresar a la línea de comandos y ejecuta el script para crear los recursos necesarios y simular un ataque nuevamente:
Debes obtener una salida similar a la siguiente:./setup_waf_test.shEjecutarlo varias ocasiones para contar con la data para analizar.Error from server (AlreadyExists): namespaces "httpdtest" already exists service/httpdtest-service unchanged deployment.apps/httpd-deployment unchanged 10.43.164.122:80 nvwafsecurityrule.neuvector.com/sensor.traversal unchanged nvwafsecurityrule.neuvector.com/sensor.injection unchanged nvwafsecurityrule.neuvector.com/sensor.cross unchanged nvwafsecurityrule.neuvector.com/sensor.execution unchanged nvsecurityrule.neuvector.com/httpdtest-group unchanged ===>TEST Log4j ===>TEST CCBill ===>TEST formmail ===>TEST SQLSleepFunction ===>TEST WebcenterFatWireSatellite ===>TEST HyperSeek ===>TEST autohtml.php ===>TEST anaconda ===>TEST webplus ===>TEST LinuxFileServerRequestForgery ===>TEST mailman ===>TEST ApacheTomcatServlet -
Posteriormente en Network Activity revisa los eventos registrados, trata de ubicar las conexiones desde el Host lab-X-node{1,2} hacia httpd-deployment... y se podrá observar como se ha generado una violación de la política y una alerta. Otra cosa importante que puedes observar es que la línea de conexión a cambiado a color Rojo:

Limpieza del ambiente
- Asegurarse de estar ubicado en el siguiente directorio:
cd /home/student/waf_test - Ejecutar el siguiente script para eliminar los recursos creados durante el laboratorio
./rm_waf_test.sh - Eliminar el Namespace creado para este laboratorio
kubectl delete ns httpdtest
ELIMINE NEUVECTOR DE CLUSTER1