Saltar al contenido principal

11 publicaciones etiquetados con "docker"

Ver Todas las Etiquetas

Entornos de desarrollo remotos y gratuitos

· 5 min de lectura
Pablo Pérez-Aradros
CISO SecDevOps @ Santander Group

¡Hola! A raíz del curso de Docker que estoy realizando, algunos me habéis preguntado la posibilidad de seguirlo en Android o dispositivos móviles. Ya sea porque no tengamos un ordenador, los recursos necesarios para instalar docker, o simplemente, por no querer instalarlo en nuestro equipo, quería estudiar varias alternativas para montar un entorno de desarrollo remoto y totalmente gratuito.

Lo primero, es que podremos evitar depender de un dispositivo en concretos, esto es práctico si estamos en un entorno de trabajo donde no podemos instalar software, nos movemos mucho y no podemos llevar con nosotros nuestros ordenadores, o simplemente, no tenemos el hardware necesario para ejecutar ciertas aplicaciones.

Lo único malo es que dependeremos de una conexión a internet, aunque hoy en día, ¿qué no depende de internet? 😅

[SOLO VIDEO] En este vídeo, veremos github codespaces, gitpod y AWS EC2, tres opciones para montar un entorno de desarrollo, sus pros y sus contras. Si conoces alguna otra opción, ¡deja un comentario en el vídeo para que toda la comunidad pueda verlo!

Dentro la intro y pasamos a la práctica.

Dentro vídeo: #TODO: Insertar vídeo

Opciones

Github Codespaces

Github Codespaces es una herramienta que nos permite crear entornos de desarrollo en la nube, basados en Visual Studio Code. Es una herramienta muy potente, ya que podremos tener un entorno de desarrollo completo, con todas las extensiones que necesitemos, y todo en la nube.

Para poder usar Codespaces, necesitaremos una cuenta de Github y un repositorio público. Si no tenemos un repositorio, podremos crear uno en nuestra cuenta de Github.

Ya que te has creado una cuenta o has iniciado sesión en Github, podrías apoyar mi contenido siguiéndome en mi perfil de Github y dejando una estrella al repositorio de mi web/perfil. ¡Gracias! 😊

Una vez tengamos un repositorio, podremos acceder a Codespaces desde la pestaña "Code" de nuestro repositorio. Ahí, podremos crear un nuevo Codespace, y se nos abrirá un entorno de desarrollo en la nube.

Crear codespace

Estos entornos van potenciados por una máquina virtual, que por defecto, tiene 2 cores y 4GB de RAM. Además, trae preinstalado la mayoría de lenguajes de programación, y podremos instalar las extensiones que necesitemos. En este caso, si, también traerá Docker y podrás seguir el curso sin problemas.

Limitaciones, con una cuenta gratuita, solo podremos hacer uso de 120 horas al mes. Aunque, si tenemos una cuenta de estudiante, podremos hacer uso de Codespaces hasta 180 horas al mes. Todo esto, a día de la publicación de este artículo.

Límite codespaces

Ahora ya podrás hacer cualquier cosa, en cualquier dispositivo, aunque sea un móvil o tablet. Te recomiendo sacarle jugo a tu televisor, conectas teclado y ratón y a programar desde el sofá. ¡Es una gozada, aunque la espalda no lo agradezca! 😅

TODO: Recrear meme pulgares con airplay/samsung dex

Gitpod

Gitpod es una herramienta similar a Codespaces, pero con algunas diferencias. La principal, es que podremos usar Gitpod en cualquier repositorio, no solo en repositorios de Github.

Para usar Gitpod, necesitaremos una cuenta de Github, Gitlab o Bitbucket. Una vez tengamos una cuenta, podremos instalar la extensión de Gitpod en nuestro navegador, y podremos abrir cualquier repositorio.

gitpod

El punto negativo, es que VSCode esta limitado al no poder instalar la extensiones oficial de Microsoft de licencia MIT, las cuáles son la mayoría y lastra un poco la experiencia. (Bien jugado Microsoft, bien jugado).

Al igual que Codespaces, nos abrirá un entorno de desarrollo en la nube, con Visual Studio Code, y ojo, también podremos elegir entre los IDEs de la suite de JetBrains, como IntelliJ IDEA, PyCharm, etc.; o un simple terminal.

gitpod_vscode

