Artículo · Auditoría de Redes Informáticas

Implementación y pruebas automatizadas con Github Actions CI/CD

Felipe BarriosFelipe Barrios 5 min de lectura

Lo primero que vamos a realizar es entender conceptos básicos como CI/CD, GitHub Actions y cuáles son sus ventajas en la actualidad, además de ver de manera práctica y gratuita como realizar su implementación, vamos con lo primero.

¿Qué es CI/CD?

Según Wikipedia, en ingeniería de software, CI/CD o CI/CD generalmente refiere a las prácticas combinadas de integración continua y entrega continua (también conocida como despliegue continuo).

 

¿Cuál es la diferencia entre CI y CD (y la otra CD)?

Integración continua:

Los pasos a producción rápidos, frecuentes e iterativos son muy comunes para los servicios en la nube. Esto normalmente impulsa la necesidad de prácticas de DevOps. Esto puede ser tanto una oportunidad como un desafío para la seguridad. El desafío es que un período corto de lanzamientos frecuentes puede no incluir el tiempo suficiente para realizar un ciclo completo de pruebas de seguridad.

El proceso se ejecuta de forma periódica, o bien según ciertos disparadores, y suele ser de la siguiente forma:

- Se descarga del control de versiones las últimas fuentes con los cambios implementados a un directorio de trabajo.
- Se realiza la compilación de estas fuentes.
- Se lanza el análisis estático y de cobertura de las fuentes.
- Se instala en el entorno (compartido) de Desarrollo.
- Se lanzan las pruebas automáticas.
- Se generan los informes.

 

Entrega continua:

Entrega continua es un enfoque de la ingeniería del software en que los equipos de desarrollo producen software en ciclos cortos, asegurando que el software puede ser liberado en cualquier momento, de forma confiable. Apunta a la construcción, prueba, y liberación del software de forma más rápida y más frecuente. Este enfoque ayuda en la reducción del costo, tiempo, y riesgo de la liberación de versiones a través de la liberación de versiones más incrementales a aplicaciones en producción. Un proceso directo y repetible de liberación es importante para una entrega continua.

 

Despliegue continuo:

El paradigma tanto de la entrega continua como del despliegue continuo es automatizar lo máximo posible todas las acciones necesarias para implantar una nueva versión de la aplicación y todas las tareas necesarias para validar esa nueva versión. Por lo que cada vez que se obtiene una nueva versión de la aplicación desde la integración continua se validan los criterios de liberación para el siguiente entorno y así sucesivamente.

 

¿Qué es GitHub Actions?

 

Automatiza, personaliza y ejecuta tus flujos de trabajo de desarrollo de software directamente en tu repositorio con GitHub Actions. Puedes descubrir, crear y compartir acciones para realizar cualquier trabajo que quieras, incluido CI/CD, y combinar acciones en un flujo de trabajo completamente personalizado.

Los componentes de las acciones de GitHub

Workflows: Los flujos de trabajo se componen de uno o más trabajos y pueden ser programados o activados por un evento

Events: Un evento es una actividad específica que desencadena un flujo de trabajo.

Jobs: Un trabajo es un conjunto de pasos que se ejecutan en el mismo corredor

Steps: Un paso es una tarea individual que puede ejecutar comandos en un trabajo.

Actions: Las acciones son comandos independientes que se combinan en pasos para crear un trabajo.

Runners: Servidor que tiene instalada la aplicación de ejecución de acciones de GitHub.

 

Documentación oficial: https://docs.github.com/en/actions/learn-github-actions/introduction-to-github-actions

 

Crea un flujo de trabajo de ejemplo

Vamos con un ejemplo, lo primero dentro de nuestra pestaña nos dirigimos Actions, es en esta sección en donde podremos observar el paso a producción y el estado de como va el paso a producción.

 

 

necesitamos crear una carpeta en nuestro proyecto .github/workflows y agregamos nuestro archivo de configuración:

.github/workflows/file.yml


Dentro de nuestra configuración podemos agregar los siguientes puntos; controlar cuándo se ejecutará la acción on. Activa el flujo de trabajo en la solicitud de inserción o extracción.

 

Un paso a producción se compone de uno o más trabajos que pueden ejecutarse secuencialmente o en paralelo. jobs: Este flujo de trabajo contiene un único trabajo llamado "compilación" job_one: El tipo de contenedor en el que se ejecutará el trabajo.

 

