martes, 17 de octubre de 2023

Actualizando Registrator y simplificando el Registro de Servicios en Docker con Consul.

Actualizando Registrator y simplificando el Registro de Servicios en Docker con Consul.

En el mundo de la contenerización y la administración de microservicios, la gestión de servicios desplegados en múltiples contenedores puede convertirse en un desafío. Una de las herramientas que simplifica en gran medida este proceso es Registrator. En este artículo, exploraremos qué es Registrator y cómo funciona en conjunto con Docker Compose para facilitar el registro de servicios en un entorno de contenedores. Además, destacaremos una contribución importante al proyecto que mejora la seguridad.

¿Qué es Registrator?

Registrator es una herramienta diseñada para simplificar la tarea de registrar servicios en un clúster de contenedores Docker. Permite la detección automática de contenedores que se inician y la actualización de los servicios registrados en un servicio de descubrimiento, como Consul, etcd, ZooKeeper, entre otros. En este artículo, nos centraremos en su uso con Consul.

¿Por qué es importante el Registro de Servicios?

Cuando trabajamos con una arquitectura de microservicios, es fundamental que los servicios puedan descubrir y comunicarse entre sí de manera eficiente. El registro de servicios es un componente esencial para lograrlo. Cada vez que un servicio se inicia o se detiene, se debe actualizar el registro para reflejar estos cambios. Registrator automatiza este proceso, eliminando la necesidad de hacerlo manualmente.

El Papel de Docker Compose

Docker Compose es una herramienta que permite definir y ejecutar aplicaciones multicontenedor. Facilita la gestión de múltiples contenedores y sus interconexiones, lo que es esencial en un entorno de microservicios. Registrator se integra bien con Docker Compose, lo que simplifica aún más el registro de servicios en un clúster de contenedores.

Cómo Funciona Registrator

El funcionamiento de Registrator es relativamente sencillo. Cuando un contenedor se inicia en un sistema que ejecuta Registrator, este último detecta automáticamente el inicio del contenedor y obtiene su dirección IP y los puertos expuestos. Luego, Registrator se encarga de actualizar el servicio de descubrimiento (por ejemplo, Consul) con esta información. Esto permite que otros servicios en el clúster accedan al servicio recién registrado.

Configuración de Registrator con Docker Compose

Para configurar Registrator con Docker Compose, se debe definir un servicio Registrator en el archivo docker-compose.yml. Aquí hay un ejemplo de cómo podría verse esa configuración:

yaml
version: '3'services: app: image: mi-aplicacion:latest ports: - "8080:80" registrator: image: gliderlabs/registrator:latest command: "consul://mi-servicio-consul:8500" volumes: - /var/run/docker.sock:/tmp/docker.sock

En este ejemplo, el servicio registrator se ejecuta junto con la aplicación. Está configurado para registrar los servicios en Consul.

Ventajas de Utilizar Registrator

  • Automatización: Registrator automatiza el proceso de registro de servicios en un clúster de contenedores, lo que ahorra tiempo y reduce la posibilidad de errores humanos.

  • Integración con Docker Compose: La integración con Docker Compose facilita la configuración y el despliegue de Registrator en un entorno de múltiples contenedores.

  • Escalabilidad: Registrator es escalable y se adapta fácilmente a la creciente cantidad de contenedores en su clúster.

Contribución a la Seguridad

También es importante destacar que el autor de este artículo ha realizado una valiosa contribución al proyecto Registrator en GitHub. Un fork del proyecto original, disponible en GitHub, ofrece actualizaciones regulares de las versiones de los contenedores base utilizados en el proyecto, lo que contribuye a eliminar vulnerabilidades y mantener el software seguro.

Conclusión

Registrator es una herramienta poderosa que simplifica el registro de servicios en un entorno de contenedores Docker. Al trabajar en conjunto con Docker Compose, automatiza el proceso de registro y actualización de servicios en un clúster de contenedores, lo que es esencial en arquitecturas de microservicios. El uso de Registrator aporta automatización, simplificación y eficiencia a la gestión de servicios en contenedores, contribuyendo así a un entorno de desarrollo más ágil y escalable. Además, las contribuciones al proyecto en GitHub resaltan el compromiso con la seguridad y la mejora continua.

domingo, 16 de octubre de 2022