En cuanto a las limitaciones, con una cuenta gratuita, podremos hacer uso de Gitpod durante 50 horas al mes. Si necesitamos más tiempo, podremos contratar una cuenta de pago.

AWS EC2

AWS EC2 es un servicio de Amazon que nos permite crear máquinas virtuales en la nube. Podremos crear una máquina virtual con las características que necesitemos, y podremos instalar el software que necesitemos.

Con una cuenta de amazon, podremos crear una instancia de EC2 gratuita siempre que sean las de tipo t2.micro o t3.micro y no superemos las 750 horas al mes. Además, esto solo será durante el primer año, después, tendremos que pagar por el uso de la instancia.

¡Importante! En AWS es obligatorio tener una tarjeta de crédito para poder crear una cuenta, aunque no se nos cobrará nada si no superamos las horas gratuitas. Aun así, es importante tenerlo en cuenta para evitar sorpresas.

Al igual que en los casos anteriores, podremos instalar Docker en nuestra instancia de EC2, y podremos seguir el curso sin problemas.

Dicho AWS, también podremos usar otros servicios como Google Cloud, Azure, Digital Ocean, etc. La mayoría de estos servicios tienen una capa gratuita de servicio, así que puedes elegir el proveedor que más te guste.

Conclusión

Como has podido ver, hay varias opciones para montar un entorno de desarrollo remoto y gratuito. Personalmente, me quedo con Codespaces, ya que es la opción más sencilla y potente. Además, al estar integrado con Github, es muy fácil de usar y no necesitaremos instalar nada en nuestro equipo ni configurar máquinas virtuales.

Aun así, si prefieres Gitpod o AWS, también son buenas opciones. Gitpod es muy similar a Codespaces, y AWS nos permitirá tener más control sobre nuestra máquina virtual.

Si aún así, las ves muy limitadas, siempre puedes utilizar una combinación de varios servicios.

¿Conoces alguna otra opción? ¡Déjame un comentario en Youtube!

¡Hasta la próxima! 👋

Ejecuta Mac OS en Docker

· 3 min de lectura
Pablo Pérez-Aradros
CISO SecDevOps @ Santander Group

Te preguntarás el sentido de ejecutar Mac OS en Docker, la respuesta corta es, why not?, la larga es, para probar aplicaciones, para probar configuraciones, para probar scripts, para probar lo que se te ocurra en macos sin tener un macos y de una forma más cómoda y rápida que una máquina virtual. Veamos como hacerlo.

Ejecuta Mac OS en Docker

Requisitos

  • Docker

Separaremos el proceso de instalación y preparación de requisitos en dos partes, una para linux y otra para windows, dado que el proceso difiere un poco y en windows hay que hacer pasos adicionales. En ambos necesitaremos tener instalado docker.

Si no tienes WSL activado en windows, en este vídeo te enseño como hacerlo: Linux en Windows en windows con WSL

Requisitos para linux

Referencia original: https://github.com/sickcodes/Docker-OSX?tab=readme-ov-file#initial-setup

Selecciona tu distribución y sigue los pasos.

# ARCH
sudo pacman -S qemu libvirt dnsmasq virt-manager bridge-utils flex bison iptables-nft edk2-ovmf

# UBUNTU DEBIAN
sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager libguestfs-tools

# CENTOS RHEL FEDORA
sudo yum install libvirt qemu-kvm

Por último, para todas las distribuciones activa libvirt y carga el módulo de KVM.

sudo systemctl enable --now libvirtd
sudo systemctl enable --now virtlogd

echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs

sudo modprobe kvm

Finalmente, elegimos la versión que queramos de Mac OS y ejecutamos el contenedor.


docker run -it \
--device /dev/kvm \
-p 50922:10022 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e "DISPLAY=${DISPLAY:-:0.0}" \
-e GENERATE_UNIQUE=true \
-e CPU='Haswell-noTSX' \
-e CPUID_FLAGS='kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on' \
-e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom-sonoma.plist' \
sickcodes/docker-osx:sonoma

# docker build -t docker-osx --build-arg SHORTNAME=sonoma .

Rquisitos para windows

Referencia original: https://github.com/sickcodes/Docker-OSX?tab=readme-ov-file#id-like-to-run-docker-osx-on-windows

Tenemos que instalar WSL2 y activar la virtualización anidada en WSL. Tengo un vídeo donde explico como hacerlo: WSL en Windows

