Archivo
Integración de Jenkins + SonarQube [DevSecOps]
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
require_once(/var/www/html/common/lib/../../vendor/autoload.php) en A2BILLING
Es claro que este tema de tecnología cambia mucho y uno tiene que estar preparado para las actualizaciones y los colaterales que puede traer, es así que durante el curso de Vicidial que vengo impartiendo, se presentó un problema al instalar A2billing desde los repositorios es Github, es decir la última versión del software.
El problema es que después de realizar todo los procedimientos de instalación, no era posible ver la interfase de administración de a2billing, metiéndonos en el log de error de apache vemos el siguiente error.
Luego investigar un poco, se indagó que se tenia que hacer dos cosas , por un lado actualizar la versión de PHP que viene en mi caso en Centos 6.6 que es la 2.3.0 y luego instalar un componente llamado Composer en PHP , entonces el procedimiento fue el siguiente :
1.- Actualizar la versión de PHP en Centos 6.6
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum –enablerepo=remi update php-\*
Una vez actualizado la versión de PHP es la 5.4.3 como se muestra a continuación:
2.- Instalar Composer
Ingresamos primero donde hemos descargado las fuentes de a2billing.
cd /usr/local/src/a2billing
curl -sS https://getcomposer.org/installer | php
php composer.phar update
php composer.phar install
3.- Finalizar la instalación de a2billing
Si ya hemos copiado las carpetas, es necesario eliminarlas de apache.
ln -s /usr/local/src/a2billing/common /var/www/html/common
ln -s /usr/local/src/a2billing/admin /var/www/html/admin
ln -s /usr/local/src/a2billing/agent /var/www/html/agent
ln -s /usr/local/src/a2billing/customer /var/www/html/customer
chmod 755 /var/www/html/admin/templates_c
chmod 755 /var/www/html/customer/templates_c
chmod 755 /var/www/html/agent/templates_c
chown -Rf apache:apache /var/www/html/admin/templates_c
chown -Rf apache:apache /var/www/html/customer/templates_c
chown -Rf apache:apache /var/www/html/agent/templates_c
service httpd restart
Ahora ingresamos nuevamente : http://TUIP/admin y veremos la pagina con la ultima versión de a2billing:
Espero les sirva
Saludos
Juan Oliva