Sto cercando di creare un servizio che mantenga il minor numero possibile di dati sui suoi utenti. A tal fine, voglio assicurarmi che qualcuno che utilizza strumenti forensi non acquisirà più informazioni di quelle che vorrei guardando il mio database o il mio filesystem. In altre parole, non dovresti essere in grado di esaminare il mio disco rigido con un editor esadecimale e trovare un messaggio cancellato ieri da un utente.
Misure che ho già preso:
Elimina i file di registro con informazioni identificative entro 30 minuti. Ho disattivato lo swap. Ho /tmp
, /home
, /root
e /var/log
montati su un disco RAM. Ho rimosso rm
e ho inserito un link fisico in srm
al suo posto.
Ho un disco rigido che non rialloca i blocchi, a meno che non ci sia un settore danneggiato.
Problemi al mio sistema attualmente:
- Se un file sensibile viene modificato e ridotto, questo (AFAIK) rilascia un settore, che non verrà triturato, anche se
srm
viene chiamato sul file. - La modifica di
rm
non fa nulla per i programmi che chiamano scollegare direttamente. -
Ho delle righe in MySQL che contengono dati sensibili. Elimina quelle righe, ma sono preoccupato che MySQL li tenga in qualche modo.
Modifica: sembra che SQLite abbia una impostazione di configurazione chiamatasecure_delete
. Userò SQLite invece.
Possibili miglioramenti:
- Imposta l'attributo chattr
s
(cancellazione sicura) Non ho questo set ora perché il manuale chattr dice che ext2 / 3/4 ignora questo flag. Ho trovato informazioni contrastanti su se ext4 lo supporta. Quali filesystem lo rispettano? - Pulisci lo spazio. Sembra una specie di approccio da mazza, ma non riesco a trovare un modo per risolvere il # 1 altrimenti. Inoltre, i modi che ho visto per farlo consistono nel creare un file veramente grande, quindi cancellarlo. Sono preoccupato che potrebbe causare un arresto anomalo del programma quando questo sistema è quasi esaurito.
-
Potrei fare backup testuali del database MySQL (che sicuramente non contengono le righe cancellate) eliminare gli originali, quindi ripristinarli. -
Passa a un diverso daemon SQL? - Riavvia per cancellare il disco RAM. Tuttavia, non voglio frequenti tempi di inattività. Inoltre, non farebbe nulla per cancellare i dati presenti sul disco rigido.
Qual è il modo migliore per risolvere questi due three ? Attualmente sto usando Arch Linux con ext3 e MySQL SQLite. Sono disposto a cambiare nessuno di questi.
Grazie per l'attenzione!