GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Utilizzando un servizio Vps, posso impedire che i dati siano accessibili dall'host Vps?

Utilizzando un provider come Digital Ocean, se memorizzo informazioni private/sensibili sul VPS, c'è un modo per proteggere tali informazioni (impedendo l'accesso all'host VPS) pur mantenendo l'accesso SFTP e SSH?

Risposta accettata:

Purtroppo non è affatto possibile. Ecco alcune brevi spiegazioni al riguardo:

  • Anche con la crittografia, il provider può eseguire uno snapshot dello stato corrente della memoria e del disco e clonare una nuova istanza per ottenere lo stesso livello di accesso che hai ottenuto. (fonte)

  • Anche se stai eseguendo un VPS con filesystem crittografati, tutti i dati in-RAM non saranno crittografati, a cui gli amministratori di sistema dell'host VPS avrebbero accesso, inclusa la passphrase di decrittazione. Se hai davvero questi severi requisiti di sicurezza, sembra che tu debba eseguire i tuoi sistemi fisicamente protetti o trovare una società di hosting di server dedicata specializzata in questo genere di cose. (fonte)

  • ...tieni presente che chiunque abbia accesso all'immagine VPS può potenzialmente aggiungere bug al tuo codice per rilevare la passphrase che usi. (fonte)

  • [Crittografia] ha senso se hai il controllo sull'hardware; quando qualcun altro controlla l'hardware ha poco senso a meno che tu non ti fidi che l'host non voglia davvero guardarlo ... (fonte)

  • L'accesso fisico è l'accesso come root, quindi se qualcuno ha accesso fisico al server, indipendentemente dal fatto che si trovi su una macchina virtuale o bare metal, ha accesso come root. Nel caso di KVM il proprietario dell'host bare metal può accedere al guest. Puoi sempre crittografare i dati, ma ciò potrebbe essere di beneficio limitato poiché i dati verranno decrittografati quando accedi.

    Lo stesso con la rete. Il proprietario della macchina virtuale può vedere il tuo traffico di rete. Anche in questo caso puoi crittografare parte del traffico (https, ssh, ecc.). (fonte)

Ecco una soluzione particolare nel caso in cui desideri archiviare solo alcuni dati sensibili sul tuo VPS:

Come creare e utilizzare una directory crittografata tramite eCryptfs e montarla in remoto

Prerequisiti

Installa i pacchetti ecryptfs-utils e sshfs e riavvia il sistema:

sudo apt update && sudo apt -y install ecryptfs-utils sshfs
sudo apt update && sudo systemctl reboot

Configurazione e utilizzo standard

Apri una finestra di terminale ed esegui questo comando:

ecryptfs-setup-private

Quindi ti verrà chiesto di:

  • Enter your login passphrase [<user>]: questa passphrase deve corrispondere alla password dell'utente corrente e verrà utilizzata per sbloccare (decodificare) le tue informazioni crittografate.

  • Enter your mount passphrase [leave blank ...]: questa passphrase verrà utilizzata automaticamente quando i tuoi dati crittografati stanno montando, ma ne hai bisogno in caso di emergenza e devi recuperare i tuoi dati, quindi annotalo in un luogo sicuro.

Il comando precedente creerà due directory:

  • ~/.Private dove verranno archiviati i tuoi dati crittografati.
  • ~/Private dove la directory ~/.Private verrà montato come decrittografato.

Mentre ~/.Private non è montato nella directory ~/Private ha due file con le istruzioni.

Quando accedi al sistema tramite la password dell'utente (login passphrase ) la directory ~/.Private verrà automaticamente montato su ~/Private e sarai in grado di lavorare lì. Quando effettui il logout o exit , la directory ~/.Private sarà smontato. Per farlo manualmente puoi usare i comandi:ecryptfs-mount-private e ecryptfs-umount-private . Maggiori informazioni su queste opzioni possono essere trovate nell'articolo eCryptfs da ArchLinux Wiki. Vedi anche:come usare ecryptfs con una directory casuale.

Correlati:separare i dati da 1 colonna in più colonne?

Se autentichi la tua connessione SSH/SFTP tramite password, quanto sopra funziona. Ma se ti autentichi tramite una coppia di chiavi SSH devi usare ecryptfs-mount-private per montare ~/.Private . In questo caso devi prima eseguire un SSH sul sistema ed eseguire ecryptfs-mount-private quindi sarai in grado di utilizzare SFTP nella directory ~/Private . Puoi aggiungere il comando ecryptfs-mount-private in fondo a ~/.bashrc per automatizzare questo processo:

echo -e "\n# Mount my Private directory\necryptfs-mount-private\n" | tee -a ~/.bashrc

Monta una directory crittografata remota e sbloccala (decodifica) localmente

Sulla macchina remota (VPS) e sulla macchina locale eseguire il comando seguente e inserire dati identici per login passphrase e per mount passphrase su entrambe le macchine:

