Archivo

Posts Tagged ‘devops’

Install Kubernetes Goat (ES)

junio 13, 2021 Deja un comentario
Kubernetes Logo

En estos dos ultimos años estoy muy involucrado en proyectos revisando intraestructuras basadas en contenedores Docker y Kubernetes, en esta busqueda encontré con este genial proyecto que facilita el aprendizaje de vulnerabilidades en Kubernetes.

Kubernetes Goat está diseñado para ser un entorno de clúster intencionalmente vulnerable para aprender y practicar la seguridad de Kubernetes. Es un proyecto creado por Madhu Akula.

En este articulo, veremos como realizar la instalación sobre un equipo con Ubuntu 20.04 y VirtualBox. Kubernetes Goat necesita una instalación previa de Minikube el cual facilita tener un cluster local de Kubernetes.

A.- Instalar Minikube

1.- Descarga de Minikube

Podemos descargar la última versión o una versión específica de la página de versiones de Minikube. Una vez descargado, necesitamos hacerlo ejecutable y agregarlo a nuestra RUTA:

$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

2.- Iniciar Minikube

Podemos iniciar Minikube con el comando de inicio de minikube, que inicia un clúster de un solo nodo con la última versión estable de Kubernetes.

$ minikube start

3.- Comprobar el estado

Con el comando de estado de minikube, mostramos el estado de Minikube:

$ minikube status

B.- Instalar Kubernetes Goat

1.- Descargar el proyecto

# git clone https://github.com/madhuakula/kubernetes-goat.git

# cd kubernetes-goat/

2.- Configurar la cuenta helm2 rbac e inicializar tiller

# kubectl apply -f scenarios/helm2-rbac/setup.yaml

# helm2 init –service-account tiller

3.- Desplegar Helm chart para verificar la configuración ,

implementación del escenario helm chart metadata-db

# helm2 install –name metadata-db scenarios/metadata-db/

4.- Desplegar los manifiestos de escenarios vulnerables

# kubectl apply -f scenarios/batch-check/job.yaml

# kubectl apply -f scenarios/build-code/deployment.yaml

# kubectl apply -f scenarios/cache-store/deployment.yaml

# kubectl apply -f scenarios/health-check/deployment.yaml

# kubectl apply -f scenarios/hunger-check/deployment.yaml

# kubectl apply -f scenarios/kubernetes-goat-home/deployment.yaml

# kubectl apply -f scenarios/poor-registry/deployment.yaml

# kubectl apply -f scenarios/system-monitor/deployment.yaml

# kubectl apply -f scenarios/hidden-in-layers/deployment.yaml

5.- Crear el forwardeo de puertos en los PODS para permitir el acceso local.

# bash access-kubernetes-goat.sh

6.- Igresar a Kubernetes Goat

Si todo salio bien , ahora podremos ingresar a la aplicación de la siguiente forma:

Ingresar a : http://127.0.0.1:1234/

Finalmente, Si desean practicar los escenarios pueden revizarlos aqui : https://madhuakula.com/kubernetes-goat/index.html

Espero les siva

@jroliva

Integración de Jenkins + SonarQube [DevSecOps]

febrero 25, 2021 1 comentario

 

La Inspección continua de código como parte de la integración continua (CI) se ha hecho cada vez mas importante en la construcción de aplicaciones dentro de una estrategia de seguridad en la metodológica de DevOps o también llamado ahora DevSecOps.

En este escenario, implementaremos para el servidor de integración continua Jenkins como contenedor en Docker. Y la parte de inspección continua de código usaremos SonarQube, finalmente analizaremos el codigo de una Aplicación Web en PHP y sera la archi conocida Dann Vulnerable Web Application o DVWA.

Para lo cual asumiremos que nuestra aplicación se encuentra en GitHub/GitLab y necesitamos evaluar la calidad del código, bugs conocidos, vulnerabilidades,etc.

El Entorno

01 Maquina virtual con Centos 7 / IP 192.168.1.13
Docker y Docker-Compose instalado.

 

1.- Instalación de Jenkins y SonarQube en contenedor Docker

1.1.- Crear el archivo de docker compose y levantar los contenedores.

mkdir -p jenkins/jenkins_home ; cd jenkins
vim docker-compose.yaml



docker-compose up -d
docker ps

Si todo salió bien, en este punto tendremos levantados los dos contenedores 

Jenkins :      http://192.168.1.13:8080/
Sonarqube : http://192.168.1.13:9000/

 

2.- Configurar Jenkins para que se integre con Sonarqube.

2.1.- Establecer contraseña e instalación de plugins recomendados.

Ingrear a Jenkins http://192.168.1.13:8080/

La instalación pedirá el ingreso de la contraseña de inicialización ubicada en 

cat jenkins_home/secrets/initialAdminPassword

Luego procederá a instalar los plugins recomendados

Una vez terminanda la instalación y configurar el usuario “admin” habremos ingresado.

2.2.- Agregar el Plugin de Sonarqube en Jenkins

Ingresar : Manage Jenkins / Manage  Plugins / Available / SonarQube Scanner

 

Luego verificar que se instaló correctamente y elegir reiniciar Jenkins

2.3.- Agregar la URL del servidor Sonarqube.

Ingresar : Manage Jenkins / Configure System / SonarQube servers / Add SonarQube installations

Name : sonarqube
URL del servidor : http://192.168.1.13:9000/

2.4.- Agregar la versión del scaner para el servidor Sonarqube.

Ingresar : Manage Jenkins / Global tool configuration / Sonarqube Scanner / Add Sonarqube Scanner

Name : sonarqube
Install from maven central : Sonarqube Scanner 4.2.0.18.73

 

3.- Crear Job para analizar el codigo de la Aplicacion Web.

Nombre : code-inspection-webapp
Tipo : Freestyle project.


Dentro del Jobs indicar el repositorio donde se buscara el código fuente.

Source Code Management
Git / Repository URL : https://github.com/digininja/DVWA


Luego en “Build” agregar “Sonarqube scanner”

 

Finalmente indicar las propiedad del escaneo en “Analysis properties”

 

4.- Ejecurar Job para analisis de código fuente con Sonarqube desde Jenkins

 Ingresar al Job “code-inspection-webapp” y hacer clic en “Build Now”

Si todo salio bien, en el “console output” del Job nos mostrara que la tarea se ejecuto correctamente.

Si ingresamos el enlace nos llevará a dashboard de Sonarqube donde nos mostrará el reporte del analisis de codigo de la siguiente forma:

 

 

Paso siguiente, analizar todas las vulnerabiidades reportadas y bugs en el código por que esta claro que Sonar al ser una herramienta automatizada, nos arrojará una serie de falsos positivos y negativos se serán necesarios de revisar.

Una reflexión final, un Pentester puede aprender muy rápido conceptos de DevOps pero los DevOps pueden aprender rápido conceptos de seguridad, sobre todo ofensiva? Con capacidad de evaluar reportes en SonarQube o Owasp ZAP ?  yo creo que si, pero es evidente que todo ello requiere mucha especialización y perfiles adicionales, tener en cuenta que el mismo concepto de DevOps como tal, requería especialización, y ahora hablar de DevSecOps aún mas, debido a que no es solo agregar “herramientas” dentro del CI/CD si no taimen saber como interpretar y corregir los fallos encontrados, de lo contrario no servira para nada.

En el siguiente post vememos como agregar OWASP ZAP el CI/CD

Espero les sirva.
Saludos
@jroliva