Runbook: Backup Strategy
- Last Updated
-
2026-01-26
- Owner
-
evanusmodestus
- Review Frequency
-
Quarterly
Purpose
Protect all critical data using a defense-in-depth backup strategy that survives:
-
Hardware failure (SSD death)
-
Ransomware (offline copies)
-
Fire/flood (offsite storage)
-
Long-term bit rot (archival media)
The 3-2-1 Rule (Extended)
| Rule | Meaning | Implementation | Recovery Time |
|---|---|---|---|
3 copies |
At least 3 copies of data |
Hot + Warm + Cold |
N/A |
2 storage types |
Different media types |
SSD + HDD/NAS + Optical |
N/A |
1 offsite |
Geographic separation |
LUKS USB #2 offsite |
Hours to days |
+Archival |
1000+ year durability |
M-Disc in fireproof safe |
Days |
Tier 1: HOT (Primary)
Tier 2: WARM (Automated)
What Lives Here
| Data | NAS Path | Backup Method |
|---|---|---|
ISE configs |
|
|
WLC configs |
|
|
pfSense configs |
|
|
IOS switch configs |
|
|
KVM VM definitions |
|
|
Keycloak realms |
|
|
Workstation (Borg) |
|
|
Commands
# Load secrets
dsource d000 dev/network
# Run all infrastructure backups
netapi ise backup --upload-nas
netapi wlc backup --upload-nas
netapi pfsense backup --upload-nas
netapi ios backup --all --upload-nas
netapi kvm backup --all --upload-nas
# Keycloak needs identity secrets
dsource d000 dev/identity
netapi keycloak backup --upload-nas
# Verify backups
dsource d000 dev/network
netapi synology backup-status --detailed
# Borg backup (workstation)
borg create --stats --progress \
ssh://nas-01/volume1/Backups/borg::$(hostname)-$(date +%Y-%m-%d) \
~/.secrets ~/.ssh ~/atelier
Tier 3: COLD (Offline)
What Lives Here
CRITICAL: These are the recovery keys for everything else.
| Data | Why Critical |
|---|---|
|
Decrypts all |
SSH private keys |
Access to all systems |
GPG secret keys |
Signing, encryption |
LUKS headers |
Recovery if header corrupted |
|
Vault master keys |
Commands
# Mount LUKS drive
sudo cryptsetup luksOpen /dev/sdX1 backup-usb
sudo mount /dev/mapper/backup-usb /mnt/backup
# Sync critical files
rsync -av ~/.secrets/.metadata/keys/ /mnt/backup/keys/
rsync -av ~/.ssh/id_* /mnt/backup/ssh/
gpg --export-secret-keys > /mnt/backup/gpg/secret-keys.asc
# Backup LUKS headers (for all encrypted volumes)
sudo cryptsetup luksHeaderBackup /dev/nvme0n1p2 \
--header-backup-file /mnt/backup/luks/workstation-header.img
# Unmount
sudo umount /mnt/backup
sudo cryptsetup luksClose backup-usb
Tier 4: ARCHIVAL (M-Disc)
What Lives Here
Only the absolute essentials that NEVER change:
-
Root CA private key (if you control it)
-
age master key
-
Recovery passphrases (printed)
Why M-Disc
-
Durability: 1000+ year lifespan (vs ~5 years for regular DVD)
-
Offline: Immune to ransomware
-
Disaster-proof: Survives fire, flood, EMP
Commands
# Create ISO with critical files
mkdir /tmp/mdisc-backup
cp ~/.secrets/.metadata/keys/master.age.key /tmp/mdisc-backup/
cp ~/.ssh/id_ed25519 /tmp/mdisc-backup/
genisoimage -o /tmp/backup-$(date +%Y).iso /tmp/mdisc-backup/
# Burn to M-Disc (requires M-Disc compatible drive)
wodim -v /tmp/backup-$(date +%Y).iso
# Verify readability
mount /dev/sr0 /mnt/cdrom
diff ~/.secrets/.metadata/keys/master.age.key /mnt/cdrom/master.age.key
umount /mnt/cdrom
# Secure delete temp files
shred -n 10 -z -u /tmp/mdisc-backup/*
rm -rf /tmp/mdisc-backup /tmp/backup-*.iso
Recovery Procedures
Priority Order
-
age key - Without this, nothing else can be decrypted
-
SSH keys - Access to systems
-
dsec secrets - Credentials
-
Infrastructure - ISE, WLC, etc.
Scenario: Lost Workstation
# 1. Mount LUKS backup USB
sudo cryptsetup luksOpen /dev/sdX1 backup-usb
sudo mount /dev/mapper/backup-usb /mnt/backup
# 2. Restore age key (FIRST!)
mkdir -p ~/.secrets/.metadata/keys
cp /mnt/backup/keys/master.age.key ~/.secrets/.metadata/keys/
chmod 600 ~/.secrets/.metadata/keys/master.age.key
# 3. Restore SSH keys
cp -r /mnt/backup/ssh/* ~/.ssh/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_*
# 4. Clone secrets repo
git clone <secrets-repo> ~/.secrets
# 5. Verify
dsec show d000 dev/network
See Disaster Recovery for full procedures.
Verification Schedule
| Frequency | Action | Verification |
|---|---|---|
Weekly |
Check NAS backup dates |
|
Monthly |
Sync to LUKS USB #1 |
Mount and verify file dates |
Quarterly |
Rotate LUKS USB offsite |
Test decrypt on both USBs |
Annually |
Full recovery drill |
Restore to test VM |