Showing posts with label virtualizacion. Show all posts
Showing posts with label virtualizacion. Show all posts

Wednesday, May 27, 2009

Desmaterializacion


Hoy termine la documentación del post anterior. Seguramente voy a trabajar en una próxima en ingles, para pulirla un poco mas.

Creo que la idea de virtualizar un server físico debería llamarse Desmaterializacion, igual que el método que utilizaban en Star Trek para transportarse.

El documento en PDF es mucho menos engorroso y mas practico que seguir el anterior posts.

Para quienes quieran una copia, dejo el link.

Monday, May 25, 2009

Windows XP P2V con Clonezilla y VirtualBox




Este fin de semana largo estuve trabajando para migrar una máquina física con Windows XP a una máquina virtual en VirtualBox.

Tenia una notebook con varios años y dado que no era posible actualizarla, encontré una buena opción el virtualizarla.

Esto que seguramente con herramientas como VMWARE debe resultar medianamente sencillo, utilizando opensource requiere un poco mas de esfuerzo.

Por lo tanto, me propuse hacer un pequeño manual de migración, realmente no les prometo que esto sea fácil, como dijo Churchill "No tengo nada más que ofrecer que sangre, esfuerzo, sudor y lágrimas"

Todo comenzó con un articulo llamado "How to convert a physical server to a virtual one using the open source tool Clonezilla Live" .

La nota da pautas generales para hacer esta migración hacia VMWARE, pero mi intención fue hacerlo hacia VirtualBox.


Algo a tener en cuenta cuando realizamos P2V es el impacto del hardware actual sobre la plataforma virtual.





En esto la configuración del HAL ( Hardware Abstraction Layer ) puede traernos mas de un dolor de cabeza.

Como bien indica este link , mover una máquina con Windows instalado a otro equipo no es tan sencillo como Linux, dado que el kernel y los drivers dependen del hardware instalado.



Por lo tanto hay algunos pasos deben ser necesarios seguir antes de crear la copia.

Antes que nada realizar un backup/imagen de respaldo antes de tocar la configuración actual de la máquina.

En el siguiente link explican lo que debemos hacer en caso de mover un disco con Windows a otra plataforma :

Moviendo disco

Otro punto a tener en cuenta es sobre los drivers agp440.sys e intelppm.sys, los cuales pueden traernos problemas.

Antes de realizar la copia, se pueden renombrar, los mismos se encuentran en el directorio C:\Windows\SYSTEM32\drivers.

Recomiendo también tener un iso de Windows XP, seguramente se necesitara utilizar en caso de reparaciones.

Teniendo esto preparado, solo hay que cruzar los dedos para que funcione, no es raro encontrarse con pantallas azules luego de la migración.

No voy a entrar en detalles sobre Clonezilla, ya que de por si necesitaría un post dedicado a esta excelente herramienta, solo voy a decir que es un software que nos permite clonar una máquina, igual que lo hace Norton Ghost, incluso permite clonar varias máquinas en simultaneo.

Algunas de las características de este programa :

  • Clona solamente los bloques usados del disco.
  • Provee multiple filesystems y soporte de LVM, incluye ext2, ext3, xfs, jfs,LVM2 en GNU/Linux; FAT, NTFS en Microsoft Windows; y HFS+ en Mac OS.
  • Soporta CD/DVD, USB flash/hard drives, y PXE
  • El mismo Clonezilla Live permite crear y recuperar la copia.


En este link se puede bajar la version Live del software. Con el iso generaremos un CD o un USB, el cual nos serviría para bootear en el sistema que vamos a clonar.

Los pasos a seguir :




Arrancamos el sistema y se nos presentara un menu de arranque.

En mi caso seleccion la primera opción :

Clonezilla live ( Defaults settings, VGA 1024x768)

Luego de esto el sistema arranca y comienza a reconocer los dispositivos instalados.

Luego nos presenta un menu para seleccionar el lenguaje y en el próximo paso la distribución del teclado.


Seleccionado el teclado, elegimos si arrancamos Clonezilla o si salimos a un shell.
Por supuesto, seleccionamos iniciar Clonezilla.


Ahora debemos seleccionar que tipo de copia realizaremos :
  • device-device es para for device-to-device direct cloning.
  • device-image es para device-to-image backup.
La primera opción nos permite realizar el clonado del sistema completo creando una imagen del sistema.

