Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Entradas populares

PostHeaderIcon Seguridad en contenedores Kubernetes




Kubernetes domina el mercado de la orquestación de contenedores. Según varios informes, el 87% de las organizaciones están administrando una parte de sus cargas de trabajo de contenedores con Kubernetes y esta es una de las mayores tecnologías que están siendo adoptadas.  Pero el 94% de las organizaciones que usan kubernetes, han experimentado un problema de seguridad grave en los últimos 12 meses en su entorno de contenedores, casi el 70%  ha detectado configuraciones incorrectas, el 27% ha experimentado incidentes de ciberseguridad  y el 24% ha descubierto vulnerabilidades importantes en dichos entornos de contenedores.



Originalmente, ingenieros de Google desarrollaron y diseñaron Kubernetes. Google fue uno de los primeros colaboradores de la tecnología de contenedores de Linux, y ha contado públicamente que todo en Google se ejecuta en contenedores. Google donó el proyecto Kubernetes a la recientemente creada Cloud Native Computing Foundation en 2015.

Algunos factores a considerar cuando proteja sus contenedores de Kubernetes: 

  • Configuraciones predeterminadas 
  • Tiempo de ejecución del contenedor 
  • Imágenes 
  • Seguridad del host 
  • Comunicaciones pod a pod

Vocabulario Kubernetes

Como cualquier tecnología, existen muchas palabras específicas de la tecnología que pueden ser una barrera al ingresar. Veamos algunos de los términos más comunes para ayudarlo a entender Kubernetes.

  • Master: la máquina que controla los nodos Kubernetes. Aquí es donde se originan todas las asignaciones de tareas.
  • Nodo: estas máquinas realizan las tareas requeridas y asignadas. El master de Kubernetes las controla.
  • Pod: un grupo de uno o más contenedores implementados en un nodo único. Todos los contenedores de un pod comparten la dirección IP, la IPC, el nombre del host y otros recursos. Los pods abstraen la red y el almacenamiento del contenedor subyacente. Esto le permite mover los contenedores por el clúster con mayor facilidad.
  • Controlador de replicación: controla la cantidad de copias idénticas de un pod que deben ejecutarse en algún lugar del clúster.
  • Servicio: separa las definiciones de tareas de los pods. Los proxies de servicios de Kubernetes envían automáticamente las solicitudes de servicio al pod correspondiente, sin importar adónde se traslada en el clúster, o incluso si está siendo reemplazado.
  • Kubelet: este servicio se ejecuta en los nodos y lee los manifiestos del contenedor, y garantiza que los contenedores definidos estén iniciados y ejecutándose.
  • kubectl: es la herramienta de configuración de la línea de comandos de Kubernetes.


Fases
  • Remediar las vulnerabilidades conocidas durante la fase de compilación
  • Corregir las configuraciones incorrectas durante la fase de compilación / implementación
  • Responder a las amenazas en tiempo de ejecución.


Fase de compilación

La protección de contenedores y Kubernetes comienza en la fase de compilación con la protección de las imágenes del contenedor. El tiempo que pasemos en este punto, pagará dividendos más adelante. Las mejores prácticas de ciberseguridad que se hayan perdido en este punto serán significativamente más costosas de corregir en fases posteriores.

Las dos cosas principales que se deben hacer aquí son crear imágenes seguras y escanear esas imágenes en busca de vulnerabilidades conocidas.

