Instalar Helm en Kali Linux

 https://www.onlinetis.com/es/

Instalar Helm en Kali Linux

Instalar Helm en Kali Linux es un proceso bastante directo, ya que Kali está basada en Debian. Helm es esencial para gestionar aplicaciones en Kubernetes mediante "Charts" (paquetes preconfigurados).

Aquí tienes los pasos para dejarlo funcionando en un abrir y cerrar de ojos:


1. Instalación mediante Script Oficial (Recomendado)

Es la forma más rápida y segura de obtener la última versión estable.

  1. Abre tu terminal y descarga el script:

    Bash
    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    
  2. Dale permisos de ejecución:

    Bash
    chmod 700 get_helm.sh
    
  3. Ejecuta el script:

    Bash
    ./get_helm.sh
    

2. Instalación vía Repositorio APT

Si prefieres gestionar Helm como cualquier otro paquete de tu sistema para recibir actualizaciones con apt upgrade, sigue estos pasos:

  1. Añade la llave GPG:

    Bash
    curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
    
  2. Instala el soporte para HTTPS (si no lo tienes):

    Bash
    sudo apt-get install apt-transport-https --yes
    
  3. Añade el repositorio:

    Bash
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
    
  4. Actualiza e instala:

    Bash
    sudo apt-get update
    sudo apt-get install helm
    

3. Verificación

Para confirmar que todo está en orden, simplemente ejecuta:

Bash
helm version

Conceptos clave de la arquitectura de Helm:

Para entender cómo interactúa Helm con tu cluster de Kubernetes, es útil visualizar su funcionamiento:

  • Helm Client: Vive en tu Kali Linux y envía las instrucciones.

  • Charts: Son los paquetes (archivos YAML) que definen tus recursos de Kubernetes.

  • Releases: Es la instancia específica de un Chart ejecutándose en tu cluster.


Primeros pasos (Configuración)

Una vez instalado, lo primero que querrás hacer es añadir un repositorio de confianza (como el de Bitnami) para empezar a desplegar apps:

Bash
# Añadir repositorio
helm repo add bitnami https://charts.bitnami.com/bitnami

# Actualizar repositorios
helm repo update

# Buscar un paquete (ejemplo: nginx)
helm search repo nginx

Nota: Recuerda que para que Helm funcione, ya debes tener configurado el acceso a un cluster (un archivo ~/.kube/config válido), ya sea un cluster remoto o uno local como Minikube o Kind.

 

Vamos a desplegar un servidor web Nginx utilizando Helm. Es la "prueba de fuego" perfecta para verificar que tu configuración de Kali y el acceso a tu cluster de Kubernetes son correctos.

Asumiré que ya tienes un cluster funcionando (como Minikube, Kind o un cluster remoto) y que tu contexto de kubectl está activo.


Paso 1: Añadir el repositorio de Bitnami

Bitnami mantiene los Charts más estables y fáciles de usar. Si no lo hiciste antes, añádelo ahora:

Bash
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

Paso 2: Desplegar Nginx

Vamos a crear un "Release" (una instancia de la aplicación) llamado mi-servidor:

Bash
helm install mi-servidor bitnami/nginx

¿Qué acaba de pasar?

Helm ha tomado el Chart de Nginx, ha generado todos los archivos YAML necesarios (Deployment, Service, etc.) y los ha enviado a Kubernetes por ti.


Paso 3: Verificar el despliegue

Puedes ver el estado de tu aplicación con estos comandos:

  • Desde Helm: helm list (verás el nombre mi-servidor).

  • Desde Kubernetes: kubectl get pods (verás un pod de Nginx arrancando).


Paso 4: Acceder a la aplicación

Por defecto, Nginx se despliega como un servicio tipo LoadBalancer. Si estás en un entorno local (como Minikube), necesitarás crear un túnel o usar un Port-Forward para verlo en tu navegador de Kali:

  1. Ejecuta el reenvío de puertos:

    Bash
    kubectl port-forward svc/mi-servidor-nginx 8080:80
    
  2. Abre tu navegador y visita: http://localhost:8080. ¡Deberías ver la página de bienvenida de Nginx!


Comandos Útiles de Gestión

Si quieres modificar o borrar tu aplicación más adelante, guarda estos comandos en tu "navaja suiza":