Pentesting desde un contenedor

 He hablado mucho de como hacer diversas acciones en docker y contenedores. Tampoco quiero que mi contenido sea monotemático pero me han lanzando una sugerencia de vídeo y no me puedo resistir a abordar el tema.

Concretamente, el usuario pwnhun73r me sugirió utilizar contenedores para pentesting en laboratorios como HackTheBox o TryHackMe. Gracias por el apoyo y la sugerencia. Tu también puedes sugerir nuevo contenido desde la sección de issues de esta página en GitHub.

Hace tiempo que no me dedico al pentesting profesionalmente pero tampoco me gusta que se me oxide el tema. Youtube es muy restrictivo con el contenido del hacking por lo que, para este vídeo, me limitaré a plantear el entorno sin entrar en la explotación.

¿Por qué?

Esta es la pregunta del millón… ¿Por qué?¿Cuál es la necesidad?. Realmente las máquinas virtuales para esta labor igual son más prácticas que un contenedor, tienes tus copias de seguridad, tu interfaz, puedes conectarles hardware cómodamente (antenas, cables, etc) y puedes configurar los servicios que necesites.

Para los fanáticos de los contenedores como yo, es por amor de llevar la tecnología al límite. Hay que reconocer que los contenedores tienen sus ventajas. Fáciles de ejecutar, versionar y almacenar. Suficiente para justificar este vídeo.


Retos

Tenemos dos retos a tener en cuenta basados en dos escenarios:

Contenedor para pentesting de un sitio web público

En este supuesto, accedemos a algún sitio público y queremos hacer pentesting. Para la parte de la enumeración no tendremos limitación alguna. El problema surge cuando queremos explotar un sitio. La mayoría de conexiones que intentaremos generar serán inversas y, por tanto, necesitaremos abrir puertos en el router.

Conexiones desde un contenedor a un servidor público



Supongamos que hacemos las pruebas desde un servidor público también, como un VPS. En este caso, no tendremos problema para abrir puertos. Aunque no todo queda ahí, tendremos que natear al contenedor un rango de puertos para que el servidor pueda acceder a los servicios que estemos ejecutando en el contenedor.

Imaginaros que estamos escuchando una conexión con netcat en el puerto 4444. Deberíamos ejecutar el contenedor con ese puerto mapeado del host para que podamos capturar las conexiones desde del contenedor.

Esto podemos hacerlo así:
docker run -it -p 4444:4444 kalilinux/kali-rolling /bin/bash
Bash

Contenedor para pentesting en un laboratorio privado

En este caso, la parte de acceso y enrutamiento es más sencillo dado que normalmente a los laboratorios de pentesting nos conectamos a través de una VPN, la cuál, nos crea un tunel directamente desde el contenedor al laboratorio.

Conexiones desde un contenedor a un laboratorio privado

La problemática viene por la parte del cliente VPN en los contenedores.

Limitaciones

La principal limitación es la acceso a las interfaces de red. En una máquina virtual virtualizas tanto software como hardware. En el caso de los contenedores, al ser procesos aislados, tenemos que lidiar con la problemática de crear interfaces de red para las VPN de algunos laboratorio.

Podemos levantar un contenedor con Kali Linux solventando estas limitaciones, usando el parámetro --privileged para que el contenedor tenga acceso a las interfaces de red del host y --sysctl net.ipv6.conf.all.disable_ipv6=0 para que el contenedor tenga acceso a la red IPv6.

El comando completo sería:
docker run -it --privileged --sysctl net.ipv6.conf.all.disable_ipv6=0 kalilinux/kali-rolling /bin/bash
Bash
Así ya podríamos conectarnos a HackTheBox, por ejemplo.

Vídeo

Sin más preámbulos, dentro vídeo:


martes, 9 de agosto de 2022

Potencia tu terminal Powershell

He de reconocer que no soy muy fan de powershell, es más, en ciertos momentos de mi vida he llegado a detestarlo. Tanto si te encanta powershell como si te ves forzado a usarlo, hay que reconocer quees muy mejorable.

En el anterior vídeo vimos el proceso de potenciar el terminal en entornos unix y linux mediante zsh y oh-my-zsh. Aquí la entrada al blog y enlace al vídeo

Para esta ocasión, abordaremos el tema en sistemas windows utilizando oh my posh. OMP nos ofrece características, que a día de hoy considero indispensables, como:

  • Auto completado
  • Navegación simplificada
  • Información avanzada
  • Personalizacion con múltiples temas