Recomendaciones

  1. Utiliza imágenes mínimas : Evita el uso de imágenes con shells o administradores de paquetes del sistema operativo, ya que podrían contener vulnerabilidades desconocidas. Si debemos incluir paquetes de sistema operativo, elimina el administrador de los mismos en un paso posterior.
  2. No agregues componentes innecesarios : Asegúrate de eliminar las herramientas de depuración de los contenedores en producción. Las herramientas comunes, como CURL, son muy útiles para los atacantes, como de un buen hardening hablásemos, bórralas.
  3. Utiliza solo imágenes actualizadas : Asegúrate de que sus imágenes (y cualquier herramienta de terceros que incluya) están actualizadas y utilizan las últimas versiones de sus componentes.
  4. Utiliza un escáner de imágenes para identificar vulnerabilidades : El escáner debería poder identificar las vulnerabilidades dentro de las imágenes, incluso por capas, y decirnos si se pueden parchear o no. Debemos poder buscar vulnerabilidades en paquetes de sistema operativo y bibliotecas para todas las  aplicaciones en contenedores. Os dejo por aquí una lista interesante de scanner de vulnerabilidades para kubernetes.
  5. Integra y automatiza la ciberseguridad : Haz que el escaneo de imágenes y otras comprobaciones de ciberseguridad formen parte de su canal para automatizar la seguridad  y generar alertas cuando el escáner detecte vulnerabilidades de altas, pero reparables
  6. Etiqueta vulnerabilidades no reparables : A veces, no existe una solución para una vulnerabilidad conocida, o la vulnerabilidad no es crítica y, por lo tanto, no garantiza una solución inmediata. En este caso, agrégalos a una lista blanca o filtra la salida del escáner para que no interrumpa el flujo de trabajo del equipo de desarrollo.
  7. Implementar defensa en profundidad : Cuando se descubre un problema de ciberseguridad en una imagen de un contenedor o una implementación en ejecución que usa esa imagen, asegúrate de tener verificaciones de políticas y un flujo de trabajo de corrección para detectar y actualizar esas imágenes.

Fase de implementación

La infraestructura de Kubernetes debe configurarse de forma segura antes de implementar las cargas de trabajo. Desde una perspectiva de ciberseguridad, primero necesitamos la visibilidad de lo que está implementando y cómo. Luego, podemos identificar y así responder a las brechas de la política de seguridad. Como mínimo, necesitamos saber:

  • Qué se está implementando : Incluyendo información sobre la imagen que se está utilizando, que componentes o vulnerabilidades, y los pods que se implementarán.
  • Dónde se implementará : Qué clústeres, espacios de nombres y nodos
  • Cómo se implementa : Si se ejecuta con privilegios, con qué otras implementaciones se puede comunicar, el contexto de seguridad del pod que se aplica, si corresponde
  • A qué puede acceder : Incluyendo secretos, volúmenes y otros componentes de la infraestructura, como el host o la API del orquestador.
  • Es compatible : Si cumple con nuestras políticas y requisitos de ciberseguridad

Con esta información, puede comenzar a apuntar a áreas para remediación y endurecimiento e implementar la segmentación adecuada.

Recomendaciones

  1. Utiliza espacios de nombres para aislar cargas de trabajo sensibles : Los espacios de nombres son un límite de aislamiento clave para los recursos de Kubernetes. Proporcionan una referencia para las políticas de red, las restricciones de control de acceso y otros controles de seguridad importantes. La separación de las cargas de trabajo en espacios de nombres puede ayudar a contener los ataques y limitar el impacto de errores o acciones destructivas por parte de los usuarios autorizados.
  2. Utiliza las políticas de red de Kubernetes para controlar el tráfico ( Entrada / Salida ) entre pods y clústeres : De forma predeterminada, Kubernetes permite que cada pod se ponga en contacto con los demás. Las políticas de segmentación de red son un control de seguridad clave que puede evitar el movimiento lateral a través de contenedores en caso de que un atacante ingrese. Cubrimos cómo configurar políticas de red de Kubernetes en dos publicaciones de blog anteriores.
  3. Evita el acceso con excesivos permisos a los secretos : Como primer paso, asegúrate de que las implementaciones recopilan solo los secretos que realmente requieren para evitar una exposición innecesaria.
  4. Evaluar los privilegios utilizados por los contenedores : El conjunto de capacidades, roles y privilegios otorgados a los contenedores pueden tener un gran impacto en ciberseguridad. El objetivo aquí es adherirse al principio de mínimo privilegio  y proporcionar los privilegios y capacidades mínimas que permitirían al contenedor realizar su función.

