Elimine las inseguridades del clúster de Kubernetes con Kubescape

La seguridad es una preocupación crucial para cualquier organización que almacene datos o servicios confidenciales. Con el auge de la computación en la nube, DevOps y otras iniciativas de transformación digital, la seguridad se ha convertido cada vez más en un enfoque principal para los departamentos de TI. Las empresas que adoptan Kubernetes para impulsar sus estrategias de implementación basadas en contenedores también deben pensar en cómo proteger los datos y servicios confidenciales dentro de sus clústeres de Kubernetes.

Kubernetes es un software de gestión de clústeres de código abierto diseñado para automatizar el proceso de implementación y escalado de aplicaciones en contenedores en cualquier entorno. Como estándar de la industria para la gestión de contenedores en múltiples nodos, Kubernetes ha ganado terreno entre muchos equipos de TI que buscan una forma más eficiente de implementar y gestionar contenedores en diferentes entornos. Sin embargo, esta adopción viene con su propio conjunto de desafíos en lo que respecta a la ciberseguridad.

Para mantenerse al día con las medidas de mitigación de ciberataques cada vez mayores, es importante emplear herramientas de seguridad de Kubernetes como Kubescape que es una herramienta de seguridad desarrollada por ARMO . Se utiliza para escanear componentes del clúster de Kubernetes y repositorios remotos. Después de escanear su clúster, Kubescape generará un informe detallado de los resultados del escaneo que le brindará la documentación de la vulnerabilidad detectada y qué propiedades de configuración cambiar para eliminar la vulnerabilidad detectada. Es gratuito y de código abierto.

Aquí hay ejemplos de soluciones que Kubecape le dará para resolver vulnerabilidades. Las soluciones variarán dependiendo de la vulnerabilidad detectada.

  • Deshabilite el acceso anónimo al servicio Kubelet.

  • Haga cumplir las credenciales de las aplicaciones de autenticación TLS del cliente de Kubelet en los archivos de configuración.

  • Aplique contexto de seguridad a sus pods y contenedores.

  • Asegúrese de que los proveedores de cifrado estén configurados correctamente.

  • Asegúrese de que el --anonymous-auth el argumento se establece en falso.

  • Asegúrese de que el --tls-cert-file y --tls-private-key-file los argumentos se establecen según corresponda.

En este artículo, aprenderá cómo instalar Kubernetes en Linux y escanear clústeres de Kubernetes, repositorios de GitHub y archivos YAML.

requisitos previos

Para completar este tutorial con éxito, necesita las siguientes herramientas y plataformas:

Cómo instalar Kubescape en Linux

La CLI de Kubescape se puede descargar en todas las versiones de Windows, macOS y Linux. Este tutorial cubre la instalación solo para Linux.

  1. Enter el siguiente comando para instalar Kubescape CLI en Linux usando Homebrew:

                              
                                $ brew tap armosec/kubescape
    
                              
                            
  2. Use el siguiente comando para verificar la versión de Kubescape que acaba de descargar:

                              
                                $ kubescape version
    
                              
                            
  3. Use el siguiente comando para actualizar Kubescape más adelante:

                              
                                $ kubescape update
    
                              
                            
  4. Use el siguiente comando para obtener todos los comandos de Kubescape y sus descripciones en caso de que se quede atascado al usar Kubescape por primera vez:

                              
                                $ Kubescape -help
    
                              
                            

Cómo analizar los resultados de Kubescape

Antes de usar Kubescape, es importante aprender a analizar los resultados del análisis de Kubescape. Aquí hay una guía completa sobre el análisis de los resultados del escaneo de Kubescape.

El informe de análisis de Kubescape tendrá los siguientes campos:

Control: Este campo le indica el componente de recursos que Kubescape analiza.

Puntuación de gravedad: Kubescape divide varios niveles de vulnerabilidad en cuatro categorías:

  1. Crítico

  2. Alto

  3. Medio

  4. Bajo

Estas categorías están aquí para alertarlo sobre cuán perjudicial es la vulnerabilidad detectada. Las vulnerabilidades que se califican como altas o cruciales deben resolverse de inmediato, ya que representan un peligro grave.

Documentos: Kubescape tiene una gran cantidad de datos sobre cualquier vulnerabilidad detectada. Este campo le dará el enlace de documentación de la vulnerabilidad. Esta documentación le dará más detalles sobre la vulnerabilidad detectada.

Recurso: Este campo sugiere soluciones que puede implementar para eliminar la vulnerabilidad detectada. Si a sus contenedores se les han otorgado privilegios escalados, Kubescape le indicará que elimine los privilegios. También puede llegar tan lejos como decirle qué propiedades y argumentos debe establecer para solucionar el problema.

En la parte inferior de la tabla del informe de escaneo, verá el resumen de los resultados del escaneo. El resumen le proporciona la puntuación de riesgo del clúster o recurso. El resumen también incluirá el porcentaje de riesgo analizado por diferentes marcos de seguridad que utiliza Kubescape:

  1. DevOpsBest (riesgo: 8,91)

  2. ArmoBest (riesgo: 5,53)

  3. INGLETE (riesgo: 1,99)

  4. CIS (riesgo: 9.18)

  5. NSA (riesgo: 6,76)

  6. AllControls (riesgo: 4.72)