Dentro vídeo:

Todos los comandos del vídeo y enlaces están en la siguiente página:

Documentación: /docs/windows/oh_my_posh

martes, 29 de marzo de 2022

Escapar de contenedores Docker - Principales malas configuraciones

 Los contenedores son procesos aislados que, por defecto, ¿se podrían considerar como seguros?. Su enfoque nos dice que sí pero existen muchos casos en los que, principalmente por malas configuraciones, podrían ser vulnerables.


Aislados pero no herméticos

Tecnologías de contenedores como Docker, LXC, LXD, etc.. permiten a los usuarios lanzar un proceso aislado pero, existen multiples funcionalidades, que podrían comprometer la aplicación en mayor o menor medida.

Documentación


En este vídeo trato las principales malas configuraciones que permiten a un atacante escapar de un contenedor:




Principales malas configuraciones:

  • Montaje de volúmenes
  • Ejecución en modo privilegiado
  • Escalado a través del grupo de docker
  • Host vulnerable
  • Secretos o variables de entorno
  • Montaje del socket
  • Segregación de redes


martes, 4 de enero de 2022

Os hablamos de las Becas Google , como presentarse y los importantes cambios.


 Este año Google repite con sus becas para el verano, pero hay que presentarse ahora, este año hay importantes cambios, sobretodo en el perfil de las personas que se pueden presentar.

No te pierdas  nuestro streaming para conocer como presentarse o aclarar dudas.

Estes 6 de enero a las 18:00 en nuestro canal de youtube.

Programa de Becas de Google GSOC. https://youtu.be/AEs-jvs425g a través de @YouTube

jueves, 30 de diciembre de 2021

Potencia tu terminal en MacOS, Linux y WSL con ZSH

¡Hola a todos!

En esta ocasión veremos como mejorar las capacidad de tu terminal para que os sea más útil si cabe. Por defecto, la mayoría de terminales unix vienen con bash y, sin faltarle al respeto, esta muy lejos de todo lo que zsh puede hacer por tí.

En este vídeo veremos su instalación, configuración y mejores características que te ayudarán en tu día a día:



Además, en mi web personal tenéis la documentación por escrito con algunos enlaces y comando.

Zsh | Pabpereza


¡Espero que os sea útil y lo disfrutéis!

miércoles, 17 de noviembre de 2021

Linux es todo lo que Windows necesita

 El subsistema de linux en windows nos permite ejecutar nuestras herramientas de desarrollo o sistemas favoritas sin complicaciones

El subsistema de linux en windows se introdujo hace unos años en windows 10 pero sus primeras versiones tenían ciertas limitaciones y no acababa de funcionar como se esperaba. Personalmente, con WSL2 y Windows 11 creo que ha llegado a ofrecer el funcionamiento que realmente se esperaba de el. Dentro vídeo:

Ventajas y desventajas

En el vídeo analizo las principales ventajas que ofrece y alguna que otra desventaja por el camino. Los principales puntos a destacar son:

  • El consumo de memoria es inferior al de una máquina virtual. Aunque mayor que una solución nativa, windows virtualiza un kernel linux que aprovechan y comparten las distintas distribuciones del subsistema.
  • También sirve backend para aplicaciones como Docker Desktop o Rancher Desktop haciendolos más livianos que usándolos sober hyper-V.
  • La integración con windows terminal es sencilla. Además, este nuevo terminal nos ofrece una interfaz limpia, personalizable y con una multitarea que ya le hacía falta. Nose vosotros pero a mi me encanta.
  • Simplicidad en el uso de varios entornos, instalación, reseteo o borrado.
  • La integración con VS Code de forma bidireccional es algo que me encanta. Ya no me molesto en instalar los lenguajes de programación o las herramientas de sistemas en windows, prácticamente todo lo uso sobre una distribución u otra en función de lo que necesite.
  • Montaje del sistema de archivos. Aunque el acceso es más lento al ser dos sistemas de archivos diferentes, windows nos monta nuestro home (c:/users/pablo) en cada uno de los subsistemas.
  • Integración de los sistemas de archivos de las distribuciones en el explorador de windows.

Integración de los sistemas de archivos de las distribuciones en el explorador de windows.

Espero que os guste y os anime a sacarle más partido a las herramientas que nos ofrece windows. ¡Hasta el próximo!

martes, 26 de octubre de 2021

