Snapshots, backups y hardening

Snapshots

En proxmox se pueden hacer snapshots, que suelen tardar segundos en hacerse.

El poder hacer snapshots me permite tener puntos restauración temporales para volver después de una prueba. Puedo hacer una snapshot antes de instalar o modificar nada y curarme en salud. Para probar Disastre recovery.

Las snapshots solo guardan los cambios realizados, por lo que en cuanto a la utilización espacio son eficientes.

Nota: Las snapshots no sustituyen a los backups.

Para hacer las snapshots he utilizado los siguientes comandos:

qm snapshot 220 before-hardening --description "20260507 - Clean VM before hardening" 
qm snapshot 221 before-hardening --description "20260507 - Clean VM before hardening" 

Como buena práctica recomendaría poner la fecha en la que se hacen las snapshots.

He creado el siguiente script para poder hacer los snapshots al automáticamente.

#!/bin/bash  
# snapshot-k8s-vms.sh  
# Snapshots de todas las VMs del cluster de kubernetes

set -e

#Chequeo la entrada de los argumentos
if [ "$#" -ne 2 ]then 
	echo "Uso: $0 <argumento1> <argumento2>" 
	exit 1 
fi

#Capturo los argumentos y ejecuto las snapshots
NOMBRE_SNAPSHOT="${1}"  
DESCRIPCION="${2}"  
for i in 0 1; do  
echo "Creando snapshot '$SNAPSHOT_NAME' para la VM 22$i..."  
qm snapshot 22$i "$SNAPSHOT_NAME" --description "$DESCRIPTION"  
done  
echo "Todas las snapshots creadas correctamente"

Backups

Lo bueno de los backups en proxmox es que se pueden automatizar con el scheduler, tienen compresión y se pueden hacer en diferentes almacenamientos.

Para hacer el primer backup de cada VM utilizo el siguiente comando:

# Backup all K8s VMs  
vzdump 220 221 --compress zstd --mode snapshot --storage local

Los backups en modo snapshots es una funcionalidad que se puede hacer teniendo instalados los agentes qemu en las VMs y hace un backup consistente aún estando la VM corriendo.

Para automatizar los backups con el scheduler lo hago desde la ventana gráfica ya que no he encontrado como hacerlo desde el terminal. Añado captura de imagen: minipc

Yo he creado una tarea para que se ejecute todos los domingos a las 4 de la mañana y tenga una retención de los cuatro últimos backups.

Como best practice para los backups, recomiendo la estrategia 3-2-1.

  • 3 copias de los datos.
  • 2 copias en sitios diferentes.
  • 1 copia offsite.

Me falta por solventar la copia offsite, que voy a enchufar un ssd externo al minipc de vez en cuando para hacer copia de los backups ahí.

Hardening

Antes de ponerme en materia a instalar y hacer pruebas y aprender voy a empezar a securizar todo desde la base.

Lo primero es mantener actualizado el hipervisor proxmox:

apt update  
apt dist-upgrade -y
pve-efiboot-tool refresh

Lo siguiente que hago es denegar el acceso ssh mediante contraseña a root. Antes de nada recordad pasaros la key desde vuestro workstation, en mi caso desde el mac.

ssh-copy-id [email protected]
vi /etc/ssh/sshd_config
PermitRootLogin prohibit-password  
PasswordAuthentication no  
PubkeyAuthentication yes

Una vez hecho los cambios reiniciar el ssh:

systemctl restart sshd

Permitir solo el acceso a la interfaz de proxmox desde mi red local:

vi /etc/default/pveproxy
ALLOW_FROM="192.168.1.0/24"

Reiniciar el proxy.

systemctl restart pveproxy

Activar el firewall de proxmox a nivel datacenter. Con los siguientes comandos lo que hago es permitir el tráfico hacia los puertos 22 y 8006, para ssh y la interfaz web respectivamente.

pvesh set /cluster/firewall/options --enable 1  
pvesh create /cluster/firewall/rules --type in --action ACCEPT --proto tcp --dport 22 --comment "Permitir SSH"   
pvesh create /cluster/firewall/rules --type in --action ACCEPT --proto tcp --dport 8006 --comment "Permitir Proxmox GUI"

Las opiniones y contenidos de este blog son míos y no representan a Oracle.