Cómo escanear su clúster usando Kubescape

Kubernetes es vulnerable a diferentes tipos de ataques:

Los atacantes pueden hacerse pasar por administradores para obtener acceso a cuentas privilegiadas.

Los atacantes pueden aprovechar las vulnerabilidades de los componentes subyacentes para obtener acceso a datos confidenciales o interrumpir los servicios.

Los atacantes pueden usar versiones mal configuradas de Kubernetes para lanzar ataques maliciosos contra otros sistemas.

Para proteger mejor sus sistemas contra este tipo de ataques, es importante escanear su clúster regularmente usando Kubescape para detectar vulnerabilidades subyacentes.

Use el siguiente comando para escanear su clúster:

                      
                            $ kubescape scan --submit --enable-host-scan --format-version v2 --verbose

                      
                    

El escaneo de Kubescape generará muchas vulnerabilidades detectadas. Aquí hay un example de los problemas de seguridad detectados:

                      
                            +----------+--------------------------------+---------------------------------------+-------------------------------------------------------------------------+

    | SEVERITY |          CONTROL NAME          |                 DOCS                  |                          ASSISTANT REMEDIATION                          |

    +----------+--------------------------------+---------------------------------------+-------------------------------------------------------------------------+

    | High     | Apply Security Context to Your | https://hub.armosec.io/docs/cis-5.7.3 | spec.containers[0].securityContext.readOnlyRootFilesystem=true          |

    |          | Pods and Containers            |                                       | spec.containers[0].securityContext.runAsNonRoot=true                    |

    |          |                                |                                       | spec.containers[0].securityContext.allowPrivilegeEscalation=false       |

    |          |                                |                                       | spec.containers[0].securityContext.capabilities.drop=NET_RAW            |

    |          |                                |                                       | spec.containers[0].securityContext.seLinuxOptions=YOUR_VALUE            |

    +----------+--------------------------------+---------------------------------------+-------------------------------------------------------------------------+

    | Medium   | Ensure that Service Account    | https://hub.armosec.io/docs/cis-5.1.6 | spec.automountServiceAccountToken=false                                 |

    |          | Tokens are only mounted where  |                                       |                                                                         |

    |          | necessary                      |                                       |                                                                         |

    +          +--------------------------------+---------------------------------------+-------------------------------------------------------------------------+

    |          | Ensure that the                | https://hub.armosec.io/docs/cis-1.3.1 | spec.containers[0].command[18]                                          |

    |          | Controller Manager             |                                       | spec.containers[0].command[18]=--terminated-pod-gc-threshold=YOUR_VALUE |

    |          | --terminated-pod-gc-threshold  |                                       |                                                                         |

    |          | argument is set as appropriate |                                       |                                                                         |

    +----------+--------------------------------+---------------------------------------+-------------------------------------------------------------------------+

    | Low      | Ensure that the Controller     | https://hub.armosec.io/docs/cis-1.3.2 | spec.containers[0].command[18]=--profiling=false                        |

    |          | Manager --profiling argument   |                                       |                                                                         |

    |          | is set to false                |                                       |                                                                         |

    +----------+--------------------------------+---------------------------------------+-------------------------------------------------------------------------+

                      
                    

Si desea que Kubescape publique los resultados del escaneo en formato PDF, use el siguiente comando que agrega el --output y --format pdf banderas:

                      
                            $ kubescape scan --format pdf --output [enter name of file here].pdf

                      
                    

Cómo escanear su repositorio usando Kubescape

Cuando administra su código fuente en un repositorio central, se beneficia de una mayor visibilidad y control de los cambios en el código. Sin embargo, estos beneficios vienen con riesgos. Si un usuario malicioso obtiene acceso a su repositorio, puede cargar un código malicioso que se propagará a todos los desarrolladores. Además, si sus usuarios no usan credenciales seguras para acceder al repositorio, es posible que lo hagan accesible a terceros no autorizados.

Las bases de código están ampliamente alojadas en repositorios de GitHub para facilitar el trabajo en equipo y la colaboración. Sin embargo, surgen muchos problemas de seguridad cuando se trabaja con muchas personas en un proyecto de código abierto, como los secretos en expansión. Kubescape también escanea sus repositorios locales y remotos. Necesitará el enlace del repositorio si su repositorio está alojado en GitHub.

Use el siguiente comando para escanear su repositorio alojado en GitHub:

                      
                            $ kubescape scan [enter GitHub repository link here]--submit

                      
                    

Después de escanear sus repositorios con Kubescape, manténgalos actualizados. Es probable que sus repositorios de código fuente se encuentren entre sus activos digitales más valiosos. Esto significa que debe actualizar regularmente su software de seguridad. Los repositorios de código fuente a menudo brindan una funcionalidad integrada para aplicar automáticamente actualizaciones de seguridad. La instalación de actualizaciones periódicas garantizará que tenga los parches de seguridad más recientes para su software.

