Está en la página 1de 8

PRÁCTICA-1: Protegiendo una infraestructura privada basada en contenedores

Instalar y configurar el sistema Docker Engine en una máquina virtual creada según las
especificaciones indicadas en el apartado “Requisitos previos”. Demostrar su correcto
funcionamiento con la creación de un contenedor de la imagen “hello-world” sin requerir
escalar privilegios de root para el usuario actual, es decir, sin uso del comando “sudo”.

Se procede a instarlar y actualizar los paquetes instalados.

Se puede comprobar si Docker está correctamente instalado y funcionando. Para ello, se ejecuta
un contenedor de ejemplo llamado hello world.
Para no utilizar el comando sudo para trabajar con Docker añadimos nuestro usuario, en mi caso
jteneu para acceder al socker al cual pertenece el usuario root.

Luego se comprueba que se tiene que simplemente poner el comando Docker para poder
realizar alguna función.
Crear una página HTML estática simple donde se aprecie el nombre de usuario de la
UOC como evidencia para utilizarla más adelante.
Generar una nueva imagen Docker con el servidor web NGINX donde se publique la
página estática creada anteriormente.

La nueva imagen Docker creada deberá realizarse mediante un Dockerfile con las
siguientes características:
● Partir de la imagen base del sistema operativo “ubuntu:latest”

Procedemos a realizar la instalación de la imagen Ubuntu, con el siguiente comando

Donde nos aparecerán las imágenes instaladas

Para luego acceder con esa imagen al contenedor

● Actualización de las librerías del sistema.

Para poder actualizar las librerías correspondientes accedemos al contenedor con el siguiente
comando

● Instalación del software NGINX. IMPORTANTE: No partir de la imagen pública


“nginx” del repositorio Docker Hub.
Para poder realizar la instalación de NGINX podemos hacerlo mediante spt install, donde nos
descargará la última versión del software.

Y así podemos al final verificar que el sistema está instalado correctamente

● Despliegue del contenido HTML estático generado anteriormente en una URL de


NGINX a elegir. La página HTML deberá estar incrustada en la imagen Docker
generada.

Una vez instalado se crea un archivo html en el directorio por defecto que tiene nginx , donde
creamos un dominio y el cuerpo del archivo donde ira nuestro nombre de usuario.

Una vez creado el usuario lo anclamos a la carpeta de sitios disponible y aquellos que están
permitidos.
3. Arrancar un contenedor basado en la imagen generada anteriormente con las siguientes
características. El uso de Docker Compose es OPCIONAL:
● Limitar los recursos del contenedor a un uso del 60% de una CPU y 1 GB de RAM de la
máquina anfitriona.

● Especificar que el contenedor se arranque en caso de reinicio de la máquina anfitriona.

● El contenedor deberá pertenecer a una nueva docker network específica para el


ejercicio. Exponer el puerto principal del servidor web (8080) para que sea accesible desde
el navegador web de la máquina anfitriona.
Para poder exponer el puerto 8080 utilizamos la bandera -p

● El contenedor debe quedar en ejecución en segundo plano (modo daemon).


Para la ejecución del segundo plano tomamos la bandera -d

5. Arrancar un contenedor basado en la imagen generada anteriormente con las siguientes


características. El uso de Docker Compose es OPCIONAL:
Se crea una nueva imagen para poder utilizar los volúmenes.
Limitar los recursos del contenedor a un uso del 20% de una CPU y 512MB de RAM de la
máquina anfitriona.
Se procede a delimitar los recursos.

● Especificar que el contenedor se arranque en caso de reinicio de la máquina anfitriona.

El contenedor deberá pertenecer a la misma docker network creada en el ejercicio


anterior para que ambos contenedores puedan tener conectividad. Exponer el puerto
principal del servidor web (80) para que sea accesible desde el navegador web de la
máquina anfitriona.
Al igual que en el anterior paso, se procedió a exponer el puerto 80 como el principal.

Montar los archivos con información de usuarios y contraseñas en el contenedor a través


de volúmenes. Estos archivos deberán permanecer en la máquina anfitriona.
IMPORTANTE: El volumen montado deberá ser READ-ONLY para evitar que el
contenedor pueda modificar su contenido.
Aquí demostramos que el volumen permanecerá en la máquina anfitriona y procederá a realizar
la recopilación de usuarios y contraseñas.

● El contenedor debe quedar en ejecución en segundo plano (modo daemon).

6. Analizar las vulnerabilidades de seguridad de la imagen generada anteriormente en el


ejercicio 2.

● Parsear la información del análisis “docker scan” (formato JSON) y mostrar por
pantalla un resumen de las vulnerabilidades de la categoría seleccionada por
parámetro de entrada y que afectan a la librería "glibc".
● Utilizar el sistema nativo “docker scan” para el análisis de vulnerabilidades.
Para poder realizar el análisis de las vulnerabilidades, tenemos que registrarnos en Docker,
creando un usuario y contraseña.

● Solicitar por parámetro de entrada del script la categoría de las vulnerabilidades a


mostrar: Medium o High. Ignorar en todos los casos el análisis de vulnerabilidades de tipo
Low.

Luego de esto no logeamos desde la terminal, creamos un servidor para poder subir nuestra
imagen a analizar.

En este caso subimos la imagen creada anteriormente y se verifican las vulnerabilidades dadas.
Se pueden filtrar las vulnerabilidades dependiendo de su estado, en este caso se filtro por
severidad alta.

También podría gustarte