Estoy tratando de hacer un servicio que mantenga la menor cantidad de datos posible sobre sus usuarios. Con ese fin, quiero asegurarme de que alguien que use herramientas forenses no obtenga más información que la que obtendría al ver mi base de datos o sistema de archivos. En otras palabras, no deberías poder revisar mi disco duro con un editor hexadecimal y encontrar un mensaje que un usuario eliminó ayer.
Medidas que ya he tomado:
Borro los archivos de registro con información de identificación dentro de los 30 minutos. He desactivado el intercambio. Tengo /tmp
, /home
, /root
y /var/log
montado en un disco RAM. He eliminado rm
y he puesto un enlace físico a srm
en su lugar.
Tengo un disco duro que no reasigna bloques, a menos que haya un sector defectuoso.
Problemas con mi sistema actualmente:
- Si se modifica un archivo confidencial y se hace más pequeño, eso (AFAIK) desasignará un sector, que no se destruirá, incluso si se llama a
srm
en el archivo. - El cambio de
rm
no hace nada para los programas que llaman a desvincular directamente. -
Tengo filas en MySQL que contienen datos confidenciales. Borro esas filas, pero me preocupa que MySQL las mantenga de alguna manera.
Edición: parece que SQLite tiene una configuración de configuración llamadasecure_delete
. Usaré SQLite en su lugar.
Posibles mejoras:
- Establezca el atributo chattr
s
(eliminación segura) No tengo este conjunto ahora porque el manual de chattr dice que ext2 / 3/4 ignora esta bandera. Encontré información contradictoria acerca de si ext4 lo soporta. ¿Qué sistemas de archivos lo respetan? - Limpie el espacio libre. Parece una especie de enfoque de martillo, pero no puedo encontrar una manera de resolver el # 1 de lo contrario. Además, las formas que he visto para hacer esto implican hacer un archivo realmente grande y luego borrarlo. Me preocupa que pueda hacer que un programa se bloquee cuando este sistema está casi sin espacio.
-
Podría hacer copias de seguridad de texto de la base de datos MySQL (que definitivamente no contienen las filas eliminadas) eliminar los originales y luego restaurarlos. -
¿Cambiar a un demonio SQL diferente? - Reinicia para borrar el disco RAM. Sin embargo, no quiero tiempo de inactividad frecuente. Además, no haría nada para eliminar los datos persistentes en el disco duro.
¿Cuál es la mejor manera de solucionar estos dos problemas de three ? Actualmente estoy usando Arch Linux con ext3 y MySQL SQLite. Estoy dispuesto a cambiar cualquiera de esos.
Gracias por su atención!