View the Project on GitHub MarcusRojasPacheco/CIBERSEGUIRDAD_22-23
Docker-bench es un script bash para probar la configuración de seguridad de los sistemas que ejecutan contenedores Docker. Verifica que se sigan una serie de recomendaciones y mejores prácticas para la seguridad del contenedor Docker y hace recomendaciones para mejorar la seguridad.
Tenemos que descargar el DOCKER BENCH, vamos a descargar el Script que esta en Git
git clone https://github.com/docker/docker-bench-security.git
cd $_
./docker-bench-security.sh
Ahora vamos a ejecutar el script con el siguiente comando.
sh docker-bench-security.sh
Se observa que nos sales unos errores al ejecutarlo, simplemente por no tener reglas a los ficheros y a los directorios que en Docker recomienda ya que esta puesta las reglas por defecto, con lo cual vamos a descargar otro programa para lograr esa seguridad.
Auditd es un sistema de auditoría para realizar un seguimiento de los cambios en el sistema operativo y el sistema de archivos. Se utiliza para registrar y monitorear la actividad del sistema, como inicios de sesión, accesos a archivos y cambios en la configuración de seguridad. Los registros generados por auditd se pueden usar para detectar e investigar posibles incidentes de seguridad. Es una herramienta importante para auditar y monitorear la seguridad del sistema.
Ahora vamos a instalar auditd con el siguiente comando.
sudo apt-get install auditd
Ahora vamos a editar el fichero /etc/audit/rules.d/audit.rules
-w /usr/bin/docker -p wa
-w /var/lib/docker -p wa
-w /etc/docker -p wa
-w /lib/systemd/system/docker.service -p wa
-w /lib/systemd/system/docker.socket -p wa
-w /etc/default/docker -p wa
-w /etc/docker/daemon.json -p wa
-w /usr/bin/docker-containerd -p wa
-w /usr/bin/docker-runc -p wa
-w /run/containerd -p wa
-w /etc/containerd/config.toml -p wa
-w /usr/bin/containerd -p wa
-w /usr/bin/containerd-shim -p wa
-w /usr/bin/containerd-shim-runc-v1 -p wa
-w /usr/bin/containerd-shim-runc-v2 -p wa
-w /usr/bin/runc -p wa
Como vemos se va indiciar que -w nos indica que el fichero deber ser auditado por el programa instalado y que -p wa indica que se debe generar logs ante cualquier modificado en dichos ficheros o en el directorios.
Ahora vamos a reiniciar el servicio para aplicar los cambios
sudo service auditd restart
Como se ve que se ha cambiando, ya que tenemos los directorios auditados, pero aun vemos que tiene algunos errores, que ahora vamos a configurar los fichero para poder corregirlo.
Vamos arreglar los siguientes errores:
2.14: Vamos a usar el parametro “userland-proxy”: false para poder solucionar el error.
Indica que el derecho del contenedor a obtener nuevos permisos no está restringido.
En Docker, los contenedores se ejecutan con privilegios y permisos específicos necesarios para realizar tareas específicas. Sin embargo, es importante limitar estos privilegios para evitar ataques o errores que puedan comprometer la seguridad del sistema.
2.16: Vamoa a usar el parametro “no-new-privileges”: true para poder solucionar el error.
Indica que el proxy de usuario no está desactivado.
El proxy de usuario es una funcionalidad en Docker que permite que los contenedores se comuniquen con otros servicios y redes. Sin embargo, el uso del proxy de usuario puede ser un riesgo de seguridad, ya que puede permitir que los atacantes redirijan el tráfico de red y comprometan la seguridad del sistema.
Ahora en algunas opciones puede fallar, simplemente por no esta disponibles, por lo que si no se levanta el servicio de Docker, con lo cual vamos a crear un fichero en /etc/docker/daemon.json.
{
"icc": false,
"userns-remap": "default",
"log-driver": "syslog",
"disable-legacy-registry": true,
"live-restore": true,
"userland-proxy": false,
"no-new-privileges": true
}
Ahora vamos a ver el resultado que nos da tras la configuración aplicada.
Ahora vamos a elegir un archivo dockerfile que se habia creado en la actividad UT3.AP00A - AFIANZANDO EL USO DE DOCKERFILE y se va realizar un testeo con Trivy
Ahora vamos a instalar Trivy con el siguiente comando.
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy
Ahora vamos a ejecutar Trivy.
trivy image <docker-imagen>
Vemos que existe una vulnerabilidad en apache CVE-2006-20001 con lo cual podria causar que el proceso se bloquee.
Ahora vamos a crear la analisar la Imagen WordPress de la Actividad UT3.AP03 con lo que vamos analisarlo con trivy, despues se hara un cambio con lo que vamos a usar wordpress:4.6 y se realiza el mismo proceso.
Ahora vamos a usar trivy para ver las vulnerabilidades, con lo cual la versión 4.6 tiene mucha vulnerabilidades.
Vemos que en Login Existe una Critica
Vemos que tambien en est versión tambien exisite una vulnerabilidad con la password con lo que es Critica
Ahora vamos a usar un Filtro de Trivy en el cual vamos a decir solos las vulnerabilidades criticas.
trivy image --severity CRITICAL <docker-imagen>
Como se observa existe como 269 Vulnerabilidades Criticas.
Vemos que en Login ya no existe una vulnerabilidad Critica
En esta versión ya esta solucionada esta vulnerabilidad con password
Ahora vamos hacer el mismo comando pero para la versión mas actual.
Como se observa en esta versión mas actual se ve solo 11 Vulnerabilidades Criticas.
Tenemos que tener siempre a la ultima versión para no tener tantas vulnerabilidades y lo mas importante actualizar todo para ser mas dificil su ataque.