Las políticas de ciberseguridad de los pods son una forma de controlar los atributos relacionados con la misma en estos, incluidos los niveles de privilegio de los contenedores. Estos pueden permitir que un operador especifique lo siguiente:

  • No ejecutar los procesos de aplicación como root.
  • No permitir la escalada de privilegios.
  • Utilizar un sistema de archivos raíz de solo lectura.
  • Utilizar el montaje del sistema de archivos predeterminado  ( proc )
  • No utilizar la red del host ni el espacio de proceso.
  • Eliminar las capacidades de Linux no utilizadas e innecesarias.
  • Utilizar las opciones de SELinux para controles de proceso más detallados.
  • Otorgar a cada aplicación su propia cuenta de servicio de Kubernetes.
  • No montar las credenciales de la cuenta de servicio en un contenedor si no necesita acceder a la API de Kubernetes.
  1. Evaluar la procedencia de la imagen, incluidos los registros : Como regla general, no implemente código de fuentes desconocidas. Para Kubernetes, esto significa usar imágenes de registros conocidos que solo están en listas de permitidos.
  2. Extiende el escaneo de imágenes : Como una extensión del escaneo de imágenes, aplica políticas en la fase de implementación según los resultados del escaneo. Una forma de hacer que se cumpla sería utilizar el controlador de admisión de validación, una función de Kubernetes para rechazar la creación de la implementación cuando especifican imágenes sin resultados de escaneo o vulnerabilidades críticas, o si las imágenes se crearon hace más de 90 días. Las imágenes que no se han escaneado recientemente pueden contener vulnerabilidades con lo que ello conlleva.
  3. Utiliza etiquetas y anotaciones de forma adecuada : Por ejemplo, considera etiquetar o anotar las implementaciones con el nombre, el alias de correo electrónico o el canal de Slack del equipo responsable de una aplicación. Esto hará que sea más fácil alertar al equipo responsable sobre la clasificación de problemas de ciberseguridad.
  4. Habilita el control de acceso basado en roles de Kubernetes (RBAC) , este proporciona un método para controlar la autorización para acceder al servidor de API de Kubernetes de un clúster, tanto para los usuarios como para las cuentas de servicio del clúster. La función de Kubernetes RBAC es altamente configurable.

 Fase de ejecución

La fase de ejecución expone las aplicaciones en contenedores a una gran cantidad de nuevos desafíos de ciberseguridad. Nuestro objetivo aquí es ganar visibilidad en el entorno de ejecución, y detectar / responder a las amenazas a medida que van surgiendo.

La protección proactiva de los contenedores y las implementaciones de Kubernetes en las fases de compilación e implementación puede reducir en gran medida la probabilidad de incidentes de ciberseguridad en la fase de ejecución y el esfuerzo posterior necesario para corregir los errores.

Primero, debemos monitorizar las actividades del contenedor más relevantes para la ciberseguridad :

  • Actividad de proceso
  • Comunicaciones de red entre servicios en contenedores
  • Comunicaciones de red entre servicios en contenedores y clientes y servidores externos

Observar el comportamiento de los contenedores para detectar anomalías es generalmente más fácil en los contenedores que en las máquinas virtuales debido a la naturaleza declarativa de los contenedores y Kubernetes. Estos atributos permiten conocer de una forma más sencilla, lo implementado y su actividad esperada.

