martes, 27 de septiembre de 2016

Usando JMeter y OWAS ZAP en integración contínua



Introducción


Seguramente alguien nos echaba de menos , así que hemos aprovechado uno de esos ratos libres que nos deja el trabajo y aprovechamos para dar unas pequeñas nociones acerca de la sinergia entre herramentas. En este caso en el mundo de la integración continúa y la seguridad ..usando un script de JMeter.

Objetivos.


La idea de este artículo es explicar uina manera de generar informes de seguridad con una herramienta integrable con un entorno de integración contínua como  Jenkins, realizando navegaciones que puedan ser analizadas por dicha herramienta y generando un informe que pueda ser evaluado cuando se haga una nueva versión o implementación de una aplicación

Para ello vamos a trabajar usando las siguiente utilidades

  • Herramienta de seguridad OWASP Zap. Es una evolución de Paros Proxy que es reconocida en el entorno de integración contínua Jenkins, bien como plugin o como herramienta que genera acciones.
  • HTML Report. Es un plugin de Jenkins que permite publicar documentos en foprmato HTML o XML  
  • JMeter. La herramienta para pruebas de calidad, aunque centradas en el rendimiento, también usada para validaciones funcionales y demás
OWAS Zap habilita un puerto de escucha ,actuando como un proxy que permite analizar el tráfico que ciercula por él.

La herramienta realiza una serie de análisis de seguridad tanto pasivos como activos (modo spider, inyección SQL, cross-site scripting..etc) y permite generar un informe de seguridad con los principales fallos detectados.

Requerimientos


1º) Se ha instalado el plug-in de OWAS ZAP Zapproxy
2º) Se prepara un script JMX de Jmeter en el que se define como proxy el definido por el OWAS ZAP Proxy (por defecto ,localhost puerto 9090)
3º) Se crea una secuencia de tareas de este modo
         i.            
             Tarea inicial de arranque del OWAS Zaproxy en la que quede en ejecución en estado de escucha en el puerto, almacenando los resultados de dicha escucha en una sesión (parámetro –session de la invocación por línea de comandos)

Incluir tarea de OWAS ZAP: Uso de línea de comandos shelll

       ii.            Se lanza una instancia de JMeter en la que haga una navegación (con un usuario y una sola iteración a priori bastaría, reutilizando alguno de los casos de las pruebas de rendimiento)
Incluir tarea de ejecución JMeter. Uso de línea de comandos windows


      iii.            Se lanza a continuación una parada controlada del OWAS Zapproxy para que consolide lo monitorizado en la sesión definida como repositorio
Tarea detención OWAS ZAPproxy: Ejecutando comandos shell


     iv.            Se lanza de nuevo el OWAS Zapproxy en modo “generación de informes” , indicando como salida (parámetro de invocación “-last_scan_report) un fichero .html que se genera automáticamente con los resultados del análisis efectuado por la herramienta de seguridad.

Tarea creación informe tras navegación. Ejecutar línea de comandos shell

       v.            Por último , en la siguiente sección “Acciones a ejecutar después” del menú de Jenkins correspondiente a la tarea de seguridad, se puede incluir el plug-in HTML Report, que permite mostrar un enlace directo desde la tarea al fichero generado
Acción post ejecución tarea seguridad: Plugin HTML Report



El informe queda accesible desde el menú del marco izquierdo


O bien desde el propio pantalla de “Estado del proyecto” ,accediendo por el enlace de HTML Report o navegando en el directorio del “Espacio de Trabajo” (WORKSPACE)

Esperamos que os sea útil esta información. Ya sabeis, comentarios, dudas y demás serán bien recibidos.