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.
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
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