La construcción de una arquitectura en la nube presupone una serie de nuevos factores a tener en cuenta. La esencia misma de la computación en la nube es la virtualización, que se utiliza para separar una única máquina física en múltiples máquinas virtuales de una manera eficiente. La virtualización es rentable, permitiendo la ejecución de numerosas máquinas virtuales en un mismo equipo físico, pudiendo arrendarse parte de los recursos de los servidores físicos a otros interesados.
Además ofrece portabilidad, ya que pueden moverse de un servidor físico a otro en cuestión de segundos y sin tiempo de inactividad, como así también crearse de manera rápida y fácil. Otra ventaja es la ubicación de las máquinas virtuales en un centro de datos: no importa dónde se encuentre nuestro CPD, las máquinas virtuales podrán copiarse entre centros de datos con facilidad.
Existen tres modelos básicos de servicios de cloud computing: SaaS (Software as a Service), PaaS (Platform as a Service) y IaaS (Infrastructure as a Service), y tres modelos básicos de despliegue: público, comunitario y privado. Al modelar el sistema, tenemos que ser conscientes de que con un mayor control sobre la nube, tendremos mayores posibilidades de aumentar su seguridad. Así, un modelo IaaS nos permitirá ajustar mejor la seguridad con respecto a un modelo SaaS, y lo mismo ocurrirá con una nube privada en comparación con una pública.
Mientras que el principal beneficio de la virtualización es la rentabilidad, la personalización del entorno aumenta el costo de implementación con la ventaja de una mayor seguridad. Todo aquello que no está bajo el control directo del cliente, debe ser administrado por el CSP (Cloud Service Provider).
Cuando se trabaja con una nube pública, es el trabajo del CSP asegurar correctamente todos los aspectos de la infraestructura en la nube, ya que el cliente por lo general no tiene acceso a ella, pero en una nube privada tendremos que cuidar de esas implicaciones nosotros mismos.
Particularidades de los entornos virtualizados
Los entornos virtualizados más simples utilizan solo una red en la que residen todas las máquinas virtuales, pero esto –como puede intuirse- no resulta muy seguro. Con el fin de limitar la posibilidad de propagación ante una inminente infección, las redes necesitan ser separadas adecuadamente en múltiples zonas desmilitarizadas con claras reglas de conectividad entre ellas.
Como clientes que intentamos migrar nuestros servicios a la nube, podemos solicitar al proveedor que cree una DMZ (zona desmilitarizada) para uso exclusivo de nuestras máquinas virtuales. O podemos ir un paso más allá y requerir equipos de red independientes, como switches dedicados a través de los cuales sólo fluya el tráfico destinado a nuestras propias máquinas virtuales.
Podemos también solicitar al CSP que utilice VLAN tagging o trunking para nuestras máquinas virtuales –es decir que todos los paquetes destinados a y procedentes de nuestras propias máquinas virtuales tendrán un determinado ID de VLAN, de modo que solo las interfaces de red en la misma VLAN serán capaces de recibir y procesar esos paquetes.
En segundo lugar, al contratar un servicio de entorno virtualizado, nuestras máquinas virtuales por lo general residen en un servidor físico común con máquinas virtuales de otros clientes. Entonces, una manera de aumentar la seguridad es alquilar el servidor físico completo para nuestro uso exclusivo, ya que las máquinas virtuales de otros inquilinos residirán en otro lugar.
La virtualización en sí misma proporciona otra capa de defensa contra los atacantes, ya que cada máquina virtual está por sí misma aislada del resto. Por lo tanto, si un atacante es capaz de poner en peligro una máquina virtual, está operando en un entorno aislado. Aún más, la virtualización también proporciona la posibilidad de almacenar la copia corrupta de la máquina virtual para su posterior análisis forense.
Finalmente, cada máquina virtual necesitará su propio lugar de almacenamiento de datos, el cual normalmente reside en un servidor de almacenamiento externo y centralizado. Por lo tanto, los datos que pertenecen a cada máquina virtual se escriben en el mismo disco duro, accesible a través de la red. Con el fin de mejorar la seguridad, podemos contratar un servidor de almacenamiento de datos dedicado.
Aún más, cuando los datos de varias máquinas virtuales se almacenan en un servidor centralizado de datos, existe la posibilidad de que una máquina virtual pueda acceder a los datos de otra. Para evitar este problema, siempre podemos cifrar los datos que guardamos en el almacén de datos, para que incluso si otra máquina virtual puede leerlos, los mismos le resulten ilegibles.
Inquietudes al utilizar virtualización en la nube
Como ya vimos, la virtualización ofrece muchas ventajas, como la rentabilidad, mayor tiempo de actividad, y una mejor recuperación de desastres. A pesar de estos beneficios, también deben tenerse en cuenta nuevos vectores de ataque.
- Virtual Machine Monitor (VMM)
El VMM se utiliza para separar los sistemas operativos de las máquinas virtuales del hardware físico. Cuando añadimos una nueva máquina virtual sobre la máquina física, debemos asegurarnos de que el sistema operativo tiene las últimas actualizaciones de seguridad y el software ha sido debidamente actualizado.
Una vez que el atacante ha ganado acceso administrativo al sistema operativo invitado, puede continuar avanzando en búsqueda de vulnerabilidades existentes en el VMM –y explotándolas con éxito, puede obtener acceso completo a la máquina física. Aún más, una vez que el atacante tiene acceso al VMM, puede acceder fácilmente a todas las máquinas virtuales que se ejecutan en ese equipo físico.
Por ello destacamos la importancia de tener un VMM seguro. No necesita ser tan completo como un sistema operativo, pues se encarga sólo de un conjunto limitado de funciones; en consecuencia, también tiene un menor número de puntos de acceso susceptibles de ser atacados y explotados. El problema radica en que los VMMs son rara vez actualizados y, por consiguiente, una nueva vulnerabilidad de seguridad podría probablemente permanecer sin ser parcheada durante un largo periodo de tiempo.
Claro está que la actualización periódica del VMM es crucial. Puesto que presenta un número bajo de vulnerabilidades, deberemos actualizarlo pocas veces, pero es vital que esto se realice. No nos protege contra vulnerabilidades de tipo zero day, pero al menos sí de otras vulnerabilidades conocidas.
- Asignación de recursos
Cuando un recurso determinado –como el almacenamiento externo o la memoria física- se asigna a una máquina virtual, la misma puede utilizarlo para almacenar sus datos. Si los recursos son posteriormente reasignados dado que la anterior ha dejado de requerirlos, la nueva máquina virtual podría leer los datos ajenos del disco duro o la memoria. Es entonces fundamental verificar la correcta eliminación de los datos almacenados en los recursos cuando estos se encuentran en transición de una máquina virtual a otra.
Al asignar memoria a una nueva máquina virtual, la memoria debe ser previamente llenada con ceros a fin de evitar exfiltración de datos. Lo mismo aplica a discos duros, ya que una nueva máquina virtual podría utilizar diferentes herramientas forenses para leer el contenido no estructurado del disco, cuyos datos podrían aún estar presentes incluso después de recrear las particiones.
- Ataques a máquinas virtuales
Si un atacante obtiene acceso a una máquina virtual mediante la explotación de una vulnerabilidad en una de las aplicaciones que se ejecutan sobre la misma, puede luego utilizar la red para atacar otras aplicaciones que se ejecutan en diferentes máquinas virtuales.
Si la máquina virtual se ejecuta en el mismo host físico que la máquina virtual comprometida, puede ser difícil de detectar este tipo de ataques. Para ello es necesario el control de tráfico entrante y saliente para cada máquina virtual en el mismo host físico.
Debemos asegurarnos de que el software de virtualización puede diferenciar tráfico entrante y saliente de diferentes máquinas virtuales. Un esquema de monitoreo de tráfico incluye la duplicación de todo el tráfico de un puerto específico sobre un switch a otro puerto, con el objeto de analizar los datos con un IDS (Intrusion Detection System) o IPS (Intrusion Prevention System).
- Ataques de migración
La migración consiste por lo general en transferir toda la máquina virtual a través de la red desde una máquina física a otra. Para un ataque exitoso, el atacante necesita tener acceso a la red en la que las migraciones se llevan a cabo, pudiendo leer o escribir la memoria.
Cuando la comunicación no está cifrada, el atacante puede realizar un ataque Man In The Middle (MITM) para copiar todo el archivo VHD de la máquina virtual.
Es necesario desplegar un mecanismo para detección de ataque MITM, y además debiese garantizarse que las migraciones se realicen sobre canales de comunicación seguros como TLS.
En resumen...
La seguridad en entornos virtualizados en la nube no es imposible. Sólo debemos ser conscientes de las inquietudes de seguridad que rodean esta arquitectura y tomarnos el tiempo para hacerles frente de manera adecuada.
Una vez que las medidas de mitigación han sido establecidas, restará entonces dedicarnos a ponerlas a prueba a fin de constatar que efectivamente hemos logrado construir un sistema seguro contra amenazas conocidas.