La arquitectura constituye los cimientos sobre los cuales se erigirán nuestras aplicaciones.
Fuente: open stand
Posibles riesgos
El desarrollo seguro comienza con el diseño y la definición de nuestra arquitectura, teniendo en mente las posibles amenazas que pudieran poner en riesgo nuestro sistema, especialmente aquellas derivadas por el uso de componentes que:
- no estén identificados.
- sean antiguos o incompatibles, que estén obsoletos o hayan dejado de ser soportados.
- posean vulnerabilidades conocidas.
- tengan puertos abiertos no indispensables.
Mejores prácticas
A continuación se detallan las mejores prácticas a la hora de diseñar, definir y mantener una arquitectura segura:
- Inventario que identifique cada componente de la arquitectura. Todo componente debe estar identificado, o de lo contrario se incurrirá en riesgos de seguridad.
- Revisión del bastionado de componentes:
- Identificación de dependencias internas:
- Módulos.
- Librerías.
- Frameworks.
- Plugins o complementos.
- Servicios.
- Otras.
- Estado de actualización.
- Configuraciones:
- Puertos activados (solo los indispensables).
- Usuarios y contraseñas personalizados (no por defecto).
- Modo de depuración desactivado.
- Otras configuraciones de seguridad (ajustadas a una mayor seguridad).
- Identificación de vulnerabilidades y sus parches de seguridad. En caso de no existir parche:
- analizar el riesgo y su impacto
- proponer y adoptar:
- un plan de vigilancia.
- un plan de contingencias.
- realizar un estudio de viabilidad de componentes alternativos.
- Asegurar la seguridad perimetral lógica mediante la segmentación de red, firewalls, dispositivos IDS, etc.
- Asegurar la protección de datos mediante:
- autorización entre entornos.
- copias de seguridad.
- Proporcionar un entorno virtual como zona de trabajo, a ser posible, por lenguaje de programación.
- Mantener las actualizaciones más recientes de:
- lenguajes de programación
- paquetes instalados
- frameworks y librerías
- herramientas de análisis y seguridad de los IDEs
- En caso de trabajar con DevSecOps, dotar de herramientas de análisis de seguridad a lo largo del ciclo de vida del software, antes del despliegue en cada entorno.