Para activar la virtualización anidada, tenemos que crear un archivo ".wslconfig" en la carpeta de usuario con el siguiente contenido (por ejemplo, en C:\Users\usuario\.wslconfig:

.wslconfig
[wsl2]
nestedVirtualization=true

Dentro del subsistema de linux, instalamos los paquetes necesarios.

sudo apt -y install bridge-utils cpu-checker libvirt-clients libvirt-daemon qemu qemu-kvm

Ahora ya podríamos ejecutar el contenedor, con la diferencia de la ruta del volumen del servidor x11, que en windows es diferente.


docker run -it \
--device /dev/kvm \
-p 50922:10022 \
-v /mnt/wslg/.X11-unix:/tmp/.X11-unix \
-e "DISPLAY=${DISPLAY:-:0.0}" \
-e GENERATE_UNIQUE=true \
-e CPU='Haswell-noTSX' \
-e CPUID_FLAGS='kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on' \
-e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom-sonoma.plist' \
sickcodes/docker-osx:sonoma

# docker build -t docker-osx --build-arg SHORTNAME=sonoma .

Así de simple, ya tendríamos ejecutada nuestro contenedor con una máquina virtual de MacOS. También puedes usar el tag pre-instalado

Finalmente, solo quedaría instalar el sistema operativo y configurar MacOS a nuestro gusto.

Te dejo el proceso completo en el vídeo de youtube

Ejecuta Mac OS en Docker

Cracking de contraseñas con Hashcat

· 3 min de lectura
Pablo Pérez-Aradros
CISO SecDevOps @ Santander Group

¡Pon a prueba tus contraseñas, secretos y hashes!

Bueno, comenzaremos hablando sobre cómo se utilizan las contraseñas en nuestras actividades cotidianas. Desde el acceso a nuestros correos electrónicos hasta nuestras cuentas bancarias, las contraseñas juegan un papel crucial en la protección de nuestra información personal. Es verdad que todas las grandes compañias están trabajando en un nuevo estándar llamado passkey para que los usuarios finales no manejen credenciales, hablaré más adelante sobre esto.

En cualquiera de los casos, maneje o no contraseñas el usuario, los sistemas siempre manejan secretos para validar la autenticación y autorización de un usuario, una llamada a un API o la interacción que sea, a través de tokens de muchos tipos, entre los más destacados, JWT.

Ahora, hablemos sobre cómo se transportan y almacenan las contraseñas durante las llamadas HTTP u otros protocolos. Cuando introduces tu contraseña en un sitio web, esta se transforma en un hash antes de ser enviada, y se almacena en la base de datos del sitio web.

Pero, ¿qué sucede cuando los cibercriminales intentan robar o descifrar estos hashes o tokens? Utilizan una variedad de técnicas. El método más común es la ingeniería social, como el phishing, que implican manipularte para que les reveles tu contraseña, y es una de las más efectivas actualmente.

Otra vía, y la que quiero explorar hoy, es el uso de herramientas de cracking o recuperación de contraseñas, con el objetivo que ser capaces de poner a prueba nuestros secretos.

Como se obtienen los hashes

Un atacante puede obtener hashes de contraseñas de varias maneras. Por ejemplo, si un atacante obtiene acceso a una base de datos de contraseñas, puede extraer los hashes de las contraseñas almacenadas en la base de datos. También puede obtener hashes de contraseñas interceptando el tráfico de red o mediante la ingeniería inversa de aplicaciones.

Una vez que un atacante tiene un hash de contraseña, puede utilizar herramientas de cracking de contraseñas para obtener la contraseña original. Esto se hace comparando los hashes calculados con los hashes obtenidos, y cuando hay una coincidencia, la contraseña ha sido descifrada.

Hashcat

Hashcat es una de las herramientas más avanzadas en recuperación de contraseñas. Puede utilizar diferentes métodos de ataque para descifrar un hash de contraseña, incluyendo ataques de fuerza bruta, ataques de diccionario y otros. Funciona comparando los hashes calculados con los hashes obtenidos, y cuando hay una coincidencia, la contraseña ha sido descifrada.

Web oficial de Hashcat

Ejemplos

Para poner en práctica la herramienta he creado un vídeo en el que muestro cómo crackear diferentes tipos de hashes con diferentes métodos de ataque.

Cracking passwords with Hashcat