martes, 11 de marzo de 2014

Recuperando la clave de un usuario de una maquina virtual basada en Xen 3

Esta receta se puede usar para recuperar la clave de un usuario de una maquina virtual basada en Xen 3. Esto sirve para el caso de que tengamos acceso al contenedor pero no a la maquina virtual. También lo pueden usar para recuperar la clave de root de la maquina virtual. 

Lo primero que debemos averiguar es cual es el loop que esta usando esta maquina virtual, eso lo pueden hacer con el siguiente comando:

-------------------------
contenedor:/home/usuario#losetup -a
/dev/loop1: [fe03]:67114596 (/home/maquinas/tu_maquina_virtual1)
/dev/loop3: [fe03]:12980 (/home/maquinas/tu_maquina_virtual2)
/dev/loop4: [fe03]:12975 (/home/maquinas/tu_maquina_virtual3)
/dev/loop5: [fe03]:12982 (/home/maquinas/tu_maquina_virtual4)
/dev/loop6: [fe03]:18703 (/home/maquinas/tu_maquina_virtual5)
/dev/loop7: [fe03]:67114277 (/home/maquinas/tu_maquina_virtual6)
/dev/loop8: [fe03]:67114283 (/home/maquinastu_maquina_virtual7/)
-------------------------

Como ejemplo usaremos tu_maquina_virtual3, para cambiarle el password a un usuario llamado juanito

Luego apaga la maquina virtual

-------------------------
contenedor:/home/usuario#xm destroy tu_maquina_virtual3
-------------------------

Luego buscar la información geometrica del disco, pueden usar este comando:

-------------------------
contenedor:/home/usuario#fdisk -lu /dev/loop4

Disk /dev/loop14: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders, total 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00092d83

       Device Boot      Start         End      Blocks   Id  System
/dev/loop4p1              63      385559      192748+  83  Linux
/dev/loop4p2          385560     1381589      498015   82  Linux swap / Solaris
<strong>/dev/loop4p3         1381590     6281414     2449912+  83  Linux</strong>
-------------------------

El loop que contiene la partición raiz de la maquina virtual es el /dev/loop4p3, esta información es importante ya que nos permite calcular cual es el limite o sector que delimita el comienzo de la partición. 

limite = 1381590*512
limite = 707374080

A continuación montan la partción en /mnt/ con el siguiente comando:

-------------------------
contenedor:/home/usuario#mount -o loop,offset=707374080 /home/maquinas/tu_maquina_virtual3 /mnt/
-------------------------

Luego hagan un chroot a /mnt/ y crean una jaula para que todos los procesos que surjan a partir de ese momento trabajen creyendo que "/mnt/" es "/" ... 

-------------------------
contenedor:/home/usuario#chroot /mnt/
contenedor:/#
-------------------------

Luego cambian la clave de juanito

-------------------------
contenedor:/#passwd juanito
-------------------------

Salir de la jaula

-------------------------
contenedor:/#exit
contenedor:/home/usuario#
-------------------------

Desmonten la partición 

-------------------------
contenedor:/home/usuario#umount /mnt/
-------------------------

Ahora prenden la maquina virtual 

-------------------------
contenedor:/home/usuario#xm create /etc/xen/tu_maquina_virtual3.cfg -c
-------------------------

Listo ya han cambiado el password del usuario juanito. 

== para Xen 4.0 ==

Para la versión de Xen disponible en Squeeze, parece ser más sencillo recuperar acceso a una máquina virtual.

En la mayoría de nuestros contenedores, el procedimiento se limita a montar el volumen lógico correspondiente, sin parámetros especiales ni nada por el estilo de la siguiente manera:

-------------------------
 caracas:/# mount /dev/mapper/aulavirtual-disk /mnt
-------------------------

Una vez montado el volumen lógico, podemos seguir haciendo lo mismo que hicimos más arriba:

-------------------------
caracas:/# chroot /mnt
caracas:/# passwd
Enter new UNIX password: 
Retype new UNIX password: 
caracas:/# exit
-------------------------

Como se nota, este procedimiento es substancialmente más simple que el inherente a máquinas en Xen 3.0.

Referencias
http://joaquin.blogs.canaima.org.ve/?p=11
http://e1th0r.gulmer.org.ve/?p=343

No hay comentarios:

Publicar un comentario en la entrada