
Saludos, muchos de nosotros usamos Veeam para proteger VM Linux, y en ocasiones, aunque yo lo recomiendo siempre, es necesario activar las casillas de application-aware y enable guest file system indexing en estas VM basadas en Linux.

Para ello podemos usar un usuario del sistema, que se puede complicar, o que dependiendo de los Entornos Corporativos no es posible, ya que solamente se trabaja con Linux Private/Public Keys, en este Blog vamos a ver los pasos de cómo securizar las VM Linux para poder hacer las copias con Veeam de la manera más segura.
Creando Linux Private Key
Lo primero que tendremos que hacer es generar el conjunto de claves que vamos a usar en nuestras VM Linux, este comando de ssh-keygen puede lanzarse en cualqueir máquina, simplemente recordar guardar la Public Key, ya que la desplegaremos en todas las VM Linux, y lo más importante, guardar también la Private Key, que será la que tendremos que introducir en nuestro Veeam Backup más tarde.

Durante el proceso de creación de las llaves, podemos introducir una passpharse adicional a esta llave pública, más seguro si cabe:
root@server:/home/oper# ssh-keygen -C "Llave SSH para Backup de Veeam" -O no-x11-forwarding -O no-port-forwarding -O no-agent-forwarding
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
44:91:66:d4:8e:6a:75:39:43:02:f7:31:cb:61:90:e2 Llave SSH para Backup de Veeam
The key's randomart image is:
+--[ RSA 2048]----+
| o+= ooo |
|. .=.+..o |
|.. +. =.o |
| E =.B |
| o SS. |
| o |
| . |
| |
| |
+-----------------+
Si queremos leer el contenido del fichero, y guardarlo para después copiarlo/pegarlo haremos un more de la Public Key, ¡cuidado! el fichero debe ser una sola línea cuando lo copiamos, no dos.
root@server:/home/oper# more /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4guQD4CCCM9bBuJyzjfPpvnkZ8Ir0t0FraUUt1/GtLA4tJ1N56hPvE73cicA8GAsJh5S+34v8lwNWb4zoln5n+VNc4TalpDrHyD4Z9GVBEfAxsxmKIkIFIA9MRKJqwf2P7dOZS3ETM2ADUFj2tVERwlC+6AodQwbtkzqbuZFWsef+HiCsTeU5pgG6BdPoh/+fsmhqlAa
u2dnbKSFfQKzG8ImSxIgE5rEPwG1NcgNCvIKqAxTkgKojmYHPGHdLbeueduVVnmOnPH37GwK2tz5+Vfmpqz4n/i2b9RUFfuQtKXbwHerz/ecg1lNVw/fHBLbX9iK4E9yCcYAd9eSfiHX7 Llave SSH para Backup de Veeam
Y podremos hacer también un more de la Private Key, que como he dicho debemos guardar de manera segura, ya que es el acceso a las VM Linux.
root@server:/home/oper# more /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,72EED6D414766A8EEB2ECF0FFE1BDF54F
xdMK1IZ+rNYBddPMeNUQXa+quS5TfSsGZE/J+fw2XiZLDZ+JwcY+eLpzrotlBC5u
DN+O0hwSowiHLBeFbd9ERVGlnYI8gvSqrJ2jkCiys5GheSlpQ5K0wJTDqxFUWpV/
[...]
9HIVaBr33T8S41lC1XezrbsvhITsCYhijGO2axtcIrR3aHBvEv7jxWJCzHCWmRtu
-----END RSA PRIVATE KEY-----
Configurando la VM Linux
Es el turno de la VM Linux que queremos proteger de manera correcta, en primer lugar deberemos tener instaladas las siguientes dependencias para que se pueda crear el índice de ficheros, por lo general son tres paquetes que suelen estar en casi todos los sistemas, instalar con apt-get install o yum install
mlocate gzip tar
Una vez tenemos las dependencias instaladas, vamos a crear un usuario que solamente hará de intermediario para subir a privilegios de root, que no a root directamente, y en este usuario vamos a poner nuestra llave pública.
- Usuario: veeam-linux
- User id: 90
- Home: /var/lib/veeam-linux
- Fichero con la llave SSH: /var/lib/veeam-linux/.ssh/authorized_keys
Vamos a crear el usuario ahora con el siguiente comando:
root@server:/home/oper# useradd -b /var/lib -c "Veeam Linux user Backup" -g users -m -u 90 veeam-linux
Desactivaremos que el usuario se pueda conectar usando la contraseña
passwd -l veeam-linux
Y ahora desde root nos loguearemos como el nuevo usuario para introducir la Public Key dentro:
su – veeam-linux
mkdir .ssh
chmod 700 .ssh/
vi .ssh/authorized_keys
Y en este fichero introduciremos la Public Key, posteriormente saldremos del usuario veeam-linux, lanzaremos por ultimo
chmod 600 .ssh/authorized_keys
y volveremos a root, para ejecutar el siguiente comando visudo y añadir al final:
veeam-linux ALL=NOPASSWD: ALL
Convertir la Private key en formato .ppk válido para Veeam
Necesitamos convertir nuestra Llave privada en un formato soportado por Veeam, en este caso .ppk, en cualquier VM con shell Linux donde tengamos la llave privada ejecutaremos lo siguiente, esto solamente tendremos que hacerlo una vez:
root@server:/home/oper# apt-get install putty-tools
root@zmld01:/home/oper# puttygen /root/.ssh/id_rsa -o RSA_private.ppk
Enter passphrase to load key:
root@server:/home/oper# ls
RSA_private.ppk
Y transferimos el fichero RSA_private.ppk al Server de Veeam.
Configuración de SSH Server
Deberemos por último comprobar que en la configuración de SSH en el archivo de configuración /etc/ssh/sshd_config tenemos descomentado lo siguiente
AuthorizedKeysFile %h/.ssh/authorized_keys
Crear el usuario en todas las VM Linux e instalar Public key
Ya solamente nos queda, seguir los pasos anteriores en todas las VM Linux que queramos proteger de manera más eficiente, y automatizar estos pasos con puppet, por ejemplo, si tenemos varios cientos de servidores.
Configurando los trabajos de Copias de Veeam
Nos iremos ahora a nuestro Manage Credentials Veeam en el menú principal de la aplicación

