Artículo · Pentesting a Aplicaciones Web

Portainer es una herramienta web open-source: Gestor Web para Docker

Javier CandiaJavier Candia 4 min de lectura

INTRODUCCIÓN

En los últimos años, las tecnologias de irutalizacioon de servicios y plataformas ha tomado poder en el mundo de las implementaciones. Uno de ellos es Docker, el cuál nos permite automatizar el despliegue de aplicaciones dentro de contenedores de software. A grandes ragos, Docker permite meter en un contenedor (un entorno cerrado) aquellas cosas que mi aplicación necesita para ser ejecutada (java, Maven, tomcat…) y la propia aplicación. Ese contenedor puede llevarse a cualquier máquina que tenga instalado Docker y ejecutar la aplicación independientemente de qué sistema operativo es, de si son compatibles o no.

 

Gracias a esta gestión independiente y muchas otras características, es que Docker ha ganado terreno, tanto que algunas ofertas de trabajo ya solicitan gente especializada en contenedores.

 

Es por esto que les doy a conocer una plataforma que conocí hace unos meses y me ha ayudado un monton a facilitar la implementación y creación de contenedores Docker. Aquí es donde entra Portainer, que ya cuenta con su última versión lanzada hace unos dias, la versión número 1.24.1

 

INSTALACION PORTAINER - UBUNTU 18.04

Portainer, entendamos que entra en este mundo de los contenedores, siento este un contenedor, o mejor dicho, contenido este en un contenedor (que redundancia). Por ende y por obviedad, antes de instalar y usar Portainer, es necesario instalar Docker en nuestros equipos.

NOTA: Para las pruebas actuales, se utilizará una máquina con Linux Ubuntu 18.04.

Instalación Docker

Como tiene que ser costumbre, antes de instalar algún paquete, nos aseguraremos que nuestro servidor esté actualizado:

# apt update
# apt upgrade

Superada las tareas iniciales, instalaremos los paquetes necesarios para poder instalar Docker:
# apt install apt-transport-https ca-certificates curl software-properties-common

Añadimos la clave GPG oficial de Docker:

# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Activamos el repositorio de Docker y lo actualizamos:

# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# apt update

Ahora, instalamos la última versión de Docker en nuestro sistema:
# apt install docker-ce

 

Deploy Contenedor: Portainer

Como deciamos al principio del artículo, Portainer es un contenedor, por ende lo instalaremos como tal. Para la implementacion del contenedor, ejecutaremos los siguientes comandos en la máquina Linux:

# docker volume create portainer_data
# docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

 

Nota: Para el uso de Portainer, necesitamos asegurar y abrir el puerto 9000 en nuestro firewall local. 

Con el comando #docker ps validamos la ejecucion del contenedor recien creado. Ahora accederemos vía navegador a la siguiente URL:

http://<IP>:9000

 

Evidencia 01 - Ejecucion Container

 

Portainer: Primeros Pasos

Al acceder vía web por primera vez nos pedirá configurar la contraseña del usuario administrador, tal y como se muestra en la imagen:

 

Una vez ya hemos configurado esa parte, en el siguiente paso ya podemos ver la interfaz de Portainer propiamente dicha.

Vemos en la imagen que solo tenemos un nodo de Docker, que es el primario. Además, nos da la información de sus volúmenes, imágenes y contenedores, tanto los que están parados como los que funcionan.

Si marcamos sobre el nodo primario se nos mostrará el siguiente panel de control:

La verdad es que este producto da para realizar prácticamente todo.

A partir de la versión 1.12 de Docker, es muy sencillo hacer un clúster formado por varios Docker Hosts mediante lo que se conoce como un "Swarm" Mode.

Swarm es ahora parte integral del engine y no tendremos que instalar elementos adicionales. Además, se han incluido nuevas funcionalidades como escalado, balanceo de carga y rolling updates, todo ello completamente integrado en la instalación de Docker.

En un clúster de Swarm existen dos tipos de nodo: Manager y Worker.

Los nodos Manager son los encargados de gestionar el clúster. Entre todos los Manager se elige automáticamente un líder y éste es el encargado de mantener el estado del clúster.

Los Manager son también los encargados de distribuir las tareas o tasks (unidades básicas de trabajo) entre todos los nodos Worker, los cuales reciben estas tareas y las ejecutan.

Los nodos Manager por defecto también actúan como nodos Worker aunque se puede cambiar su configuración para que sólo asuman tareas de Manager.

 

 

Portainer aún no permite la gestión core de los nodos; tareas unir o cambiar de role no son posibles aún, pero sí podemos visualizar los nodos y su estado. Nada nos dice que esto no este disponible para una nueva actualización. 

De aquí las posibilidades son infinitas, desde crear STACKS directamente, permitiendo el uso de variables, carga de configuraciones personalizadas y personalizacion de redes.

 

Bienvenidos a probar Portainer y hacerme llegar sus comentarios acerca de esta poderosa herramienta!

Veremos más adelante, más artículos de Portainer y como ir gestionando cada artilugio de este gestor.

 

Referencias 

 

¿Quieres aprender estas técnicas en profundidad?

Continúa tu ruta con Web Application Testing.

Javier Candia

Escrito por

Javier Candia

Analista Ciberseguridad

Ingeniero en Redes, caminando por los caminos de la ciberseguridad.

Sigue leyendo

Sqlmap - ejemplo con metasploitable2
Pentesting a Aplicaciones Web

Sqlmap - ejemplo con metasploitable2

MMartin Frias

Hola, soy Martin Frias y en esta vez hablaré un poco sobre Sqlmap, Sqlmap es una herramienta que permite automatizar las inyecciones sql. La inyección sql es una vulnerabilidad que nos permite la inyección de código sql para que pueda ser ejecutado e interpretado y así obtener información de la base de datos, información a la que normalmente no deberíamos tener acceso, yo recomiendo fuertemente aprender lenguaje sql, para poder saber hacer inyecciones slq de forma manual, de manera que  si vas a usar herramientas automatizadas como sqlmap, por ejemplo, que sea por ahorrar algo de tiempo, porque siempre es mejor saber qué está haciendo un herramienta por detrás, no solo escribir un comando y no saber exactamente qué acabamos de hacer.

Evil Limiter
Pentesting a Aplicaciones Web

Evil Limiter

Erik Garcia

Si se encuentra con un compañero de cuarto que acapara el ancho de banda de datos limitado con videojuegos o descubre que un vecino se ha invitado a su red Wi-Fi, puede recuperar fácilmente el control de su acceso a Internet. Evil Limiter hace esto al permitirle controlar la velocidad de bits de cualquier dispositivo en la misma red que usted, lo que le permite reducir o incluso detener la velocidad de transferencia de datos por completo.

Instalación y configuración para ambiente de laboratorio de Pentest controlado por vpn y usando Docker Compose
Pentesting a Aplicaciones Web

Instalación y configuración para ambiente de laboratorio de Pentest controlado por vpn y usando Docker Compose

EElzer Pineda

En la actualidad para desarrollar un laboratorio de pentesting debes contar con una infraestructura propia, por lo general en todos los cursos de pentesting o ethical hacking hacen referencia a máquinas virtuales utilizando virtualbox, vmware o algún otro hypervisor lo que requiere de equipos físico o hierro y sino  involucra la compra de diversas membresías en sitios famosos como Hack The Box o vulnhub y otros.