El próximo paso es decir como almacenaremos la imagen, tenemos varias opciones.


En mi caso, dado que no contaba con un medio externo, elegi copiar la imagen por SSH a otro equipo.

También tenemos la posibilidad de hacerlo por NFS o Samba.

Teniendo ambas máquinas a 100MB FullDuplex, y dado que Clonezilla solo copia los sectores con datos, una imagen de 30GB tomo 60minutos.

Cuando seleccionamos SSH, tenemos que configurar la IP de la máquina, lo cual puede hacerse por DHCP o manualmente.

Una vez que recibimos la IP, debemos dar los datos del server SSH y luego usuario y directorio destino de la imagen. ( Este directorio debe estar previamente creado y contar con los permisos necesarios )



Con los datos, Clonezilla se conectara al server destino, nos mostrara la llave RSA y nos pedira aceptar la conexion. Luego de esto nos pedira ingresar la password del usuario.


Luego de esto, se nos mostrara las particiones del sistema, la de destino debería tener suficiente espacio para almacenar la imagen.

El próximo paso es elegir el modo en que realizaremos la clonación, dado que aun no conocemos bien el software, seleccionamos el modo Beginners.


Paso seguido debemos seleccionar que tipo de clonación realizaremos, el disco entero como imagen o particiones.

Esto es importante tenerlo en cuenta, ya que afectara el modo que realizaremos el restore.

Dado que mi máquina tenia dos particiones y solo quería clonar la primera, elegí, guardar las particiones como imagen ( saveparts ).


Dando ok, Clonezilla nos mostrara el nombre que tendra la imagen


En el siguiente paso seleccionaremos las particiones a clonar. Esto se hace mediante la barra espaciadora. En este ejemplo que vemos, solamente hay una partición.


Cuando damos ok, el sistema nos muestra el comando que utiliza para la clonación. Si luego queremos repetir esto, lo podemos hacer directamente desde el shell mediante el siguiente comando :

/opt/drbl/sbin/ocs-sr -q2 -c -j2 -z1 -i 2000 -p true saveparts "2009-05-27-02-img" "hda1"

Luego de un par de confirmaciones, comenzara la copia.


Terminada la creación de la imagen, podemos reiniciar el sistema.

En este momento estamos en este punto :

La máquina a clonar fue preparada, se realizo una imagen, la cual se encuentra
en el Host.

Ahora vamos a crear una máquina virtual en VirtualBox, algo relativamente sencillo.

Hacemos click en el icono New y seguimos los pasos habituales.




Una vez creada la máquina virtual, montamos el ISO de Clonezilla en el CDROM para poder bootear con el.


Ya estamos listos para comenzar la tercer y ultima etapa.


Arrancamos la máquina virtual y nos encontraremos con la misma pantalla que al realizar la imagen.

Seleccionamos el primer item.


Damos ok al lenguaje preferido y a la distribución de teclado.

Luego de esto seleccionaremos "Iniciar Clonezilla"


Ahora seleccionaremos la opción "device-image", ya que recuperaremos la copia desde una imagen.

Ahora debemos seleccionar el método por el cual recuperaremos la imagen.
Como en el caso de la creación tenemos, Disco local, SSH, Samba, NFS.

En este punto, quiero aclarar algo. Intente realizar la recuperación desde una particion local, copie la imagen a una partición que cree especialmente, ya que VirtualBox permite el acceso a dispositivos raw desde el SO cliente. Es decir que podemos hacer que el SO Cliente monte una particion del SO Host.

Lamentablemente en mi caso, no pude lograr que Clonezilla detectara la imagen. Fue bastante frustrante, de todas maneras para quienes quieran hacer la prueba les dejo el comando para que VirtualBox monte una particion Raw y la deje disponible para el cliente.

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -register


Esto creara un archivo .vmdk el cual puede montarse como un disco mas, como podemos apreciar en la siguiente imagen.


Bien sigamos con la recuperación.

En este punto seleccione que se realice por medio de ssh...

Nuevamente se pidio una IP para el equipo, usuario, directorio donde estaría la imagen, ingresar el password.

Exactamente igual al momento de la clonacion.


El siguiente paso es seleccionar el método, Beginner o Expert. En este caso seleccionaremos Expert, ya que mas adelante debemos ingresar algunas opciones en forma manual.

Ahora, el siguiente paso es diferente a los dados en la creación de la imagen.