Recomendaciones

  1. Aprovecha la información contextual en Kubernetes : Utiliza la información de tiempo de compilación e implementación en Kubernetes para evaluar la actividad observada frente a la esperada durante el tiempo de ejecución a fin de detectar actividad sospechosa.
  2. Amplía el análisis de vulnerabilidades a las implementaciones en ejecución : Supervisa las implementaciones en ejecución para detectar vulnerabilidades Zero Day, además de analizar las vulnerabilidades que existen en las imágenes del contenedor.
  3. Utiliza los controles de ciberseguridad integrados de Kubernetes : Configura el contexto de ciberseguridad para los pods para limitar sus capacidades. Estos controles pueden eliminar clases enteras de ataques que dependen del acceso privilegiado
  4. Monitoriza el tráfico de la red para limitar las comunicaciones innecesarias o inseguras : Observa el tráfico de la red y compara ese tráfico con el permitido según las políticas de Kubernetes. Observar el tráfico de redes activas es una buena manera de comprender cómo las aplicaciones interactúan entre sí e identificar comunicaciones inesperadas. proyectos de código abierto como https://github.com/kinvolk/inspektor-gadget pueden ayudar con esto, y las soluciones de seguridad comercial brindan diversos grados de análisis del tráfico de la red de contenedores.
  5. Proceso de apalancamiento de listas permitidas : El proceso de usar listas blancas es una práctica probada para identificar procesos en ejecución inesperados. Primero, observa la aplicación durante un período de tiempo para identificar todos los procesos que se ejecutan en el curso normal del comportamiento de la aplicación, luego usa esta lista como su lista de procesos permitidos con el fin de comparar el comportamiento futuro de la aplicación.
  6. Compara y analiza diferentes actividades en tiempo de ejecución en pods : Las aplicaciones en contenedores se replican por motivos de alta disponibilidad, tolerancia a fallos o escala. Las réplicas deben comportarse de forma casi idéntica, las réplicas con desviaciones significativas de las demás justifican una mayor investigación y sospecha a priori.
  7. Integra la herramienta de ciberseguridad de Kubernetes con otros sistemas externos: Correo electrónico, PagerDuty, Slack, Google Cloud Security Command Center, SIEM , etc.) y aprovecha a alertar al equipo responsable de una aplicación determinada cuando se detecta una amenaza potencial. Los proveedores de seguridad comerciales de Kubernetes deben admitir una amplia gama de integraciones con herramientas externas.
  8. Utiliza los controles nativos de Kubernetes para contener una brecha de ciberseguridad : Indicar automáticamente a Kubernetes que escale los pods sospechosos a cero o elimine y luego reinicie las instancias de aplicaciones infringidas.

Ciberseguridad en infraestructuras Kubernetes

La ciberseguridad para Kubernetes, debe extenderse más allá de las imágenes y las cargas de trabajo y proteger todo el entorno, incluida la infraestructura del clúster.

  1. Actualiza Kubernetes : Siempre a la última versión sque sea posible. Recuerda que solo se admiten las últimas tres versiones de Kubernetes, incluidos los parches de seguridad para las vulnerabilidades recientes. Por lo tanto, si se descubre una vulnerabilidad alta para Kubernetes y tenemos cuatro versiones por detrás, nuestra versión no recibirá parche. ( Estos nos fuerza a estar siempre actualizados, o es la intención)
  2. Configura de forma segura el servidor API de Kubernetes : Asegúrate de deshabilitar el acceso no autenticado / anónimo y de usar el cifrado TLS ( mínimo 1.2 ) para las conexiones entre los kubelets y el servidor API.
  3. Asegura el kubelet : Como agente de nodo principal que se ejecuta en cada nodo, la configuración incorrecta de kubelet nos expone a un acceso de puerta trasera a través del mismo. Asegúrese de haber deshabilitado el acceso anónimo al kubelet ( iniciando el kubelet con la --anonymous-auth=falsebandera ) y usa NodeRestriction para limitar que el kubelet puede acceder.

Kubernetes incluye muchos más componentes, incluido el programador de kube, el administrador de controlador de kube, los archivos de configuración en el nodo principal y el nodo de trabajo, etc


Escáners para encontrar vulnerabilidades de seguridad y configuraciones incorrectas

Kube Hunter (Cazador de Kube)