Escaneo de gráficos Helm

Si su clúster o repositorio tiene un Gráfico de timón instalado, Kubescape lo incluirá en el proceso de escaneo del clúster o repositorio. La vulnerabilidad detectada en el gráfico de Helm se mostrará en el informe de exploración de vulnerabilidades. No tiene que escanear el gráfico de Helm individualmente.

Escaneo de archivos de configuración YAML

Al implementar el código en producción, es esencial reducir el riesgo de introducir errores y hacer que sea lo más fácil posible para los desarrolladores leer y comprender su código. Los archivos YAML son una forma común de almacenar datos de configuración del sistema. Si bien son fáciles de leer como texto legible por humanos, pueden contener configuraciones incorrectas.

También presentan riesgos de seguridad si alguien puede ver datos críticos. Para evitar estos riesgos y facilitar su proceso de implementación, debe implementar las mejores prácticas de seguridad de archivos YAML en su proyecto desde el principio.

Kubescape mejora la calidad de la configuración YAML analizándolos y buscando vulnerabilidades. Use el siguiente comando para escanear su archivo de configuración YAML:

                      
                            $ kubescape scan first-deployment.yaml

                      
                    

No almacene contraseñas ni datos secretos en archivos YAML. Los archivos YAML no están encriptados, por lo que es fácil leer su contenido como texto sin formato. Esto los hace inapropiados para almacenar información confidencial como contraseñas o claves. Use herramientas de cifrado de secretos como secretos sellados para ayudarlo a almacenar información confidencial.

Detección de contenedores privilegiados con Kubescape

Solo algunos usuarios deben tener acceso de root; Lo mismo ocurre con los contenedores. Los contenedores Docker se implementan sobre el motor Docker, que es ejecutado por la máquina host y debe protegerse a toda costa. Los contenedores raíz o privilegiados tienen acceso a la máquina host, a diferencia de un contenedor ordinario con acceso limitado a la máquina host. Un contenedor privilegiado es inofensivo por sí solo. El problema surge cuando el personal no autorizado y los piratas informáticos se aprovechan de su acceso ilimitado a la máquina host.

Cuando los piratas informáticos tienen acceso a la máquina host, la superficie de ataque se hace más grande. Los piratas informáticos pueden robar secretos almacenados en la máquina anfitriona y rechazar servidores si los piratas informáticos explotan las vulnerabilidades de la máquina anfitriona. Los contenedores privilegiados también pueden pasar por alto las pruebas de seguridad. Así de perjudiciales pueden ser los contenedores privilegiados si los hackers los explotan.

Los contenedores privilegiados se utilizan cuando se necesita acceso directo a la máquina host para realizar tareas como montar un depósito S3 dentro de un pod a través de FUSE y compartir directorios de host. Sin embargo, los contenedores privilegiados son una mala idea y deben desaconsejarse a toda costa. No usar contenedores privilegiados no evitará que el atacante explote las vulnerabilidades de los contenedores. Aún así, reducirá el ataque superficial ya que el pirata informático no tendrá acceso a la máquina host durante una brecha de seguridad.

Con Kubescape, puede usar el siguiente comando para escanear su clúster para detectar contenedores privilegiados:

                      
                            $ kubescape scan control "Privileged container" --format pdf --output privcontainer.pdf

                      
                    

Docker también tiene un comando que puede usar para verificar si un contenedor específico tiene contenedores privilegiados. Use el siguiente comando que necesita su ID de contenedor para verificar si su contenedor tiene privilegios:

                      
                            $ docker inspect --format="{{.HostConfig.Privileged}}" [enter your container ID here]

                      
                    

El comando anterior generará True si su contenedor tiene derechos privilegiados y False si no tiene privilegios.

Kubescape y automatización

Kubernetes tiene muchos componentes distribuidos que deben monitorearse, como:

  1. vainas

  2. Despliegues

  3. Nodos

  4. Plano de control

  5. servidor API

  6. programador

  7. Kubelet

  8. Proxy Kube

  9. Servicios

  10. Etc.

  11. Mapa de configuración

La extensa arquitectura de Kubernetes exige estrategias y medidas de seguridad más definitivas. Aquí es donde la automatización tiene que ser optimizada y utilizada completamente para close los huecos dejados por los desarrolladores. La automatización de la seguridad es la máxima protección que su entorno de Kubernetes y sus canalizaciones de CI/CD pueden obtener. Los humanos cometemos errores y la automatización no. Los humanos tienen que dormir; la automatización permanece 24/7 monitoreando su infraestructura. Un sistema de automatización bien configurado le hará maravillas.

Kubescape se puede integrar con las siguientes herramientas y plataformas de canalización de CI/CD para mejorar la automatización de la seguridad:

Kubescape lo educará sobre vulnerabilidades de las que nunca ha oído hablar a través de su documentación. Kubescape lo mantendrá actualizado sobre la seguridad y el estado de su clúster.

Aprende más

Para obtener más información sobre Kubescape, consulte la documentación del proyecto .

Título del artículo Nombre (opcional) Correo electrónico (opcional) Descripción

Enviar sugerencia

Related Posts