
Cifrare un disco VPS con LUKS
Cifrare un disco è la parte facile. Farlo su una macchina che non puoi toccare fisicamente — in modo che si riavvii comunque alle 04:00 senza che tu sia davanti a una console — è la parte che la maggior parte delle guide salta. Ed essere chiari su cosa ti offra davvero la cifratura su hardware noleggiato è la parte che quasi tutte saltano. Questa guida copre tutte e tre le cose: un volume root LUKS2 installato dalla modalità di ripristino, sbloccato da remoto via SSH, con un resoconto onesto delle minacce che blocca e di quelle che non blocca.
“I miei dati sono cifrati?” è la domanda che ci sentiamo fare più spesso, e la risposta onesta è: no, a meno che non li cifri tu stesso. Non cifriamo i tuoi dischi al posto tuo, ed è una scelta deliberata — una chiave che deteniamo noi è una chiave che potremmo essere costretti a consegnare. La nostra documentazione lo dice in una riga; questa guida ne è la versione estesa, comandi inclusi.
Quello che segue è la procedura che usiamo davvero: un piccolo /boot non cifrato, tutto il resto dentro un contenitore LUKS2, e un piccolissimo server SSH che vive nell'initramfs così la passphrase può essere digitata da qualsiasi parte del mondo al momento dell'avvio. Funziona in modo identico in tutte e quattro le nostre regioni — Paris, Reykjavík, Zürich e Bucharest — perché l'hardware è identico. Funziona anche su qualsiasi altro provider che offra una modalità di ripristino. L'ultima sezione espone i limiti, perché una guida che ti dice solo cosa la cifratura risolve sta vendendo qualcosa.
Cosa protegge davvero la cifratura del disco su un VPS
La cifratura non è un'impostazione di privacy generica. Risponde a una sola domanda: qualcuno può leggere questi blocchi senza la chiave? Tutto il resto — chi sa che hai noleggiato il server, se il traffico è riconducibile a te, se un tribunale può ordinare qualcosa — vive altrove.
Su un VPS, LUKS difende concretamente da:
- Hardware dismesso o guasto. Le unità NVMe vengono sostituite. La cancellazione sicura su un dispositivo guasto non è sempre possibile — a volte è talmente morto che il controller non accetta più comandi, e lascia comunque il rack.
- Un'immagine offline. Un volume copiato mentre il server è spento — durante un sequestro, una migrazione, un errore — è testo cifrato e resta testo cifrato.
- Backup e snapshot che viaggiano. Tutto ciò che lascia la macchina esce cifrato se viene prelevato dal livello a blocchi sotto il tuo controllo, e dovrebbe essere cifrato lato client se viene prelevato da sopra quel livello.
- Blocchi residui. Quando distruggi un server, gli extent sottostanti vengono prima o poi riutilizzati. La cifratura trasforma ciò che resta in rumore anziché in dati.
Non difende invece una macchina in esecuzione. Mentre il tuo server è acceso, la chiave master risiede nella memoria del kernel, e chiunque sia in grado di estrarre quella memoria legge il tuo disco a prescindere dalla passphrase. Su infrastruttura noleggiata, questo significa l'operatore dell'hypervisor. Lo diciamo nella nostra informativa sulla privacy e lo ripetiamo qui: nessuna funzione di cifratura del disco di alcun provider cambia questo fatto, inclusa la nostra, e qualsiasi provider che affermi il contrario sta descrivendo marketing, non crittografia.
Tre modelli, e quello di cui hai davvero bisogno
Prima di toccare un terminale, scegli il modello. Differiscono enormemente per impegno richiesto, e la maggior parte delle persone ha bisogno solo del primo.
1. Un volume dati cifrato. Il sistema si avvia normalmente e senza cifratura; un unico albero di directory — una maildir, un database, un archivio — vive dentro un contenitore LUKS che apri manualmente dopo ogni avvio. Dieci minuti di lavoro, nessuna modalità di ripristino, nessun rischio di restare tagliati fuori. Se ciò a cui tieni è un singolo insieme di dati e non l'intera macchina, fermati qui: ottieni gran parte del beneficio con quasi nessuna fragilità. È lo schema che consigliamo nella pagina sul server di posta anonimo.
2. Un volume root cifrato con sblocco remoto. Tutto tranne /boot è cifrato, e ogni avvio si ferma nell'initramfs finché non ti colleghi via SSH e non fornisci la passphrase. È il modello su cui si costruisce il resto di questa guida. Costa un'ora la prima volta e un comando SSH per ogni riavvio, ed è l'unico modello in cui sono coperti anche log, cache dei pacchetti, cronologia della shell e swap — i punti in cui i dati trapelano senza che nessuno l'abbia deciso.
3. Una root cifrata che si sblocca da sola verso un key server che controlli. Come il modello 2, ma Clevis recupera il materiale di sblocco da un server Tang su una macchina in un'altra giurisdizione, così i riavvii non sono presidiati. Il compromesso è preciso e vale la pena capirlo: ora il server può decifrarsi da solo finché il tuo key server dice di sì, il che significa che hai spostato il segreto invece di eliminarlo — ma hai anche guadagnato un interruttore di emergenza remoto. Approfondito più avanti.
Perché non cifriamo il tuo disco al posto tuo
Molti host pubblicizzano la “cifratura dei dati a riposo” come una semplice casella da spuntare. Vale la pena essere precisi su cosa significhi di solito questa frase, perché dietro si nascondono due cose molto diverse.
La cifratura con una chiave detenuta dal provider protegge da un'unità rubata e nient'altro. Se il provider può avviare il tuo server senza chiederti nulla, il provider può anche decifrarlo senza chiederti nulla — e lo stesso vale per chiunque possa costringere il provider a farlo. È un controllo reale contro il furto e uno puramente decorativo contro un procedimento legale.
La cifratura con una chiave che detieni tu è la versione che conta davvero, e per costruzione impedisce il riavvio non presidiato. Non è un difetto da eliminare con qualche accorgimento: è la proprietà che fa il lavoro.
Noi forniamo solo la seconda opzione, non configurata, e lasciamo decidere a te. Ciò che deteniamo è più limitato ed è documentato: le password di root dei server sono memorizzate cifrate in AES-256-CBC a livello di riga, non conserviamo flow log né catture di pacchetti, e un warrant canary firmato viene pubblicato a cadenza regolare. Niente di tutto ciò sostituisce una chiave tua — è solo la parte di cui possiamo essere ritenuti responsabili nel frattempo.
Cifrario, dimensione della chiave e la trappola della memoria di Argon2
I valori predefiniti sono validi. Vale la pena modificarne due.
Cifrario. aes-xts-plain64 con una chiave a 512 bit è il valore predefinito ed è la scelta giusta — i 512 bit sono due chiavi da 256 bit, quindi si tratta di AES-256 in modalità XTS, e ogni CPU su cui giriamo dispone di AES-NI. Su una macchina priva di accelerazione AES preferiresti xchacha20,aes-adiantum-plain64, ma non è il caso del nostro hardware, e probabilmente nemmeno del tuo.
Derivazione della chiave. LUKS2 usa di default Argon2id, che è deliberatamente memory-hard. Al momento della formattazione cryptsetup fa un benchmark della macchina e sceglie un costo di memoria in base alla RAM che riesce a vedere — ed ecco la trappola che genera la maggior parte delle segnalazioni del tipo “il mio server cifrato non si avvia”: l'initramfs ha meno memoria utilizzabile del sistema in esecuzione, e se hai formattato il volume in un ambiente di ripristino con più RAM di quanta ne abbia il piano di destinazione, lo sblocco può fallire o essere interrotto all'avvio. Fissala esplicitamente. Un GiB di memoria per Argon2 è un costo notevole per un attaccante ed è comodamente alla portata di un S1 da 4 GB:
cryptsetup luksFormat --type luks2 \
--cipher aes-xts-plain64 --key-size 512 --hash sha256 \
--pbkdf argon2id --pbkdf-memory 1048576 --pbkdf-parallel 4 \
/dev/vda2--pbkdf-memory è espresso in KiB, quindi 1048576 equivale a 1 GiB. Verifica in seguito cosa è stato effettivamente scritto nell'header con cryptsetup luksDump /dev/vda2 — la sezione dello slot di chiave riporta i valori di memoria e il numero di iterazioni che verranno usati, e leggerli una volta costa meno di un avvio fallito.
La passphrase. Argon2 guadagna tempo contro una passphrase debole; non la salva. Usa una frase diceware di almeno sei parole. È l'unico segreto del sistema, e nessuna funzione di derivazione della chiave compensa una passphrase scadente.
Come funziona davvero lo sblocco remoto
Un avvio Linux con root cifrata ha un problema dell'uovo e della gallina: il kernel e l'initramfs devono caricarsi prima che qualcosa possa chiedere una passphrase, ma entrambi risiedono sul disco che stai cercando di sbloccare. La risposta standard è una piccola partizione /boot non cifrata che contiene il kernel, l'initramfs e il bootloader. Tutto il resto va dentro LUKS.
L'initramfs a quel punto si ferma e chiede la passphrase. Su un laptop la digiti e basta. Su un server a tremila chilometri di distanza, ti serve una delle due cose seguenti:
- La console. Ogni server nella tua dashboard ha una console noVNC, e funziona — ma i tasti premuti attraversano la nostra infrastruttura, che è esattamente la parte che la tua chiave dovrebbe escludere. Va bene per un recupero occasionale, sbagliata come abitudine.
- Un server SSH dentro l'initramfs.
dropbear-initramfspesa circa 200 KB, attiva la rete, resta in ascolto sulla porta che scegli, accetta una delle tue chiavi pubbliche e ti porta dritto al prompt di sblocco. La passphrase è cifrata end-to-end dal tuo laptop fino all'initramfs. Questa è la risposta giusta.
Due dettagli traggono facilmente in inganno. Il Dropbear dell'initramfs ha una propria chiave host, quindi il suo fingerprint è diverso da quello del tuo demone SSH abituale — è normale, non è un attacco man-in-the-middle, e merita un proprio file known_hosts piuttosto che l'abitudine di digitare sempre yes. E il nome dell'interfaccia deve essere corretto: le schede di rete virtio su Debian 13 di solito compaiono come ens3 o enp1s0, non eth0. Controlla con ip -br link prima di scrivere la configurazione, perché sbagliare significa un initramfs senza rete e un viaggio obbligato alla console.
Riavvii non presidiati con Clevis e Tang
Se la macchina deve tornare operativa da sola — dopo un aggiornamento del kernel, un riavvio dell'host, un'interruzione di corrente — digitare una passphrase non è praticabile. Clevis vincola uno slot di chiave LUKS a una policy esterna, e Tang è un piccolo server di scambio chiavi che ne implementa la versione utile più semplice.
# on a small server you control, elsewhere
apt install -y tang
systemctl enable --now tangd.socket
# on the encrypted VPS
apt install -y clevis clevis-luks clevis-initramfs
clevis luks bind -d /dev/vda2 tang '{"url":"http://tang.internal:7500"}'
update-initramfs -u -k allAll'avvio, l'initramfs esegue uno scambio McCallum-Relyea con Tang e recupera la chiave senza che il server Tang la venga mai a conoscere né veda la passphrase. Vale la pena precisare bene le proprietà in gioco:
- Il VPS si decifra da solo solo finché riesce a raggiungere Tang. Spegni Tang, o ruota le sue chiavi, e il riavvio successivo si blocca del tutto. È un vero interruttore di emergenza remoto — insolito e utile.
- Tang non dovrebbe stare sulla rete internet pubblica. Raggiungilo via WireGuard o come servizio onion di Tor; trattiamo la parte relativa al tunnel nella guida a WireGuard.
- Metti Tang in una giurisdizione diversa da quella dei dati. Le nostre pagine sulle giurisdizioni esistono proprio per questo tipo di separazione.
- Mantieni una passphrase in un altro slot di chiave. Clevis è un livello di comodità, non l'unico modo per accedere.
Renditi conto di cosa hai costruito: una macchina non presidiata detiene la propria chiave per procura, quindi un avversario che sequestra il VPS mentre è in esecuzione, o che riesce a raggiungere il tuo server Tang, ottiene i dati. È un indebolimento reale rispetto a una passphrase che tieni in testa. Scegli questa strada quando la disponibilità conta più dell'ultimo grado di segretezza, e non per abitudine.
Swap, file temporanei e i punti in cui il testo in chiaro trapela
Una root cifrata copre gran parte della superficie, ma alcuni percorsi scrivono al di fuori di essa o le sopravvivono.
- Swap. Qualsiasi cosa in RAM può finire su disco tramite il paging — chiavi, corpi di messaggi, buffer decifrati. Se lo swap vive dentro il volume cifrato come file di swap, è coperto. Una partizione di swap separata non lo è, a meno che tu non la aggiunga a
/etc/crypttabcon una chiave casuale che cambia a ogni avvio:cryptswap /dev/vda3 /dev/urandom swap,cipher=aes-xts-plain64,size=256. Su un VPS il file di swap è più semplice e non c'è motivo di preferire la partizione. - /tmp. Montalo come tmpfs (
tmpfs /tmp tmpfs defaults,nosuid,nodev,size=512M 0 0) così non tocca mai il disco. Anche più veloce. - Ibernazione. Scrive tutta la RAM, chiave master inclusa, sul dispositivo di swap. Non abilitarla. Sulle nostre immagini è disattivata di default.
- Il /boot non cifrato. Kernel, immagini initramfs e configurazione di GRUB sono leggibili e, cosa più importante, scrivibili da chiunque abbia accesso offline al disco. LUKS ti dà la riservatezza, non l'integrità dell'avvio. Se il tuo modello di minaccia include qualcuno che manomette il bootloader, la sola cifratura non se ne accorgerà — registra gli hash di
/bootdopo ogni aggiornamento del kernel e verificali dall'esterno, oppure accetta consapevolmente questo margine scoperto. - Snapshot esistenti e volumi vecchi. Cifrare oggi non fa nulla per un'immagine presa ieri. Se il server ha mai girato non cifrato con dati a cui tieni, considera quei dati come esposti e ruota tutto ciò che ne deriva.
Prestazioni: quanto costa e cosa ottimizzare
Il sovraccarico è abbastanza piccolo da non dover guidare la decisione, ma non è pari a zero. Misura prima di speculare:
cryptsetup benchmarkSui nostri nodi EPYC, aes-xts con chiave a 512 bit ottiene benchmark nell'ordine di pochi gigabyte al secondo per core — ben al di sopra di quanto un singolo volume NVMe possa mai richiedere. Il costo che si manifesta davvero è la latenza e il carico CPU sulle piccole scritture casuali, non il throughput.
Due flag di LUKS2 contano su NVMe, dove le code di lavoro dm-crypt del kernel aggiungono latenza invece di eliminarla. Impostale e rendile permanenti nell'header:
cryptsetup refresh cryptroot \
--perf-no_read_workqueue --perf-no_write_workqueue --persistentIl terzo flag, --allow-discards, inoltra il TRIM al dispositivo sottostante. Mantiene bassa l'amplificazione di scrittura per tutta la vita del volume, al costo di rivelare quali blocchi sono inutilizzati — il che lascia trapelare a chiunque legga il dispositivo grezzo la dimensione e la forma approssimativa dei tuoi dati. Abilitalo per un server per uso generico; lascialo disattivato se il fatto stesso che un volume sia pieno al 3% è sensibile. Non esiste una risposta universalmente giusta, solo una decisione che dovresti prendere consapevolmente.
L'header, gli slot di chiave e il giorno in cui qualcosa va storto
L'header LUKS occupa circa 16 MB all'inizio della partizione e contiene le copie cifrate della chiave master. Danneggialo — un dd digitato male, uno strumento di partizionamento che riscrive premurosamente l'inizio del dispositivo — e ogni byte che segue è perduto. Non esiste un servizio di recupero. Non ne abbiamo una copia.
# back it up, off the server, before you put data on the volume
cryptsetup luksHeaderBackup /dev/vda2 \
--header-backup-file luks-header-$(date +%F).img
# add a second passphrase while you still have the first
cryptsetup luksAddKey /dev/vda2
# see what is in the header
cryptsetup luksDump /dev/vda2Due cose su questo backup. È sensibile quanto il disco: contiene gli slot di chiave, quindi un header vecchio ripristinato dopo che hai cambiato la passphrase accetterà volentieri quella vecchia. Conservalo come conservi la passphrase, e distruggi le copie superate quando la ruoti. In secondo luogo, LUKS2 mette a disposizione 32 slot di chiave — usane almeno due, con quello di riserva impostato su una lunga passphrase casuale conservata in un posto diverso da quello della passphrase quotidiana. La modalità di guasto che questo previene è banale e comune: ruoti la passphrase, la digiti male in modo identico due volte, e lo scopri al riavvio successivo invece che al login successivo.
Prevedi anche una via per rientrare. La modalità di ripristino avvia il server dalla nostra ISO con le tue chiavi SSH iniettate e il volume cifrato intatto, il che significa che puoi eseguire cryptsetup open /dev/vda2 rescue && mount /dev/mapper/rescue /mnt e riparare un crypttab danneggiato o un initramfs difettoso senza perdere i dati. Provalo una volta, deliberatamente, mentre non c'è alcun problema in corso.
Cosa la cifratura non può fare, detto chiaramente
La cosa più utile che una guida come questa possa fare è segnare i propri confini.
- Non protegge un server in esecuzione. La chiave master resta nella memoria del kernel dallo sblocco fino allo spegnimento. L'accesso alla memoria a livello di hypervisor la vanifica. La cifratura della memoria — AMD SEV-SNP ed equivalenti — è l'unica tecnologia che cambia davvero le cose, e oggi non la offriamo; un provider che sostiene che la tua VM in esecuzione le sia opaca, senza SEV, si sbaglia oppure mente.
- Non ti rende anonimo. Un disco cifrato a Zürich ha comunque un IP, una traccia di fatturazione e una sessione SSH partita da qualche parte. È un problema diverso, e abbiamo raccontato i modi in cui va storto in gli errori che ti deanonimizzano.
- Non cambia ciò che un tribunale può ordinare. La giurisdizione regola la coercizione; la cifratura regola la leggibilità. In alcune giurisdizioni puoi essere obbligato a rivelare personalmente una passphrase. La nostra guida alle procedure legali spiega cosa facciamo e cosa non facciamo.
- Non sopravvive a una passphrase persa. Per progettazione, e vale la pena ripeterlo, perché il ticket di supporto che ci chiede aiuto in merito arriva circa una volta al mese, e la risposta è sempre la stessa.
- Non autentica la catena di avvio. Riservatezza non è integrità.
/bootè leggibile e modificabile offline.
Ciò che fa davvero è eliminare un'intera classe di esposizione — tutto ciò che accade a un disco quando non è in funzione, che è la maggior parte di ciò che accade ai dischi. Vale un'ora del tuo tempo. Combinala con una registrazione no-KYC, un pagamento in Monero e una giurisdizione scelta di proposito, e ogni livello copre un cedimento diverso. Nessuno di essi li copre tutti.
- Distribuisci il server e avvialo in modalità di ripristino
Distribuisci un piano qualsiasi in una regione qualsiasi con un'immagine Debian 13 standard — il sistema installato sta per essere sostituito, quindi la scelta dell'immagine conta poco. Poi vai su Server → Ripristino → Avvia il ripristino. L'ambiente di ripristino inietta le chiavi SSH già presenti sul tuo account e lascia il disco intatto, così ottieni una shell root con
/dev/vdasmontato e libero. Nota che il fingerprint della chiave host dell'ambiente di ripristino è diverso da quello del sistema installato; è normale. - Partiziona il disco: un piccolo /boot in chiaro, un grande contenitore LUKS
Due partizioni. Un gigabyte per
/boot— sufficiente per diversi kernel — e il resto per il volume cifrato.sgdisk --zap-all /dev/vda sgdisk -n1:0:+1G -t1:8300 -c1:boot /dev/vda sgdisk -n2:0:0 -t2:8309 -c2:crypt /dev/vda partprobe /dev/vda && lsblk /dev/vdaIl tipo
8309contrassegna la seconda partizione come volume LUKS Linux. Se il tuo server si avvia in modalità UEFI, rendi la partizione 1 una ESP (-t1:ef00, formattata FAT32 e montata su/boot/efi) e aggiungi un/bootseparato da 1 GB; il layout BIOS descritto sopra è quello usato di default dalle nostre immagini. - Crea il volume LUKS2 e aprilo
Fissa esplicitamente il costo di memoria di Argon2, così l'initramfs potrà permetterselo più avanti.
cryptsetup luksFormat --type luks2 \ --cipher aes-xts-plain64 --key-size 512 --hash sha256 \ --pbkdf argon2id --pbkdf-memory 1048576 --pbkdf-parallel 4 \ /dev/vda2 cryptsetup open /dev/vda2 cryptroot mkfs.ext4 -L root /dev/mapper/cryptroot mkfs.ext2 -L boot /dev/vda1Usa una passphrase di almeno sei parole diceware e scrivila da qualche parte su supporto fisico prima di proseguire. Nessuno può recuperarla al posto tuo — è questa la proprietà che stai pagando.
- Installa Debian nel volume cifrato
Monta la nuova root, esegui il debootstrap di un sistema di base al suo interno, e collega i filesystem del kernel affinché il chroot si comporti correttamente.
mount /dev/mapper/cryptroot /mnt mkdir -p /mnt/boot && mount /dev/vda1 /mnt/boot debootstrap --arch=amd64 trixie /mnt http://deb.debian.org/debian for d in dev dev/pts proc sys run; do mount --bind /$d /mnt/$d; done chroot /mnt /bin/bashDentro il chroot, installa i componenti che rendono una root cifrata avviabile e raggiungibile:
apt update && apt install -y linux-image-amd64 grub-pc \ cryptsetup cryptsetup-initramfs dropbear-initramfs \ openssh-server ifupdown ca-certificates locales - Scrivi crypttab, fstab e la configurazione di rete dell'initramfs
crypttabindica all'initramfs quale dispositivo sbloccare;initramfs.confgli indica prima come collegarsi alla rete. Usa l'UUID LUKS, mai/dev/vda2— i nomi dei dispositivi cambiano.echo "cryptroot UUID=$(blkid -s UUID -o value /dev/vda2) none luks,discard" \ > /etc/crypttab cat > /etc/fstab <<'EOF' /dev/mapper/cryptroot / ext4 defaults,noatime 0 1 LABEL=boot /boot ext2 defaults 0 2 tmpfs /tmp tmpfs defaults,nosuid,nodev,size=512M 0 0 EOF # DHCP on the virtio NIC. Confirm the name with `ip -br link` first. echo 'IP=:::::ens3:dhcp' >> /etc/initramfs-tools/initramfs.conf echo 'DEVICE=ens3' >> /etc/initramfs-tools/initramfs.confRimuovi
,discarddalla riga di crypttab se preferisci non rivelare quali blocchi sono inutilizzati. Per un indirizzo statico invece del DHCP, l'ordine dei campi èIP=<ip>::<gateway>:<netmask>::<iface>:off. - Metti la tua chiave di sblocco nell'initramfs e blinda Dropbear
Solo la chiave che inserisci qui può sbloccare la macchina all'avvio. Tienila separata dalla tua chiave SSH di uso quotidiano, così perderne una non significa perderle entrambe.
install -d -m 0755 /etc/dropbear/initramfs cat > /etc/dropbear/initramfs/authorized_keys <<'EOF' ssh-ed25519 AAAAC3Nza... unlock@laptop EOF chmod 0600 /etc/dropbear/initramfs/authorized_keys cat > /etc/dropbear/initramfs/dropbear.conf <<'EOF' DROPBEAR_OPTIONS="-p 2222 -s -j -k -I 180 -c cryptroot-unlock" EOF update-initramfs -u -k all dropbearkey -y -f /etc/dropbear/initramfs/dropbear_ed25519_host_key | grep -i fingerprint-p 2222tiene il servizio di sblocco fuori dalla porta 22 così non entra mai in conflitto con lo sshd del sistema in esecuzione;-svieta i login con password,-je-kdisabilitano il port forwarding,-I 180chiude le sessioni inattive, e-c cryptroot-unlockfa sì che qualsiasi login riuscito porti dritto al prompt della passphrase. Annota subito quel fingerprint — è così che saprai di parlare con il tuo initramfs e non con un altro. Su Debian 11 e versioni precedenti questi file si trovano invece in/etc/dropbear-initramfs/. - Installa il bootloader, imposta una password di root, riavvia
GRUB va installato sul disco, non sulla partizione. Poiché
/bootnon è cifrato,GRUB_ENABLE_CRYPTODISKnon serve.grub-install /dev/vda update-grub passwd root echo 'cryptovps' > /etc/hostname exit # leave the chroot umount -R /mnt cryptsetup close cryptroot rebootPoi disattiva la modalità di ripristino del server nella dashboard, così che si avvii dal disco. Tieni aperta la console noVNC per questo primo avvio — se l'initramfs si presenta senza rete lo vedrai lì, e potrai correggere il nome dell'interfaccia invece di indovinarlo.
- Sblocca da remoto e verifica che il volume sia davvero cifrato
Aspetta trenta secondi, poi collegati all'initramfs sulla porta 2222. Fissa la sua chiave host in un file dedicato così non si mescola mai con il tuo known_hosts normale.
ssh -p 2222 -o UserKnownHostsFile=~/.ssh/known_hosts.initramfs \ -i ~/.ssh/id_ed25519_unlock root@<server-ip> # the passphrase prompt appears immediately; type it, the session closes, # and the machine finishes booting into the decrypted root. # once you are in the running system: lsblk -o NAME,FSTYPE,MOUNTPOINT cryptsetup status cryptroot cryptsetup luksDump /dev/vda2 | head -20cryptsetup statusdovrebbe riportaretype: LUKS2,cipher: aes-xts-plain64ekeysize: 512 bits. Ora fai le due cose che tutti rimandano: esegui il backup dell'header LUKS fuori dal server, e aggiungi un secondo slot di chiave. Poi riavvia ancora una volta di proposito, per dimostrare che il percorso di sblocco funziona quando non ti aspetti che fallisca.
Tre modi per cifrare, e cosa costa ciascuno
| Modello | Cosa viene cifrato | Al riavvio successivo | Impegno di configurazione | Ideale per |
|---|---|---|---|---|
| Volume dati cifrato | Un albero di directory dentro un contenitore LUKS | Il server si avvia normalmente; apri il contenitore a mano | ~10 minuti, nessuna modalità di ripristino | Un singolo insieme di dati sensibile — maildir, database, archivio |
| Root cifrata + sblocco remoto via SSH | Tutto tranne /boot — log, swap, cache, cronologia | L'avvio si ferma nell'initramfs finché non ti colleghi via SSH e digiti la passphrase | ~1 ora, installazione dalla modalità di ripristino | Una macchina il cui intero stato è sensibile e i cui riavvii puoi presidiare |
| Root cifrata + Clevis/Tang | Tutto tranne /boot | Si sblocca da sola finché riesce a raggiungere il tuo server Tang; si blocca del tutto se non ci riesce | ~1 ora, più un secondo server che controlli | Macchine non presidiate in cui la disponibilità conta più dell'ultimo grado di segretezza |
Domande che meritano risposta
CryptoVpsHost può leggere i dati sul mio server?
Su un server in esecuzione, in linea di principio sì — e lo stesso vale per qualsiasi provider di infrastruttura virtualizzata, compresi quelli che sostengono il contrario. La chiave master di un volume LUKS sbloccato risiede nella memoria del kernel, e quella memoria appartiene all'hypervisor. Ciò che LUKS elimina è tutto il resto: un volume spento, un'unità dismessa, un'immagine copiata, un backup. Non cifriamo i dischi al posto tuo proprio perché una chiave che deteniamo noi è una chiave che potremmo essere costretti a consegnare, e preferiamo dirlo chiaramente piuttosto che venderti una casella da spuntare. Se il tuo modello di minaccia include l'operatore di una macchina in esecuzione, nessuna funzione di cifratura del disco, di nessun fornitore, risolve il problema.
La cifratura completa del disco rallenta un VPS?
Appena percettibilmente, su hardware con AES-NI — cioè tutto il nostro. Esegui cryptsetup benchmark e vedrai aes-xts nell'ordine di pochi gigabyte al secondo per core, ben oltre quanto richieda un singolo volume NVMe. Il costo misurabile è un po' di latenza e carico CPU in più sulle piccole scritture casuali, non sul throughput. Su NVMe, impostare --perf-no_read_workqueue e --perf-no_write_workqueue insieme a --persistent elimina la maggior parte di quel che resta.
Cosa succede se perdo la passphrase?
I dati sono persi. Non c'è recupero, nessuna chiave master conservata in deposito, e nessun ticket di supporto che possa cambiare le cose — non ne abbiamo mai avuto una copia. È questa la proprietà che stai pagando, ed è per questo che la guida ripete due volte di eseguire il backup dell'header LUKS fuori dal server e di aggiungere un secondo slot di chiave con una passphrase lunga e diversa prima di mettere dati veri sul volume. Una passphrase custodita in un solo posto, incluso solamente nella tua testa, è un singolo punto di fallimento.
Anche /boot è cifrato?
No, ed è normale. Il kernel e l'initramfs devono essere leggibili prima che qualcosa possa chiedere una passphrase, quindi vivono su una piccola partizione in chiaro. GRUB può leggere un /boot cifrato con GRUB_ENABLE_CRYPTODISK, ma sposta soltanto il problema — lo stadio del bootloader precedente resta comunque in chiaro. L'inquadramento onesto è che LUKS garantisce la riservatezza dei dati a riposo, non l'integrità della catena di avvio. Se la manomissione offline di /boot rientra nel tuo modello di minaccia, calcolane l'hash dopo ogni aggiornamento del kernel e verificalo dall'esterno della macchina.
Il server può riavviarsi senza che io digiti nulla?
Solo se gli dai un modo per ottenere la chiave, il che indebolisce necessariamente la garanzia. La versione pulita è Clevis vincolato a un server Tang su una macchina che controlli in un'altra giurisdizione: il VPS si sblocca da solo finché riesce a raggiungere Tang, e si blocca del tutto se non ci riesce — il che funge anche da interruttore di emergenza remoto. Raggiungi Tang via WireGuard o tramite un servizio onion di Tor piuttosto che sulla rete internet pubblica, e mantieni una passphrase in un secondo slot di chiave così Clevis non è mai il tuo unico modo per accedere.
Posso farlo su qualsiasi immagine del sistema operativo, o solo su Debian?
Funziona qualsiasi immagine Linux dotata di una modalità di ripristino; i comandi qui riportati sono per Debian 13 e si trasferiscono direttamente a Ubuntu 24.04. Su Rocky, Alma e Fedora lo strumento è dracut anziché initramfs-tools, quindi lo sblocco remoto usa il modulo dracut-crypt-ssh oppure un initramfs dracut abilitato alla rete al posto di dropbear-initramfs — il lato LUKS è identico. Se preferisci non partire affatto da una shell di ripristino, carica un'ISO personalizzata fino a 4 GiB e usa il programma di installazione della tua distribuzione, che offrirà l'LVM cifrato come opzione standard; aggiungerai poi lo sblocco remoto in un secondo momento.
Dovrei usare la cifratura o una giurisdizione diversa?
Risolvono problemi diversi e la domanda è una falsa alternativa. La cifratura decide se i blocchi sono leggibili; la giurisdizione decide chi può costringere a cosa, e con quale rapidità. Un volume LUKS a Paris e un volume in chiaro a Zürich falliscono in modi completamente diversi. La maggior parte di chi pone questa domanda vuole entrambe le cose, più una registrazione no-KYC in modo che non ci sia nulla da rivelare fin dall'inizio — ogni livello copre una falla che gli altri lasciano scoperta. Le pagine sulle giurisdizioni spiegano cosa offre realmente ciascuna delle nostre quattro regioni.
Keep exploring
Errori di anonimato che ti deanonimizzano
Un disco cifrato non serve a nulla se la sessione SSH parte dal tuo IP di casa. I cedimenti che vanificano tutto il resto.
VPS per server di posta anonimo
Dove un contenitore LUKS attorno allo spool della maildir è l'opzione pratica — cifratura applicata a un solo insieme di dati invece che all'intera macchina.
Piani e prezzi VPS
VPS Linux KVM S1/S2/S3 — AMD EPYC, /64 IPv6, 10 Gbps illimitati, solo crypto a partire da $5/mese.
Deploy your offshore server.
Scegli una regione. Scegli un piano. Incolla una chiave. Paga. I prossimi 47 secondi sono a nostro carico.