Pulsaremos en Add – Linux Private key

Deberemos rellenar los campos con la siguiente información:
- El usuario que hemos creado en la VM para este menester
- Seleccionaremos el fichero .ppk y entonces escribiremos la Passphrase que protege el fichero
- Puerto por defecto 22 a no ser que lo hayamos cambiado por otro puerto por motivos de seguridad
- Importante marcar el check de Elevate specified account to root

Ya de vuelta a los Trabajos de Copia donde tenemos las VM, deberemos ir hasta Guest Processing y marcar las opciones:
- Enable application-aware processing
- Enable guest file system indexing
- En Guest OS credentials seleccionaremos nuestra configuración de Public/Private key y pulsaremos Test Now

Si todo ha ido bien, y tenemos todo configurado adecuadamente, veremos lo siguiente:

File Exclusions, novedad de Veeam v9, en Linux
Una de las novedades de Veeam v9 es File Exclusions, y ahora que tenemos todas las VM Linux bien configuradas, podemos irnos hasta Guest Processing – Application-awareness y marcar File Exclusions, donde podemos excluir ciertos directorios Linux, ya bien sea porque son enormes y no utilizados, o porque simplemente son datos de usuario sin importancia.

En esta mista ventana de configuración, podemos irnos a la pestaña Scripts y añadir nuestros Scripts para el pre-freeze y post-thaw, que a nivel de Zimbra por ejemplo, se transforma en un Script donde se paren los servicios y se haga una copia del LDAP, y un rsync de la carpeta Zimbra por ejemplo.
Indexar los ficheros en las VM Linux
Es la hora de indexar los ficheros en la VM, para poder posteriormente realizar one-click restore, haremos click en Guest Processing – Indexing

Y ahora por cada VM, podemos seleccionar la configuración que queremos, por defecto los siguientes directorios están ya excluidos del index
Restaurando ficheros a la VM directamente
Ya solamente nos quedaría usar la herramienta de Veeam Restore Guest Files Linux

Y cuando exploramos los ficheros de la VM, recordar que esto despliega un appliance intermedio llamado FLR, ya podremos hacer overwrite del fichero directamente hacía la VM en producción, muy cómodo. También podemos conservar ambos ficheros con la opción Keep.
Espero que os guste este post, ya que me parece una de las mejoras maneras de realizar copias de seguridad de las VM en Linux, aunque también hay que marcar la opción de VMware Tools quiescence para poder ejecutar los Scripts.
Fuentes
Este Blog post no hubiera sido posible sin los siguientes enlaces:
- http://www.provirtualzone.com/veeam-create-linux-public-key-login-credentials/
- https://forums.veeam.com/veeam-backup-replication-f2/best-practice-for-backing-up-linux-vms-t20144.html
- https://helpcenter.veeam.com/backup/em/em_preparing_for_linux_guest_file.html
- https://helpcenter.veeam.com/backup/hyperv/credentials_manager_linux_pubkey.html

Felicitaciones Jorge por este excelente artículo, y en general por tu blog que me ha sido de gran ayuda para resolver muchos problemas del día a día con Zimbra y VMware
Seria espectacular si hablaras un poco mas sobre “application-aware” y “enable guest file system indexing”, en si para que sirven, cual es la ventaja en comparacion a no usarlas. Yo he venido realizando backups de VM’s Linux sin tener estas opciones habilitadas y no he tenido problemas hasta ahora.
Gracias!!! Saludos desde Venezuela!
Saludos Rafael,
Claro, la semana que viene asistiré al VeeamON Tour, con lo que puedo crear este contenido directamente con la gente de Veeam, de primera mano 🙂
Un saludo