Rancher Desktop una alternativa real a Docker en Windows y Mac.


Ya estuve explicando en este artículo los nuevos planes de Docker Desktop y como afectaría a los usuarios. Aunque existen otras alternativas como Buildah o Podman, estas, solo funcionan sobre linux y si sois usuarios de Windows o Mac y pensais en montar una máquina Linux quizá prefiráis usar docker engine por la familiaridad que no usar otras herramientas.



¿Qué es rancher desktop?

Si vienes del mundo de kubernetes seguro que Rancher te es familiar. Este es una plataforma de kubernetes con una capa de gestión persado en la facilidad de despliegue y gestión de clústers.
En esta ocasión, rancher destkop es una forma de acercarse a los desarrolladores y competir directamente con docker en el escritorio.

¿Qué aporta?

El planteamiento es similar al de Docker Desktop, gestiona automáticamente la instalación de una interfaz de usario, el engine de contenedores (containerd), k3s (la misma técnología que utiliza rancher para kubernetes), kubectl… etc y todo este paquete en una instalación sencilla.

Panel de control de rancher desktop en Mac

Si has visto el vídeo Rancher Desktop, al menos en Windows, tiene algunos pequeños errores. Cabe recordar que su estado de desarrollo es pre-release y es normal que durante sus betas encontremos errores que nos impidan utilizarlo a día de hoy.

jueves, 16 de septiembre de 2021

¿Docker desktop de pago? Como te impacta y alternativas



Analizamos los últimos cambios de Docker Desktop, como afectarán al usuario y las posibles alternativas.

La empresa Docker anunció la semana pasada los cambios en su modelo de negocio empresarial y sus nuevos planes de subscripción para empresas.

Hasta el momento, la empresa ha sabido posicionarse como una de las más importantes en el mundo de la tecnología pero sin generar ningún tipo de ingreso.

Las nuevas versiones tendrán ciertas restricciones que forzarán a algunas empresas a utilizar las modalidades de pago.



Planes de precios de Docker

Con el precio, todo hay que decirlo, ganamos muchas funcionalidades como SSO, escaneos de seguridad, builds en la nube, colaboración entre equipos… etc. Podéis ver una lista completa de las funcionalidades en la página de Docker.

¿Quién tiene que pagar?

Las empresas que tengan más de 250 empleados o unos ingresos anuales de 10 millones de dólares deberán utilizar los planes profesionales, de equipos o de empresa. Para dar margen a mediadas y grandes empresas, que son las principales afectadas, se dará un periodo de gracia hasta el 31 de Enero de 2022.

Seguirá siendo totalmente gratuito en los siguientes casos:
  • Pequeñas empresas con menos de 250 empleados y menos de 10 millones de dólares de ingresos anuales.
  • Uso personal.
  • Instituciones educativas.
  • Proyectos no comerciales open-source.

¿Qué alternativas tengo?


Estas nuevas políticas solo afecta a la versión de Docker Desktop, es decir, a la versión de Windows y Mac. En linux se utiliza Docker Engine al cuál no se le aplican estas restricciones.

Además, docker no es la única forma de construir contenedores. Existen otras tecnologías como podman o buildah que también nos permiten construir imágenes sin requerir un docker engine aunque estas también solo estan disponibles en Linux.

martes, 31 de agosto de 2021

Errores comunes en la construcción de imágenes Docker

 

Docker se esta volviendo una herramienta fundamental en la mayoría de proyectos de desarrollo de software actuales. Junto a sus bondades, la versatilidad que ofrece a los desarrolladores para definir parte de la infraestructura y la facilidad de paquetizar el software, van ligados otros procesos que pueden lastrar los proyectos o causar más riesgos de seguridad.

En mi último vídeo trato los errores más comunes que se suelen producir al construir imágenes con Dockerfiles.



El vídeo comienza con una explicación del sistema de capas y caché de docker, seguido consejos de mejora. Estos principalmente se centrar en optimización, buena praxis y seguridad:

  • Orden de construcción
  • Copias específicas
  • Agrupar instrucciones
  • Docker ignore
  • Tags específicos
  • Actualizar la imagen base
  • Definir el espacio de trabajo
  • Multi-stage
Para finalizar, hago una introducción a la herramienta Hadolint que nos ayudará de una forma muy completa y sencilla a analizar nuestros dockerfiles con decenas de reglas de buenas practicas y seguridad.