Crea y comparte backups en docker

En docker, podemos utilizar volúmenes para persistir datos incluso cuando los contenedores se destruyen. Estos volúmenes eran complejos de administrar en muchas circunstancias, por lo que docker ha creado una nueva funcionalidad para docker desktop, que nos permite crear backups de los volúmenes y compartirlos con otros usuarios de una forma sencilla.

Docker backups

¿Cómo funciona?

Docker desktop empezó a ofrecer extensiones hace unos meses. Estas extensiones nos permiten añadir funcionalidades a docker desktop, como por ejemplo, gestión visual de logs, uso de disco, herramientas de desarrollo, seguridad, etc.

Tengo un vídeo en youtube hablando de las extensiones de docker desktop, si quieres saber más sobre ellas.

En este caso, la extensión que nos interesa es la de Docker Backup. Esta extensión nos permite crear backups de los volúmenes de docker y compartirlos con otros usuarios de diferentes formas. Dentro vídeo:

Comandos utilizados

Crear el contenedor de postgresql para las pruebas:

docker run --hostname=cb8f628fbe6d --mac-address=02:42:ac:11:00:02 --env=POSTGRES_PASSWORD=postgrespw --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/postgresql/15/bin --env=GOSU_VERSION=1.14 --env=LANG=en_US.utf8 --env=PG_MAJOR=15 --env=PG_VERSION=15.1-1.pgdg110+1 --env=PGDATA=/var/lib/postgresql/data --volume=/var/lib/postgresql/data -p 5432 --label='com.docker/featured-image=postgres:latest' --runtime=runc -d postgres:latest

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

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

Así ya podríamos conectarnos a HackTheBox, por ejemplo.

Vídeo

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

Potencia powershell

Potencia la terminal de tu sistema operativo y enamórate de ella.

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/

Escalar privilegios en docker

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: /docs/pentesting/privilegios/contenedores

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

Raspberry Pi Touchscreen 7

Montaje e instalación de una pantalla táctil de 7 pulgadas en un Raspberry Pi 4

Las raspberry pi son de las computadoras más versátiles y asequibles que puedes encontrar en el mercado. Además, dada su popularidad, tienen una gran cantidad de software específico (pihole, piretro… etc) que ayudará a darle un sinfín de usos y, por otra parte, tiene muchos accesorios que la potenciarán aún más si cabe.

Concretamente me refiero a la pantalla táctil de 7 pulgadas que se puede montar en cualquier raspberry pi. Esta se puede utilizar para crear un consola portátil, control industrial, etc.

Raspberry touchscreen 7 pulgadas

Instalación y configuración

En este vídeo he detallado el proceso de instalación y configuración de la pantalla táctil.

Pero, ¿y la carcasa?

En la pantalla oficial no viene incluida una carcasa que proteja la parte trasera de la pantalla y la raspberry. Podemos comprarlas por precios entre 10-20€, aunque, si eres maker o tienes una impresora 3D, en la web de thingiverse podrás encontrar una gran variedad de modelos para hacértela tu mismo.

Potencia tu terminal

Potencia la terminal de tu sistema operativo y enamórate de ella.

Hola y bienvenidos a un nuevo vídeo en el que hablaremos de zsh y un framework llamado oh-my-zsh. Estos te permitirán personalizar el terminal para adaptarlo a tus gustos y necesidades. Espero que después de este vídeo termines amándolo y usándolo más a menudo.

Dentro vídeo:

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

Documentación: /docs/linux/zsh/

Errores comunes en Git

Errores más comunes en git y como solucionarlos

Hola y bienvenidos a una nueva entrada del blog. En este artículo se explicarán los errores más comunes en git y como solucionarlos.

Logo de git

Git es un sistma metódico de control de versiones, que permite almacenar una serie de cambios en un repositorio de código fuente. Durante los procesos de desarrollo es muy habitual que se cometan ciertos errores al trabajar con git. No pasa nada, es normal y más cuando se esta aprendiendo.