Debemos seleccionar que haremos, si crear una imagen o restaurar. Por supuesto que en este momento restauraremos una imagen, pero dado que solo queremos restaurar una partición ( recordemos que fue lo que seleccionamos en el momento de hacer la imagen ), la opción a elegir es "restoreparts"


Ahora la pantalla nos mostrara todas las imágenes que tengamos hechas. Dado que yo realice diferentes pruebas, tengo tres imágenes. Solamente seleccionaremos la que pensemos utilizar.

El próximo paso es elegir las particiones destino donde restauraremos el SO.


Ahora se nos preguntara por las opciones de recuperación, seleccionaremos las siguientes :

-e1 auto
-c
-t1
-r
-cm


En la próxima pantalla seleccionaremos

-j0

Por ultimo, indicaremos que luego de finalizar haga un reboot. Esto mediante :

-p reboot



El comando para ingresar cuando necesitemos repetir el procedimiento quedo :

/opt/drbl/sbin/ocs-sr -e1 auto -c -t1 -r -j3 -cm -j0 -p reboot restoreparts  "Sys01-2005-09-28-img" "hda1"



Se nos pedira una confirmación y luego comenzara la restauración.




Terminada el restore, deberemos quitar el ISO del driver del CD y arrancar el sistema.

Seguramente aparecerá una pantalla diciendo que Windows no se apago bien y si queremos arrancar a modo prueba de fallos.

No es necesario eso, por lo tanto seleccionamos arrancar Windows normalmente.

Si tenemos suerte y todo funciono, tendremos nuestra máquina virtualizada.


Si les da BSOD, no se preocupen, yo estuve dos dias enteros buscando por internet la solucion, si seguimos los consejos de preparación, solamente deberemos arrancar en modo reparación la máquina con un ISO de Windows XP.




Una vez en el prompt de Windows en modo recuperación, deberemos copiar los siguientes archivos del CD original al directorio Windows/system32/drivers/

Atapi.sys, Intelide.sys, Pciide.sys, y Pciidex.sys


Bueno con esto termina este supermega post. Espero en la semana hacer un documento un poco mas respetable en pdf y compartirlo por aca.


Links interesantes :

Migrating Real Windows to VirtualBox

HowTo Convert Physical to virtual

You receive a Stop 0x0000007B error after you move the Windows XP system disk to another computer

http://www.virtualbox.org/wiki/Migrate_Windows

Tuesday, May 19, 2009

Poniendo la basura en su lugar


Que sucede cuando encontramos aplicaciones expuestas a internet que tienen vulnerabilidades graves y que por motivos de tiempo, económicos o por encontrarse discontinuadas no se pueden modificar ?

Si la aplicación es muy critica para el negocio nos encontramos ante un problema serio, ya que al no quitarla dependiendo del tipo de vulnerabilidad y de la arquitectura implementada, pone en peligro a todo el entorno.

Veamoslo gráficamente.

La arquitectura que vemos arriba es mínimamente lo que debería tener una empresa mediana. Lamentablemente no creo que refleje la realidad, muchas empresas apenas tienen un firewall con una DMZ para los servicios web y luego las Bases de Datos en la LAN.

Los problemas de aplicaciones desactualizadas o con bugs impactan en ambas arquitecturas, las mas sofisticadas y las mas pobres y de esta manera poner en peligro a toda la infraestructura.



En el caso que vemos arriba, un atacante que tome control de una aplicación o una base de datos en alguna de las DMZ, puede entonces escalar su ataque a otros equipos con mayores privilegios.

Una solucion posible

Como mantener estas aplicaciones funcionando, sin que impacten en su entorno ?
Una solucion posible estaría en crear una DMZ mas, una especie de ambiente de cuarentena, donde irían los sistemas vulnerables. Este ambiente estaría fuertemente controlado y contaría con los minimos privilegios posibles.

Por supuesto que no es la solucion ideal, pero es una solucion posible.

Para implementar esto podemos valernos de máquinas virtuales. Veamos una posible arquitectura :


A nivel del ambiente virtual, podemos ver una propuesta de Gartner.




Algunas ventajas de este tipo de implementacion :

  • Rootkit detection
  • Los administradores no pueden deshabilitar en forma arbitraria los controles de seguridad.
  • Malware instalado no deshabilitar controles de seguridad
  • Previene la manipulacion de la memoria, antes que ocurra.