¿Existe un sistema de archivos cifrado de solo escritura para Linux?

14

Estoy buscando un sistema de archivos encriptado para Linux que pueda montarse en un modo de solo escritura, lo que significa que debería poder montarlo sin proporcionar una contraseña, pero aún así podría escribir / agregar archivos, pero tampoco debería poder leer los archivos que ha escrito ni leer los archivos que ya están en el sistema de archivos. El acceso a los archivos solo debe darse cuando el sistema de archivos se monta a través de la contraseña. El propósito de esto es escribir archivos de registro o datos similares que solo se escriben, pero nunca se modifican, sin que los propios archivos estén expuestos. Los permisos de archivo no ayudan aquí, ya que quiero que los datos sean inaccesibles incluso cuando el sistema está totalmente comprometido.

¿Existe tal cosa en Linux? O si no, ¿cuál sería la mejor alternativa para crear archivos de registro cifrados?

Mi solución actual consiste en simplemente canalizar los datos gpg --encrypt, lo que funciona, pero es muy engorroso, ya que no puede acceder fácilmente al sistema de archivos en su conjunto, debe canalizar cada archivo gpg --decryptmanualmente.

Grumbel
fuente
3
Creo que puedes hacer lo que quieras a través de syslog. Eso separa la generación de los mensajes de registro del sistema que los almacena, por lo que las aplicaciones que generan el mensaje no tienen acceso al lugar donde están almacenados. Los registros pueden incluso estar (y con frecuencia lo están) en un servidor separado.
mpez0
Quiero ir un paso más allá y hacer que los datos no sean accesibles en absoluto, no solo para el proceso que los creó, sino incluso para rootear. Esto es lo que hace el cifrado de clave pública con gpg, pero estoy buscando una manera de hacerlo a nivel del sistema de archivos.
Grumbel

Respuestas:

4

... Quiero que los datos sean inaccesibles incluso cuando el sistema esté completamente comprometido.

Esto no es posible. Si el sistema está completamente comprometido, entonces "por definición" se puede acceder a cualquier cosa, incluidas las claves de cifrado.

El cifrado es inútil para proteger contra el compromiso del sistema, mientras el sistema se está ejecutando, SI las claves para cifrar / descifrar datos están en el mismo sistema con los datos cifrados. Por ejemplo, si tiene un sistema de archivos LUKS montado y alguien obtiene acceso de root a su sistema, es posible extraer las claves de la RAM, ya que tienen que vivir en la RAM para descifrar el sistema de archivos. En su situación, si está escribiendo su frase de contraseña cada vez que encripta un archivo, está protegido (suponiendo que un keylogger no esté presente en su sistema), si no, está en la misma situación y alguien que compromete su sistema puede encontrar que clave y deshacer todo su cifrado.

Debe enviar los datos que desea proteger fuera del sistema + NO escribirlos en un medio intermediario en ese sistema si absolutamente no desea que la raíz llegue a ellos. rsyslogadmite explícitamente esto con respecto al registro, y puede cifrar la conexión entre el origen y el receptor con OpenVPN stunnel, o similar. Estoy seguro de que hay otras opciones de transferencia "unidireccionales".

LawrenceC
fuente
"porque tienen que vivir en la RAM para descifrar el sistema de archivos" esto puede ser cierto con LUKS específicamente, pero no en general: la criptografía asimétrica está diseñada exactamente para ese propósito (alguien que tenga la clave pública puede cifrar, pero no descifrar)
Clément
3

Me parece que vas en la dirección equivocada. Si desea un archivo en el que pueda escribir, pero no leer, entonces lo que está buscando son permisos de archivo.


$ touch log
$ chmod 222 log
$ echo test > log
$ cat log
cat: log: Permission denied

Por supuesto, este archivo puede estar en un sistema de archivos cifrado.

gorila
fuente
Puede montar el sistema de archivos con una umask determinada, sin permitir que los usuarios cambien los permisos.
nos
Y solo el propietario del archivo (o superusuario) puede cambiar el permiso.
gorila
Creo que OP está tratando de protegerse incluso contra un atacante que obtiene root.
Clément
1
umask 0477 && touch file && echo test > file && cat file

Puede ser útil también. Cualquier archivo creado dentro del proceso actual tendrá el modo 0200.

edk
fuente