ecryptfs-setup-private --nopwcheck --noautomount

Sulla macchina remota:

  • Esegui il comando:

    ecryptfs-mount-private
    

    Nota: Durante il test di questo approccio ho dovuto eseguire il comando sopra due volte!

  • Crea dei contenuti semplici:

    echo "Hello Word!" > ~/Private/hello.txt
    
  • Smonta ~/.Private :

    ecryptfs-umount-private
    
  • Inoltre puoi rimuovere la directory ~/.ecryptfs (dal VPS), dove sono archiviati i tuoi dati di decrittazione.

Sulla macchina locale:

  • Monta la cartella crittografata remota ~/.Private nella cartella locale ~/.Private tramite sshfs e maschera la proprietà dei file (sostituisci <user>@<host_name_or_ip> ):

    sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) <user>@<host_name_or_ip>:.Private ~/.Private
    

    Per smontare, usa il comando:fusermount -u ~/.Private o sudo umount -l ~/.Private .

  • Quindi monta (e decifra) la directory locale ~/.Private a ~/Private

    ecryptfs-mount-private
    
  • Controlla se il file hello.txt c'è:

    $ cat ~/Private/hello.txt
    Hello Word!
    
  • Se incontri un problema con il comando ecryptfs-umount-private (umount.ecryptfs_private ) puoi smontare il ~/Private locale directory con il comando sudo umount -l ~/Private .

  • eCryptfs contiene bug e talvolta ecryptfs-mount-private e ecryptfs-umount-private non funzionano correttamente.

  • In base a quanto sopra puoi creare due funzioni all'interno di ~/.bashrc che automatizzerà l'intero processo (montaggio/smontaggio) (sostituisci <user>@<host_name_or_ip> ):

    function ecryptfs-remote-mount {
            sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) <user>@<host_name_or_ip>:.Private ~/.Private > /dev/null 2>&1
            sudo keyctl clear @u
            sudo ecryptfs-insert-wrapped-passphrase-into-keyring $HOME/.ecryptfs/wrapped-passphrase
            # Attempt to mount, and loop the function unless it is true - due to  CLI usage bug
            ecryptfs-mount-private && echo "Done!" || ecryptfs-remote-mount            
    }
    
    function ecryptfs-remote-umount {
            ecryptfs-umount-private > /dev/null 2>&1 || sudo umount -l $HOME/Private
            fusermount -u $HOME/.Private > /dev/null 2>&1 || sudo umount -l $HOME/.Private
            echo "Done!"
    }
    
    export -f ecryptfs-remote-mount ecryptfs-remote-umount
    

    Quindi source ~/.bashrc e potrai usare ecryptfs-remote-mount e ecryptfs-remote-umount come comandi.

Riferimenti e ulteriori letture

  • Crea un file di archivio crittografato (tar), dove si nascondono i tuoi dati sensibili:

    • Crittografa il file tar.gz durante la creazione
    • Come creare un archivio tar o zip crittografato (protetto da password) in Linux
    • Come proteggere con password i file gzip sulla riga di comando?
    • Come faccio a proteggere con password un file .tgz con tar in Unix?.
  • Crea una directory crittografata:

    • Backup crittografato su un server SFTP (WebSpace) con ecryptfs
    • Come fare per Secure Encrypted Remote Volume
    • Come crittografare singole cartelle?
    • Come crittografare le directory con eCryptfs su Ubuntu 16.04
    • YouTube:come crittografare la cartella in Ubuntu
  • Usa la crittografia della home directory dell'utente:

    • Cartella Home crittografata
    • Come fare per la directory principale crittografata
    • HOW-TO crittografare la tua home directory
    • Accesso alla tua home directory crittografata in Ubuntu
    • Migrazione a una home directory crittografata
    • Messaggio SSH dopo l'accesso, quindi impedire all'utente di utilizzare l'account
Correlati:manca l'indicatore del gestore di rete?
Ubuntu
  1. Posso ospitare solo immagini sul tuo servizio?

  2. Necessità di impedire l'installazione di un pacchetto?

  3. CentOS / RHE 7:come impedire agli utenti di utilizzare le ultime 10 password

  4. Come posso eliminare completamente i contenuti del mio vecchio VPS?

  5. SSH:nella rete privata come accedere alla macchina remota dalla macchina di origine senza utilizzare la chiave pubblica ssh

Come impedire l'aggiornamento di un pacchetto nelle distribuzioni Linux basate su Ubuntu e Debian

Come controllare la versione di Ubuntu dalla riga di comando

Come possiamo limitare l'accesso SSH con UFW su Linux Mint 20

Come bloccare lo schermo utilizzando la nuova schermata di blocco dalla riga di comando?

Consentire l'accesso a un host virtuale Apache solo dalla rete locale

Come posso impedire che i calamari vengano rilevati?