name: CI OVISOC
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the main branch
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  job_one:
    # The type of runner that the job will run on
    name: Deploy
    runs-on: ubuntu-latest
    steps:
    - name: Running ssh connection to contability
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.IP }}
        username: deploy
        key: ${{ secrets.OMG_SECRET }}
        port: 22
        script: |
          [ command... ]

 

Además podemos agregar pruebas avanzadas de seguridad, como por ejemplo integrar zap proxy en nuestros pasos a producción:

 

on: [push]

jobs:
  zap_scan:
    runs-on: ubuntu-latest
    name: Scan the webapplication
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          ref: master
      - name: ZAP Scan
        uses: zaproxy/action-baseline@v0.4.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          docker_name: 'owasp/zap2docker-stable'
          target: 'https://www.zaproxy.org'
          rules_file_name: '.zap/rules.tsv'
          cmd_options: '-a'

Ejemplo: https://github.com/zaproxy/action-baseline

 

Cabe destacar que podemos configurar nuestras variables de entorno dentro de GitHub, para ello debemos añadir nuestras variables, en mi caso agregaré la key ssh mediante la variable OMG_SECRET y la IP del servidor al cual me quiero conectar, dentro de la configuración la podemos llamar de la siguiente manera ${{ secrets.OMG_SECRET }}

 

 

Ejemplo de formulario para la creación de variables: 

 

 

Bueno, hasta aquí ya tenemos configurado nuestro entorno para realizar los pasos a producción de manera automática, cada vez que realicemos o un commits a nuestra rama master o algún pull request a dicha rama, esto nos ayudara ahorrar una gran cantidad de tiempo.

GitHub nos dispondrá de una interfaz con el resumen de cada paso a producción:

 

 

Si entramos a cada uno, podremos visualizar el detalle de cada uno de ellos.

 

 

Bueno eso ha sido todo amigos, espero que les ayude en sus pasos a producción, les comparto un proyecto con algunos ejemplos.

https://github.com/fbarriosCL/github-actions

#HappyHacking

¿Quieres aprender estas técnicas en profundidad?

Continúa tu ruta con Wireshark para Pentester.

Felipe Barrios

Escrito por

Felipe Barrios

CEO at Backtrack Academy

I'm Felipe Barrios CEO of Backtrack Academy ethical hacking community. entrepreneur and developer ruby on rails, Ror became my preferred language, the basis of all my projects, I consider myself a proactive person and passionate about what he does. Currently working as a software developer in scuit, computer security lover I like to work on projects related to digital enterprise.

Sigue leyendo

Webmap Dashboard para Nmap
Auditoría de Redes Informáticas

Webmap Dashboard para Nmap

José Moreno

Compartiendo con unos colegas del grupo Purple Team UTP al cual pertenezco, hemos estado desarrollando una investigación sobre herramientas que podamos automatizar para la hora de realizar un pentesting, para ello hemos encontrado la herramienta Webmap, un dashboard que toma los resultados de Nmap y los gráfica, además que nos muestra un panel de administración. Esta herramienta no es recomendada en producción debido a que no cuenta con autenticación, sin embargo se pueden implementar medidas complementarias para permitir el acceso como una autenticación básica o una vpn.

Solución del Evento CTF del Open Hacking Guatemala 2019
Auditoría de Redes Informáticas

Solución del Evento CTF del Open Hacking Guatemala 2019

Omar Jacobo Muñoz Veliz

Open Hacking Guatemala es un congreso de talla internacional que reúne a los máximos exponentes Iberoamericanos de Ciberseguridad y Hacking Ético, que celebra su cuarta edición y en donde la innovación, investigación y el conocimiento son los principales pilares de este evento que aporta conocimiento por medio de las investigaciones que son presentadas por cada ponentes, para el crecimiento de la ciudad de Guatemala.

Simulando una DDoS Botnet
Auditoría de Redes Informáticas

Simulando una DDoS Botnet

Omar Jacobo Muñoz Veliz

BoNeSi es un simulador de una Botnet DDoS y que es una herramienta para simular el tráfico de Botnet en un entorno de prueba por cable. Está herramienta esta diseñada para estudiar el efecto de los ataques DDoS.