Cazador de Kube es una herramienta de análisis de vulnerabilidades de Aqua Security para su clúster de Kubernetes. Esta herramienta es muy útil para aumentar la conciencia de seguridad de los clústeres de Kubernetes. Esta herramienta ofrece múltiples opciones de escaneo estándar como remoto, entrelazado, red para identificar las vulnerabilidades.

Tiene una lista de pruebas activas y pasivas que pueden identificar la mayoría de las vulnerabilidades presentes en un clúster de Kubernetes.



Kube Bench (Banco Kube)



Banco Kube es una de las herramientas de seguridad de calidad de código abierto que verifica si sus implementaciones cumplen con el estándar de seguridad de CIS (Center for Internet Security).

Es compatible con las pruebas comparativas para varias versiones de Kubernetes. Aparte de eso, también señala los errores y ayuda a corregirlos. Proporciona la solución para corregir los errores. Esta herramienta también verifica para garantizar que la autorización y autenticación del usuario sean adecuadas, que los datos estén encriptados de forma segura. Asegura que la implementación permitida permite el principal de CIS.

Checkov



Checkov es una herramienta de seguridad que se utiliza para evitar configuraciones incorrectas en la nube durante el tiempo de compilación de Kubernetes, Terraform, Cloudformation, marco sin servidor y otros lenguajes de infraestructura como código. Está escrito en Python y tiene como objetivo aumentar la adopción de seguridad y el cumplimiento de las mejores prácticas.

MKIT



MKIT son las siglas de Managed Kubernetes Inspection Tool. Esta herramienta lo ayuda a identificar rápidamente los riesgos de seguridad clave para los clústeres de Kubernetes y sus recursos. Tiene formas rápidas y fáciles de evaluar las configuraciones incorrectas en el clúster y las cargas de trabajo.

Kubei



Kubei se utiliza para evaluar los riesgos inmediatos en un clúster de Kubernetes. La mayor parte de Kubei está escrita en el lenguaje de programación Go. Cubre todos los puntos de referencia de CIS Docker.

Escanea todas las imágenes utilizadas por el clúster de Kubernetes, pods de aplicaciones, pods del sistema, etc. Obtiene múltiples opciones para personalizar el escaneo en términos de nivel de vulnerabilidad de interés, velocidad del escaneo, alcance del escaneo, etc. Con la GUI proporciona, puede ver todas las vulnerabilidades que encuentra en el clúster y cómo mitigarlas.

Kube Scan (Escaneo de Kube)



Escaneo de Kube es un escáner de contenedores que viene como contenedor en sí mismo. Lo instala en un nuevo clúster, después de lo cual escanea las cargas de trabajo que se están ejecutando actualmente en su clúster y le muestra la puntuación de riesgo y los detalles de riesgo en la interfaz de usuario web amigable. La puntuación de riesgo se clasifica de 0 a 10, 0 significa que no hay riesgo y 10 significa alto riesgo.

Kubeaudit



Kubeaudit, como sugiere el nombre, es una herramienta de auditoría de clústeres de Kubernetes de código abierto. Encuentra las configuraciones incorrectas de seguridad en los recursos de Kubernetes y le indica cómo resolverlas. Está escrito en el lenguaje Go para usarlo como paquete Go o como herramienta de línea de comandos. Puede instalarlo en su máquina usando brew con un solo comando.

Kubesec



Kubesec es una herramienta de análisis de riesgos de seguridad de código abierto para los recursos de Kubernetes. Valida la configuración y los archivos de manifiesto utilizados para la implementación y las operaciones del clúster de Kubernetes. Puede instalarlo en su sistema usando su imagen de contenedor, su paquete binario, un controlador de admisión en Kubernetes o un complemento de kubectl.


Fuentes:

https://ciberseguridad.blog/ciberseguridad-en-kubernetes/

https://geekflare.com/es/kubernetes-security-scanner/


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.