El host del repositorio tiene una sola tarea y casi ningún requisito. No necesita núcleos de CPU, porque nunca lee tus datos — solo guarda blobs cifrados que no puede abrir. No necesita memoria, porque el trabajo de deduplicación ocurre en el origen. Necesita disco, una dirección estable, y estar en algún lugar donde los problemas de la máquina de origen no lo alcancen.
En el panel: Order → VPS → Sentinel, imagen Debian 12, y — el objetivo de todo esto — un bastión distinto de aquel en el que funciona el origen. Helsinki trabajando, Reykjavík guardando. No se requiere ninguna dirección de correo para abrir la cuenta y la factura se liquida en Monero, Bitcoin, Lightning o cualquier otro de los activos admitidos, lo que significa que la segunda máquina no vuelve a introducir la identidad que la primera había cuidado tanto.
| Destino del repositorio |
Mensual |
Almacenamiento |
Conjunto de trabajo que contiene |
Coste de restaurar |
| Sentinel | $3.90 | 120 GB NVMe | ~30 GB | Nada — sin medición |
| Garrison | $7.90 | 240 GB NVMe | ~70 GB | Nada — sin medición |
| Ravelin | $16.90 | 480 GB NVMe | ~150 GB | Nada — sin medición |
| Bulwark | $32.90 | 960 GB NVMe | ~300 GB | Nada — sin medición |
| Almacenamiento de objetos de clase S3 | ~$0.023/GB | Elástico | Cualquiera | Salida medida |
La columna del conjunto de trabajo asume instantáneas diarias conservadas durante un año con una rotación normal; un repositorio que contiene sobre todo archivos que cambian poco llega mucho más lejos, y uno lleno de binarios grandes reescritos llega mucho menos lejos. La última fila está ahí por la escala, y por el detalle que la gente olvida hasta el mal día: el almacenamiento de objetos también cobra por la descarga, y la descarga es justo lo que haces en una emergencia.
En el destino — un usuario sin privilegios y un directorio.
adduser --disabled-password --gecos "" backup
install -d -m 0700 -o backup -g backup /srv/restic/web01
El usuario de la copia de seguridad no tiene contraseña, ni sudo, ni nada en lo que iniciar sesión. Existe solo para ser propietario de un directorio. Dale un directorio propio por cada máquina de origen si respaldas varias — un repositorio por origen evita que el compromiso de una máquina afecte al historial de otra.
En el origen — una clave que no se usa para nada más.
ssh-keygen -t ed25519 -f /root/.ssh/id_backup -N "" -C "backup:web01"
cat /root/.ssh/id_backup.pub
No reutilice su clave de acceso habitual. Esta vive sin cifrar en disco porque un timer desatendido tiene que usarla a las tres de la madrugada, que es exactamente el tipo de clave que conviene limitar a un único destino y un único propósito.
De vuelta en el destino — restrinja lo que esa clave puede hacer. Pega la clave pública en /home/backup/.ssh/authorized_keys con un prefijo delante. Para restic sobre SFTP:
restrict,from="198.51.100.7" ssh-ed25519 AAAAC3NzaC1lZDI1... backup:web01
La opción restrict desactiva de una vez el reenvío de puertos, el reenvío del agente, X11 y la asignación de PTY, dejando solo la transferencia de archivos y nada más. La cláusula from= fija la clave a la dirección de origen, así que una copia de ella robada del servidor es inútil en cualquier otro sitio. Para Borg, ve un paso más allá y fuerza el comando, que es donde vive su modo de solo anexado:
command="borg serve --append-only --restrict-to-path /srv/borg/web01",restrict ssh-ed25519 AAAAC3NzaC1lZDI1... borg:web01
Esa línea concentra toda la defensa contra el ransomware en un solo lugar: sea lo que sea lo que envíe el origen, el destino solo ejecutará borg serve, solo dentro de esa ruta, y solo en un modo que anexa. Una shell root en el origen no puede usar esta clave para borrar el mes pasado.
Nombre el destino una vez, en el origen. Ponlo en /root/.ssh/config para que cada comando posterior sea corto y la dirección viva en un único archivo:
Host rkv-repo
HostName 198.51.100.42
User backup
IdentityFile /root/.ssh/id_backup
IdentitiesOnly yes
Luego conéctate una vez a mano — ssh rkv-repo — para aceptar la clave del host. Un temporizador desatendido no responderá a un aviso de huella digital, y una primera copia de seguridad que se queda colgada en silencio durante una semana es un clásico. Mientras estés en el destino, dale el mismo trato que a cualquier otra máquina tuya: ejecuta también en él la lista de refuerzo de la primera hora. Guarda una copia de todo, y se merece la hora completa.