Skip to main content

Entorno de Desarrollo

Recomendaciones

nueva guia de seguridad CCN STIC 812 GUIA DE SEGURIDAD EN ENTORNOS Y APLICACIONES WEB
  • Desarrollar un modelo a 3 capas

    Existen fundamentalmente dos modelos de arquitectura de aplicaciones Web:

    a) En dos capas: donde el servidor Web y de aplicación conviven en el mismo sistema.

    b) En tres capas: donde cada elemento (servidor Web, servidor de aplicación y servidor de base de datos) corresponde a un sistema independiente.

    Desde el punto de vista de la seguridad, el modelo en tres capas es preferible ya que ofrece separación entre los distintos componentes y un mayor aislamiento frente a incidentes de seguridad en cualquiera de los elementos

    El modelo a 3 capas tiene las siguientes ventajas:

    • Mayor escabilidad

    • controles de acceso avanzado - filtrado y monitorizacion avanzada

    • securizacion mas estricta

      En arquitecturas Web de tres capas (servidor Web, servidor de aplicación y base de datos), existe la posibilidad de emplear WAF dedicados entre cada una de las capas. Los WAF más conocidos y ampliamente utilizados sin carácter comercial son:

      a) mod_security (Apache) [Ref.- 13]

      b) URLScan/Lockdown (Microsoft IIS) [Ref.- 14]

  • HTTPS utiliza SSL (Secure Socket Layer) o TLS (Transport Layer Security) para cifrar las comunicaciones entre el navegador Web y el servidor Web. Se recomienda la utilización TLS a partir de la versión 1.2 y habilitar algoritmos de cifrado robustos.

  • balanceadores, FWs, WAF… y separando cada capa en distintas VLANs

  • CUIDADO CON LOS MENSAJES DE ERROR Y LOS COMENTARIOS DE LOS DESARROLLADORES, SOBRE TODO EN EL CODIGO JAVASCRIPTS QUE SAE EJECUTA EN EL CLIENTE, EXISTEN CASOS DONDE EL DESARROLLADOR HA DADO PISTAS PARA EXPLOTAR ALGUNA VULNERABILIDAD.

  • UTILIZACION DE CAJA NEGRA Y DE CAJA BLANCA

  • ANALISIS DE VULNERABILIDAD CON HERRAMIENTAS COMO NESSUS, LOS INFORMES SE PUEDEN SUBIR A LA HERRAMIENTA ANA PARA TRAZAR ASI UN REPORTE PARA LA MITIGACION DE LAS VULNERABILIDADES ENCONTRADAS, LA HERRAMIENTA GENERA UN FICHERO QUE PUEDE SER LEIDO POR ANA PARA ASI TENER UN CONTROL DEL NUMERO DE VULNERABILIDADES Y LAS MITIGACIONES REALIZADAS EN EL TIEMPO.

  • Utilizar la metodología ágil para el desarrollo, como SCRUM y apoyada en la práctica para test Agile Testing

INFO

Agile Testing que es una práctica de Software basado en principios del desarrollo ágil donde la gran mayoría de las pruebas son unitarias automatizadas, de integración automatizadas y de interfaz gráfica automatizadas, buscando reducir al mínimo las pruebas funcionales manuales. Metodología de desarrollo que

  • Tome en consideración los aspectos de seguridad a lo largo de todo el ciclo de vida.
  • Trate específicamente los datos usados en pruebas.
  • Permita la inspección del código fuente.
  • Incluya normas de programación segura.
  • Entorno de integración continua con:

    • Git, como herramienta para realizar el control de versiones distribuido.

    • GITLAB como repositorio, se puede usar en la nube o instalarlo en un servidor de la organización

    • Gitlab CI/CD o Jenkins para llevar a cabo la integración continua

    • Jira para la administración de tareas de un proyecto, el seguimiento de errores e incidencias y para la gestión operativa de proyectos

Todas estas herramientas recomendadas en la guía CCN STIC 818 Herramientas de Seguridad

CI/CD

CI/CD son dos conceptos clave en la práctica de desarrollo de software y despliegue continuo. Aquí tienes la diferencia entre ellos:

CI (Continuous Integration): La Integración Continua (CI) es una práctica de desarrollo de software que consiste en combinar e integrar regularmente el código desarrollado por múltiples desarrolladores en un repositorio compartido. El objetivo principal de la integración continua es detectar y solucionar problemas de integración de código lo antes posible. Los equipos de desarrollo implementan sistemas de integración continua que ejecutan automáticamente pruebas y verificaciones de calidad cada vez que se realiza una nueva contribución de código. Esto ayuda a identificar y resolver problemas de integración tempranamente, evitando que se propaguen y afecten el desarrollo y la calidad del software.

CD (Continuous Deployment/Delivery): Despliegue Continuo (Continuous Deployment) y Entrega Continua (Continuous Delivery) son prácticas relacionadas con la automatización del proceso de lanzamiento y despliegue de software. Ambos enfoques tienen como objetivo liberar cambios de manera rápida, frecuente y confiable. La principal diferencia entre ellos radica en el punto en el que se toma la decisión de realizar el despliegue.

  • Continuous Delivery (Entrega Continua): En este enfoque, el software se entrega de manera continua a un entorno de producción similar para su evaluación y prueba. El proceso de entrega es automatizado y se centra en garantizar que el software sea empaquetado, probado y listo para su despliegue. Sin embargo, la decisión final de desplegar el software en producción se toma de manera manual.

  • Continuous Deployment (Despliegue Continuo): En este enfoque, todo el proceso de lanzamiento y despliegue se automatiza y el software se despliega automáticamente en producción tan pronto como pasa todas las pruebas y verificaciones definidas. No hay una intervención humana en la decisión de despliegue.

En resumen, CI se enfoca en la integración regular del código y la detección temprana de problemas de integración, mientras que CD se refiere a la automatización del proceso de entrega y despliegue del software, ya sea en forma de entrega continua con una intervención manual en la decisión final de despliegue o despliegue continuo sin intervención humana.