AcciónComando
Ver valores configurableshelm show values bitnami/nginx
Actualizar la apphelm upgrade mi-servidor bitnami/nginx
Desinstalar todohelm uninstall mi-servidor

Un pequeño "Tip" de Kali

Como estás en Kali, es muy probable que quieras auditar la seguridad de lo que despliegas. Una herramienta genial para usar junto a Helm es Kube-hunter o Kube-bench.


Personalizar un Chart de Helm es donde realmente empieza el control total. En Kubernetes, no solemos editar los YAML a mano uno por uno; en su lugar, le decimos a Helm qué valores queremos cambiar.

Hay dos formas principales de hacerlo en Kali Linux: mediante la línea de comandos (para cambios rápidos) o mediante un archivo de configuración (para despliegues serios).


1. El método rápido: Usando --set

Ideal si solo quieres cambiar una o dos cosas sobre la marcha. Por ejemplo, vamos a desplegar Nginx con 3 réplicas (copias del servidor) en lugar de una:

Bash
helm install mi-web bitnami/nginx --set replicaCount=3

Si luego quieres verificar que se crearon las 3, ejecuta:

kubectl get pods


2. El método profesional: Archivo values.yaml

Este es el estándar en entornos reales. Primero, extraemos la configuración por defecto del Chart para ver qué podemos tocar:

  1. Exporta los valores a un archivo:

    Bash
    helm show values bitnami/nginx > mis-valores.yaml
    
  2. Edita el archivo con nano o mousepad (el editor de Kali):

    Bash
    nano mis-valores.yaml
    

    Busca secciones como replicaCount, service.type (puedes cambiarlo de LoadBalancer a NodePort) o resources.

  3. Aplica el despliegue usando tu archivo:

    Bash
    helm install mi-web-pro bitnami/nginx -f mis-valores.yaml
    

3. Ejemplo práctico: Cambiar el puerto y las réplicas

Imagina que quieres que tu Nginx use el puerto 8080 internamente y tenga 2 réplicas. Crea un archivo pequeño llamado custom.yaml:

YAML
replicaCount: 2
service:
  ports:
    http: 8080

Y luego instálalo así:

Bash
helm install nginx-personalizado bitnami/nginx -f custom.yaml

¿Por qué esto es importante en Kali?

Como usuario de Kali, esto te permite inyectar configuraciones de seguridad específicas. Por ejemplo, podrías usar un archivo values.yaml para:

  • Desactivar el acceso root en los contenedores.

  • Limitar los recursos (CPU/RAM) para evitar ataques de denegación de servicio local.

  • Añadir anotaciones para herramientas de monitoreo de red.

Pro-Tip: El comando "Simulacro"

Antes de romper nada, usa --dry-run --debug. Esto te muestra cómo quedarían los archivos YAML finales sin instalarlos realmente:

Bash
helm install prueba bitnami/nginx --set replicaCount=5 --dry-run --debug
 

Actualizar una aplicación con Helm es una de sus funciones más potentes, ya que te permite aplicar cambios (como subir de versión una imagen o cambiar la configuración) sin interrumpir el servicio por completo. Kubernetes se encarga de hacer un "Rolling Update" (actualización progresiva).

Aquí tienes cómo hacerlo paso a paso en tu terminal de Kali:


1. El comando helm upgrade

Imagina que ya tienes instalado mi-web con 1 réplica y ahora decides que necesitas 3. No necesitas borrar nada, solo ejecuta:

Bash
helm upgrade mi-web bitnami/nginx --set replicaCount=3

Helm comparará la configuración actual con la nueva y solo aplicará los cambios necesarios.


2. Actualizar usando un archivo de valores

Si prefieres mantener orden, lo ideal es modificar tu archivo values.yaml (por ejemplo, cambiando la versión de la imagen o los límites de memoria) y luego lanzar:

Bash
helm upgrade mi-web bitnami/nginx -f mis-valores.yaml

3. El "Salvavidas": helm rollback

¿Qué pasa si la actualización sale mal? ¿Si la nueva configuración hace que la app falle? Kali es para experimentar, pero en Kubernetes queremos estabilidad.

