Esecuzione di un server Web con un file system crittografato (tutto o parte di esso)


7

Ho bisogno di un server web (LAMP) in esecuzione all'interno di una macchina virtuale (# 1) in esecuzione come servizio (# 2) in modalità senza testa (# 3) con parte o l'intero file system crittografato (# 4).

La macchina virtuale verrà avviata senza l'intervento dell'utente e fornirà l'accesso a un'applicazione Web per gli utenti nella macchina host. I punti n. 1, n. 2 e n. 3 sono controllati e hanno dimostrato di funzionare correttamente con Sun VirtualBox, quindi la mia domanda è per il n. 4:

Posso crittografare tutto il file system e comunque accedere al server web (usando un browser) o GRUB mi chiederà una password?

Se la crittografia di tutto il file system non è un'opzione, è possibile crittografare solo /homee /var/www? Apache / PHP sarà in grado di utilizzare i file in /homeo /var/wwwsenza chiedere una password o montare queste partizioni manualmente?


Perchè vuoi fare questo?
Akira,

spedisci un'immagine al cliente con dati sensibili - il nostro cliente vuole che questi dati siano accessibili solo attraverso il browser web

È inoltre possibile prendere in considerazione la crittografia dell'area del file system in cui è archiviato il database del sito Web. Suppongo, ovviamente, che il tuo sito utilizzi un database, come fanno molti tipi, ad esempio Wordpress, Drupal e altri framework / cms. Il processo del database, ad esempio da mysql o maria, memorizzerà il db nel file system come file da qualche parte. +1 Bella domanda.
therobyouknow, il

Potresti anche prendere in considerazione la crittografia del tuo swap. Ecco un esempio: askubuntu.com/questions/463661/…
therobyouknow,

Risposte:


11

Se vuoi la crittografia completa del disco, devi inserire la password durante la fase di avvio, che probabilmente non è quella che desideri. Ti consiglierei di creare una partizione crittografata usando luks e di mettere tutti i dati sensibili su quella partizione. Dopo l'avvio della macchina, è possibile selezionare SSH nella casella e sbloccare la partizione.

Per quanto riguarda come eseguire la crittografia, è molto semplice:

  • Crea la partizione come preferisci
  • Formatta la partizione con luks:

    cryptsetup -c twofish -y luksFormat /dev/sda4
    
  • Sblocca la partizione con luks:

    cryptsetup luksOpen /dev/sda4 encwww
    
  • Formatta la porzione crittografata con una fs a tua scelta:

    mkfs.ext3 /dev/mapper/encwww
    
  • Hai finito e ora puoi montare /dev/mapper/encwww

Per sbloccare nuovamente la partizione dopo un riavvio, è necessario:

cryptsetup luksOpen /dev/sda4 encwww

e quindi montare la partizione.


In base alla tua risposta, non vedo cosa impedisce un processo non autorizzato che ha ottenuto l'accesso come root eseguendo tali comandi e visualizzando i tuoi dati sensibili. Puoi spiegare?
trusktr,

3
@trusktr no il processo non lo farebbe, perché non conosce la password. Ma dopo aver inserito la password sarebbe in grado di leggere tutti i file. Se hai un rootkit sul tuo computer hai ovviamente molti più problemi a portata di mano.
Tim Schumacher,

+1 Bella risposta, la applicherò per le mie esigenze. Considererò anche come crittografare l'area in cui è archiviato il database e, se possibile, fornire feedback. Sembra che diventerà più pertinente vista la prossima legislazione GDPR.
therobyouknow,

1
@TimSchumacher Quindi ogni volta che è necessario riavviare il server, è necessaria la password sudo per montare o decrittografare il contenuto, non è vero?
SaidbakR,

2

cryptsetup e dm-crypt non sono disponibili su distribuzioni linux standard ed è una soluzione abbastanza esotica, dovresti provare a farlo normalmente:

modprobe loop
modprobe cryptoloop
modprobe aes

dd if=/dev/urandom of=/yourContainerFile bs=`expr 1024 \* 1024 \* 1024` count=yourSizeInGigaBytes

losetup -e aes-256 /dev/loop0 /yourContainerFile

mkfs.ext3 /dev/loop0

aae ora sei pronto per montare / dev / loop0 dove vuoi - crittografia avanzata, eseguita correttamente; potresti persino configurare il tuo fstab in un modo che consenta di leggere la chiave di crittografia da una chiavetta USB che deve essere inserita in @ boot ... in modo più flessibile E sicuro -> Non seguire mai le guide che usano "twofish" o qualcosa di simile alla crittografia ... questo algoritmo non è ancora completamente analizzato, nessuno sa se sia sicuro.

Oh e: se vuoi una sicurezza oltre lo scopo e il potere delle agenzie segrete: usa

/dev/random

anziché. Il demone di Linux che raccoglie entropia fornisce valori statisticamente "buoni", ma è molto lento.

E se sei davvero paranoico, comprati un dispositivo in grado di ricevere e misurare la radiazione di fondo cosmica, collegalo al tuo computer e lascialo scrivere su / dev / random :-D


2
Secondo en.wikipedia.org/wiki/Cryptoloop , dm-crypt previene una certa vulnerabilità (filigrana) che si vede con cryptoloop. Cosa ne pensi?
trusktr,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.