JORGE
DÁVILA MURO
Consultor independiente
Director
Laboratorio de Criptografía
LSIIS – Facultad
de Informática – UPM
jdavila@fi.upm.es |
Desde hace más de cuarenta años el término virtualización es parte de la jerga propia del mundillo de los ordenadores y se refiere al proceso de abstracción por el cual los recursos concretos de una máquina, la CPU, la memoria, las unidades de entrada y salida, los discos y sistemas de almacenamiento, las controladoras de red, etc., aparecen idealizados y universales ante las aplicaciones que corren sobre ella. En los sistemas virtualizados, ni las aplicaciones ni los usuarios saben realmente cómo es el hardware que las ejecuta, y ni siquiera saben si están en una misma máquina o si migran de una a otra. El término virtualización se acuñó para referirse a las máquinas virtuales íntimamente relacionadas con la máquina experimental M44/44X1 de IBM en la década de los sesenta.
Tipos de virtualizaciones
Con el paso del tiempo, se han propuesto varios tipos de virtualizaciones: de plataforma o virtualización completa, la virtualización asistida por el hardware, la virtualización parcial, la paravirtualización y la virtualización a nivel del sistema operativo, pero todas ellas persiguen lo mismo: alejar a las aplicaciones de las peculiaridades del hardware que las ejecuta.
Esta abstracción se consigue ejecutando, sobre una plataforma hardware real y concreta, un software anfitrión (host), antaño denominado programa de control, que crea un entorno computacional ideal, la máquina virtual, para que un software invitado (guest), que suele ser un sistema operativo completo, corra como si estuviese él solo en una única máquina. El programa de control puede ejecutar varios de esos universos ideales, por lo que en una misma máquina física pueden estar ejecutándose varios sistemas invitados que nada tienen que ver los unos con los otros. De esta manera, los recursos físicos reales se comparten, con cierto control, entre todas las máquinas virtuales. El número de máquinas virtuales en un sistema real sólo está limitado por las capacidades computacionales y demás recursos disponibles que tenga la instalación real.
La virtualización total no es sólo cosa de software y, de hecho, no fue posible de una forma natural hasta que se dispuso de ciertos servicios mínimos en el hardware. Así, las máquinas IBM tuvieron que esperar a la versión System 370 en la que se introdujo un hardware específico para dotarlas de memoria virtual en el año 1972. Análogamente, en el mundillo de las plataformas x86, la virtualización completa y real no ha sido posible hasta que Intel y AMD incluyeron las extensiones AMD-V e IVT en sus procesadores en los años 2005 y 2006.
El reverdecer del concepto
A pesar de su prolongada existencia, parece que la virtualización se ha puesto ahora de moda, y a ello quizás haya contribuido que Gartner2 haya llegado a decir, en el mes de abril de este año, que la virtualización “will be the highest-impact trend in infrastructure and operations market through 2012”. El reverdecer de este concepto en el mundillo empresarial quizás esté relacionado (1) con la posibilidad de consolidar varios servidores en un único sistema hardware, (2) con poder utilizar de un modo más intensivo y flexible el hardware disponible, y llegar a tasas sostenidas de actividad próximas a la saturación, (3) con la posibilidad de reducir el tiempo y coste del despliegue de servidores y su impacto en la restauración de sistemas caídos o en la adaptación al mercado, o (4) con una supuesta simplificación de los procesos de gestión y operación de grandes centros de datos, entre otras razones.
Estas son algunas de las bondades que mencionan tenazmente los fabricantes de tecnologías y sistemas de virtualización, y algunas descripciones exageradas de las mismas, lo que realmente hacen es presentar tan vetusta actividad de la informática, la virtualización, como el nuevo bálsamo de Fierabrás3 de las tecnologías de la información. Es probable que este renacer sea una moda pasajera nacida en los calenturientos y creativos departamentos de marketing de algunos fabricantes e integradores, pero es cierto que hay algunos factores que bien pueden terminar invitando a la virtualización a quedarse en nuestros sistemas.
Es fácil entender cómo la virtualización puede hacer que la recuperación de un servicio caído sea cosa de algunos segundos, y cómo eso puede beneficiar la continuidad del negocio. La recuperación de un sistema caído consiste, en un entorno “virtualizado”, en volver a lanzar una nueva máquina virtual con una copia intacta (y auténtica) del servidor dentro de ella; de hecho, el servidor a restaurar no es más que un simple fichero ejecutable para la capa de virtualización. También es fácil ver cómo la virtualización permite balancear, de forma ágil, la migración de servidores y sistemas de unas máquinas a otras, ya que sólo consiste en migrar ficheros y lanzar su ejecución dentro de nuevas máquinas virtuales.
|
El uso de las tecnologías de la virtualización en entornos empresariales debe hacerse con cuidado y mucho tino. El propio negocio y normativas como la protección de datos personales obligan a no tomarse a la ligera este tema y sólo mirar a los aspectos de rentabilidad de infraestructuras y disponibilidad.
|
Opción ineficaz
Por otra parte, este encapsulamiento dentro de otro encapsulamiento, estos sistemas operativos dentro de otros sistemas operativos, quizás aporten generalidad y flexibilidad al sistema, pero es fácil entender que no aportan eficacia. Diez procesos idénticos ejecutándose en diez máquinas reales independientes no tardan en hacer su tarea en una décima parte de lo que tarda ese mismo proceso corriendo en diez máquinas virtuales de un mismo servidor, sino que tardan menos y, en algunos casos, mucho menos.
La virtualización aporta flexibilidad a costa de la eficacia. Si uno piensa realmente las operaciones que se tienen que realizar, por ejemplo, para que un servidor web Apache, corriendo en una máquina virtual, se comunique con un servidor de base de datos corriendo en otra máquina (virtual) a través de una red TCP/IPsec o SSL TCP/IP (virtual) gestionada por la misma capa de virtualización, veremos que no es esa la forma más sencilla de resolver algo que bien podrían ser dos aplicaciones, dos procesos corriendo bajo el control de un único sistema operativo y comunicándose a través de un socket interno en una misma máquina.
A pesar de estas ventajas y pequeños inconvenientes, es más difícil ver cuál es el efecto de la virtualización en otros aspectos importantes como lo son la seguridad en general de las aplicaciones que se ejecutan, y cómo el sistema asegura la separación de entornos, característica tan conveniente en muchos escenarios y, sobre todo, en aquellos que procesan datos de algún modo “sensibles”.
La abstracción y generalización que se realiza por debajo del sistema operativo y por encima del hardware, la hace una capa que también es software y que se encarga de ordenar y supervisar las actividades de los sistemas operativos invitados y, por ende, de los procesos que se ejecutan dentro de éstos. Visto desde éste punto de vista, cada sistema operativo y sus procesos, se integran en un único objeto que es ejecutado por la capa de virtualización dentro de una máquina virtual. Esta relación es la misma que hay entre las aplicaciones y los sistemas operativos multitarea que las ejecutan y que tan bien conocemos desde hace años. La virtualización, de hecho, se consigue encapsulando un sistema operativo dentro de otro sistema operativo, en el sentido amplio de estos términos.
Bifurcación evolutiva
Coincidiendo con las declaraciones de Thomas Bitman2, vicepresidente de Gartner, hay que reconocer que la virtualización supone una bifurcación en la evolución de los sistemas operativos y que puede traer consecuencias: “Traditionally the operating system has been the center of gravity for client and server computing, but new technologies, new modes of computing, and infrastructure virtualization and automation are changing the architecture and role of the operating system. The days of the monolithic, general-purpose operating system will soon be over”.
Este juego de “matrioskas” que representan las tecnologías de la virtualización tiene muchas implicaciones importantes, entre ellas, que la seguridad y el secreto de los sistemas ejecutándose dentro de las maquinas virtuales no puede ser mayor de lo que sea en la capa de virtualización y sistemas anejos; en particular, en el “hipervisor”.
Este hipervisor, programa de control o como queramos llamarlo, recuerda a la situación planteada en la película “El show de Truman”4 en la que todo el mundo, excepto el mismo Truman, sabía de la virtualidad de su vida, de la falsedad de todo lo que ocurría a su alrededor. De hecho, es la existencia de ese hipervisor lo que ha dado tanto juego a los entornos virtuales para “correr” porciones de software de efectos imprevisibles; tanto si son malware, como si se trata de desarrollos poco fiables. La ejecución controlada en entornos virtuales es la esencia de muchas herramientas de depurado e ingeniería inversa. Por lo que es fácil entender la absoluta indefensión de las aplicaciones que se ejecutan en una máquina virtual frente al hipervisor o programa de control. En muchos sistemas físicos hay que acceder físicamente a los buses de memoria que están en algún nivel interno de los circuitos impresos para poder hacernos con claves secretas, pero en los casos virtualizados basta con acceder al hipervisor.
|
El poder de las investigaciones forenses es enorme si se aplican en escenarios en los que sólo hay usuarios comunes e inocentes; pero conviene apuntar que empiezan a aparecer medidas “anti-análisis forense” (anti-forensics). Bajo este nombre se engloban los métodos para prevenir que las investigaciones forenses consigan su meta: la detección, la obtención y el análisis de evidencias.
|
Más complejidad y volatilidad
La anunciada hégira5 hacia la virtualización2 me recuerda a aquellos que, perdidos en un desierto, caminan y caminan hasta encontrarse unas huellas de pisadas y que, después de unos metros, transforman su alegría inicial en angustia al descubrir que son las huellas propias, que se está sólo y que se ha regresado al punto de partida. Desde el punto de vista de la seguridad, la virtualización no ayuda, sino que la dificulta al hacer más complejos, agiles y volátiles los sistemas. Los sistemas virtualizados representan concentraciones de procesos en máquinas que se convierten en más atractivas para el atacante. Si te infiltras dentro y logras saltarte las barreras de usuario a administrador del primer sistema operativo, y de ahí saltas a la capa de virtualización, no solo te has hecho con tu máquina virtual, sino con todas las que se ejecutan y se vayan a ejecutar en esta plataforma.
La seguridad nace de las complejidades exponenciales y no de las polinómicas. Realizar un ataque a una clave de 40 bits requiere, en el peor de los casos, 240 pruebas, una clave de 80 bits requiere 280, lo cual es muchísimo más esfuerzo, pero descubrir dos claves de 40 bits sólo requiere 241 intentos, que es prácticamente el mismo esfuerzo que descubrir una. Así pues, la concentración de servicios en una máquina la hace más atractiva para el ataque y no aumenta la seguridad de las aplicaciones allí concentradas, ya que todas dependen de una sola, el sistema hipervisor.
Otro de los aspectos a tener en cuenta en estos nuevos escenarios así como en los clásicos, es el de la integridad y autenticidad de los procesos que se ejecutan. La concentración de máquinas virtuales en una misma máquina real no cambia la situación a este respecto. Cuando se habla de virtualizar el escritorio de los usuarios se suele mentar a la seguridad, ya que el hardware que se quiere utilizar no necesariamente tiene que ser de fiar. El escritorio virtualizado que recibe el usuario no está autenticado de ningún modo que él pueda comprobar, por lo que puede quizás estar trabajando sobre una versión convenientemente manipulada por un atacante interpuesto.
|
La concentración de servicios en una máquina la hace más atractiva para el ataque y no aumenta la seguridad de las aplicaciones allí concentradas, ya que todas dependen de una sola, el sistema hipervisor.
|
Las ventajas de la virtualización parecen estar en el ámbito de la rentabilización de sistemas hardware ya adquiridos, y conectados a la red de potencia y a los sistemas de refrigeración. El rédito más inmediato es la facilidad con la que se pueden montar sistemas de alta disponibilidad; sin embargo, la seguridad de esos sistemas todavía hay que analizarla. También hay que tener en cuenta que la virtualización supone un cambio de mentalidad a la hora de diseñar, gestionar y operar grandes y pequeños CPDs y esos componentes también afectan seriamente a la seguridad del sistema.
La virtualización es un tema muy atractivo desde el punto de vista académico, sobre todo si se la junta con el Grid6 y Cloud7 computing, y con los agentes móviles8, pero hay que recordar que en ninguno de esos casos se ha logrado aún superar el inconveniente de su ausencia esencial de seguridad. El uso de las tecnologías de la virtualización en entornos empresariales debe hacerse con cuidado y mucho tino. El propio negocio y normativas como la protección de datos personales obligan a no tomarse a la ligera este tema y sólo mirar a los aspectos de rentabilidad de infraestructuras y disponibilidad. El ciberespacio no tiene por qué ser seguro, pero los sistemas empresariales sí. Dejemos que el ciberespacio siga siendo, como dijo William Gibson9, esa “consensual hallucination experienced daily by billions”. A cada cosa, lo suyo.
|
Desde el punto de vista de la seguridad, la virtualización no ayuda, sino que la dificulta al hacer más complejos, ágiles y volátiles los sistemas.
|
1 Ver http://en.wikipedia.org/wiki/IBM_M44/44X
2 Ver http://www.gartner.com/it/page.jsp?id=638207
3 De la piadosa leyenda medieval titulada “Hystoria del emperador Carlomagno y de los doze pares de Francia, e de la cruda batalla que huvo Oliveros con Fierabrás“, (Sevilla, 1525), capítulos 17 y 19. En esta versión se dice que el gigante Fierabrás, el de feroces brazos, ganó dos barriles del bálsamo con el que fue embalsamado el cuerpo de Jesucristo, por la fuerza de armas en Jerusalén, y que Oliveros, mortalmente herido, bebe de él y sana por completo”
4 Ver http://www.imdb.com/title/tt0120382/
5 Hégira: Término que designa el traslado de Mahoma desde la Meca hasta Medina el 16 de julio del año 622 de nuestra Era, y que es considerado el primer año de la Era Islámica por los musulmanes.
6 Ver http://en.wikipedia.org/wiki/Grid_computing
7 Ver http://en.wikipedia.org/wiki/Cloud_computing
8 Ver http://en.wikipedia.org/wiki/Mobile_agent
9 Ver http://en.wikipedia.org/wiki/William_Gibson
|
|
|
|