En este vídeo comento los que considero más comunes pero no dudes en contribuir si se te ocurre algún error que no se haya explicado. Todos los comandos los puedes encontrar en la documentación por escrito. Para todo lo demás, dentro vídeo:

Linux en Windows - Windows Subsystem Linux

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!

Kali en Docker recopilación

Como crear tus propias imágenes, dockerfiles y usarlo con interfaz gráfica

Unas semanas antes de la creación de esta web había hecho una trilogía de vídeos hablando de como utilizar el sistema operativo Kalilinux en Docker. Por dejarlos aquí archivados de alguna manera y dejar la documentación por escrito he optado por escribir esta entrada.

Ventajas y desventajas de utilizar Kalilinux en Docker

Bueno, yo creo que si conoces la tecnología docker la respuesta es simple. Puedes tener imágenes ligeras, con las herramientas que necesitas, preparadas para ejecutar muy rápidamente. Tambien puedes gestionarlas con un repositorio remoto y transportarlas fácilmente entre distintos entornos.

Pero como todo, tiene sus grandes inconvenientes. Las imágenes de docker no tienen acceso directo al hardware y eso puede lastrar un poco el rendimiento, concretamente si necesitamos la tarjeta gráfica en operaciones de computación como el cracking de contraseñas.

En la propia página de Kali se puede ver la comparativa completa con todas sus opciones:

Comparativa de las distintas opciones de Kalilinux.

Vídeos explicativos

La alternativa a Docker que estabas buscando - Rancher Desktop

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.

Rancher Desktop se posiciona como una alternativa a tener en cuenta. Dentro vídeo

¿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 pensado en la facilidad de despliegue y gestión de clústers.

En esta ocasión, rancher desktop 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 tecnologí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.

La alternativa definitiva

Como ya comentaba, una solución 100% efectiva es instalar docker en una máquina virtual de linux. Esto lo podríamos hacer manualmente pero, puestos a hacerlo, mejor hacerlo bien.

Un viejo compañero con alias Yohnah en Github ha creado un repositorio con automatismos y una máquina virtual preparada para desplegar automáticamente con Vagrant. La máquina virtual viene con docker instalado y listo para funcionar, además, el automatismo deja el host configurado para que utilice el docker engine de la máquina virtual de una forma similar a la que lo hace docker desktop. Toda la guía aquí: https://github.com/Yohnah/Docker

¡Hasta el siguiente!

Analizar la seguridad de las imágenes de Docker

En anteriores vídeos he hablado acerca de la seguridad a la hora de crear imágenes pero hay un aspecto más crítico y fundamental que se suele obviar al construir imágenes. Estas, contienen software en forma de librerías del sistema que también pueden ser vulnerables. Pero, ¿como podemos revisar esa seguridad?

¿Qué riesgos de seguridad hay en las imágenes de Docker?

Cuando construimos imágenes de Docker siempre partimos de una imagen base, que es la que se usa para construir las imágenes que queremos. Esta imagen base puede ser una imagen de una distribución Linux, o de una imagen de una aplicación. Estas imágenes pueden contener código de una aplicación, librerías, paquetes, etc. Todo el código que se encuentre en estas imágenes puede ser vulnerable a ataques de seguridad.

¿Que herramientas podemos usar para analizar la seguridad de las imágenes de Docker?

Existen multitud de herramientas que pueden ser útiles para analizar la seguridad de las imágenes de Docker. Las más destacadas son:

  • Trivy
  • Anchore
  • Clair

Para este vídeo y evitar instalar nada, hemos utilizado el escáner que viene incorporado con Docker en las últimas versiones. Se puede ejecutar con el siguiente comando:

docker scan <nombre de la imagen>

Iré documentando el uso de diferentes herramientas de análisis de seguridad en la siguiente pagína de la documentación: Escaneo de seguridad en contenedores

¿Docker desktop de pago?

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 medianas y grandes empresas, 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.