Helm guarda un historial de cada cambio que haces.

  1. Ver el historial de cambios:

    Bash
    helm history mi-web
    

    Verás una lista con números de revisión (1, 2, 3...).

  2. Volver a una versión anterior:

    Si la revisión 2 falló y quieres volver a la 1:

    Bash
    helm rollback mi-web 1
    

    ¡Listo! Kubernetes revertirá los cambios automáticamente al estado anterior.


4. Diferencias antes de aplicar (Helm Diff)

Como usuario de Kali, probablemente te guste saber exactamente qué está cambiando en el sistema. Hay un plugin muy popular llamado helm-diff que te muestra las diferencias antes de aplicar el upgrade.

Instalar el plugin:

Bash
helm plugin install https://github.com/databus23/helm-diff

Ver qué va a cambiar:

Bash
helm diff upgrade mi-web bitnami/nginx --set replicaCount=5

Te mostrará en color rojo lo que se borra y en verde lo que se añade, igual que un git diff.


Resumen de comandos de mantenimiento

ComandoFunción
helm listVer qué aplicaciones tienes instaladas.
helm status mi-webVer notas y estado actual de una app.
helm get values mi-webVer qué configuraciones personalizadas tiene la app ahora mismo.
helm uninstall mi-webBorrar la aplicación y todos sus recursos de K8s.

Como estás utilizando Kali Linux, la seguridad no es un extra, es la prioridad. Los Charts de Helm pueden ser vectores de ataque si contienen imágenes vulnerables, configuraciones con privilegios excesivos o dependencias maliciosas.

Aquí tienes cómo auditar y asegurar tus despliegues como un profesional del Pentesting en Kubernetes.


1. Escaneo de Vulnerabilidades con Trivy

Trivy es la herramienta estándar de oro para escanear archivos de configuración e imágenes. En Kali, puedes usarla para auditar un Chart antes de instalarlo.

  1. Instala Trivy:

    Bash
    sudo apt install trivy
    
  2. Escanea un Chart local o remoto:

    Bash
    trivy config bitnami/nginx
    

    Trivy buscará configuraciones inseguras (como contenedores corriendo como root o falta de límites de CPU).


2. Auditoría de Manifiestos con Kube-linter

Antes de que Helm envíe el YAML al cluster, puedes pasarlo por un "linter" que verifique las mejores prácticas de seguridad.

  1. Genera el YAML final (sin instalarlo):

    Bash
    helm template mi-seguridad bitnami/nginx > test.yaml
    
  2. Analiza el archivo:

    Existen herramientas como checkov o kube-linter que analizan este archivo en busca de fallos (ej. montar el sistema de archivos como lectura/escritura en lugar de solo lectura).


3. Seguridad en el values.yaml: El "Security Context"

Cuando personalices un Chart, siempre busca la sección de securityContext. Un Chart seguro debería verse así en tu archivo de valores:

YAML
containerSecurityContext:
  runAsUser: 1001          # No correr como root (UID 0)
  runAsNonRoot: true       # Forzar usuario no-root
  readOnlyRootFilesystem: true  # Evita que un atacante descargue scripts en el contenedor
  allowPrivilegeEscalation: false # Evita ataques de elevación de privilegios

4. Firmas Digitales (Helm Provenance)

¿Cómo sabes que el Chart que descargaste de internet no fue modificado por un tercero? Helm utiliza archivos .prov (provenance) y llaves GPG para verificar la integridad.

  • Verificar un Chart al descargar:

    Bash
    helm install mi-app bitnami/nginx --verify --keyring ~/.gnupg/pubring.gpg
    

    Si el Chart ha sido alterado, Helm se negará a instalarlo.


5. Control de RBAC (Role-Based Access Control)

Muchos Charts intentan crear sus propios Roles y ServiceAccounts. En Kali, debes ser escéptico:

  • Revisa los permisos: Usa helm template y busca tipos de recurso ClusterRole.

  • Principio de menor privilegio: Si un Chart pide permisos de cluster-admin (el Dios de Kubernetes) y solo es para un servidor web, algo anda mal.

Herramienta recomendada: Kube-score

Es excelente para darte una puntuación de seguridad.

Bash
helm template mi-app bitnami/nginx | kube-score score -

Te dará consejos críticos como: "El contenedor no tiene límites de memoria configurados (riesgo de DoS)".

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux