¿Cómo buscar vulnerabilidades y securizar nuestros contenedores en K8s?

By albert
10 Jun 2020

Estamos acostumbrados a oír hablar estos últimos años de Kubernetes, un orquestador de contenedores encargado de automatizar el despliegue y escalado de aplicaciones y cada vez está más implantado. Pero no debemos olvidar y ser conscientes de la seguridad, tanto interna como externa, donde tenemos que analizar las vulnerabilidades, buscar debilidades y tener visible a los problemas de seguridad.
Hoy vamos a hablar de una herramienta de código abierto que busca y analiza precisamente estos problemas de seguridad. Estamos hablando de kube-hunter de Aqua, el cual permite escanear puertos remotos, internos o por CIDR y genera informes con los resultados obtenidos.
El repositorio oficial esta en github o también podemos instalar la herramienta mediante helm en un Pod, el cual se irá ejecutando de forma programada y generando los informes. 
 
contenedores-k8s
 
Podemos encontrar análisis tanto activos como pasivos y diferentes formas de ejecutar kube-hunter, ya sea local, container o pod. A continuación entraremos un poco más en detalle con cada uno de los diferentes tipos de ejecución.

Local

Tenemos que instalar una serie de prerrequisitos, clonar el repositorio de github y ejecutar el script de kube-hunter.
Requisitos: 
– Python 3.x 
– pip

Repositorio a clonar: git clone https://github.com/aquasecurity/kube-hunter.git
Dependencias: cd ./kube-hunter && pip install -r requirements.txt
Ejecución:  ./kube-hunter.py


Container

Necesitamos tener instalado docker, más tarde podremos levantar un container ya preparado.
Ejemplo: docker run –rm aquasec/kube-hunter
Si queremos especificar una red a escanear usamos el parametro –cidr:
Ejemplo: docker run –rm aquasec/kube-hunter –cidr 192.168.0.0/24
 

Pod 

Podemos crear un Pod usando helm, el cual creará un job dentro del Cluster de Kubernetes, donde programar los análisis y ver los resultados del log.
Por defecto el job se ejecuta cada cada día a las 1AM (0 1 * * *)

helm install stable/kube-hunter –name kube-hunter –namespace security
(*) Estamos especificando nombre del pod a crear y en que namespaces lo creará, si no lo ponemos usara un nombre random y en el namespace default.
Para opciones de configuración podemos consultar el repositorio oficial.
 

Opciones de escaneo

Por defecto, kube-hunter abrirá una sesión interactiva, en la que podrá seleccionar una de las siguientes opciones de escaneo: 

  • Escaneo remoto

Para especificar máquinas remotas usaremos la opción –remote.
Ejemplo: ./kube-hunter.py –remote domain.com

  • Escaneo de interfaz

Para especificar el escaneo de la interfaz, podemos usar la opción –interface
(Esto escaneará todas las interfaces de red de la máquina).
Ejemplo: ./kube-hunter.py –interface

  • Escaneo de red

Para especificar un CIDR específico para escanear, usamos el parametro –c
Ejemplo:  ./kube-hunter.py –cidr 192.168.0.0/24

 

Output

Para controlar el registro, podemos especificar un nivel de registro utilizando la opción –log. Ejemplo: ./kube-hunter.py –active –log WARNING

Los niveles de registro son: DEBUG, INFO (default), WARNING.

 

Informe análisis

contenedores-k8s_1
 
Para finalizar podemos trabajar en conjunto con Microscanner para buscar vulnerabilidades en nuestras imágenes de docker, de esta manera tendremos controlado las imágenes de docker y la seguridad de nuestros Pods en Kubernetes.
 
Autor: Jonathan Arenas

Los comentarios están cerrados.