¿Cómo hacer que los archivos estén protegidos?

24

¿Cómo hacer que algún archivo que contiene datos cruciales esté protegido? Por ejemplo, supongamos que tengo algunos archivos que son importantes, ¿hay algún método o estrategia para hacer que este tipo de archivos esté más protegido en Ubuntu? Incluso quiero hacer que algunos archivos soliciten una contraseña cada vez que alguien intente abrirla. ¿Afecta la versión de Ubuntu en términos de política de seguridad? ¿Puedo usar cualquier algoritmo de encriptación externamente? Saludos.

Avani badheka
fuente
¿Qué quieres decir con protector? ¿Desea que sea más difícil modificar o eliminar el archivo?
Zanna
protectora en sentido nadie puede acceder a ella sin mi permiso o ni siquiera es fácil eliminar cualquier modificación. O necesita alguna contraseña para abrirla de manera complicada.
Avani badheka
¿quieres decir simplemente chown rooty chmod go-rwx?
njzk2
Para solicitar una contraseña, use un disco encriptado o un archivo de imagen de disco que no se monte automáticamente.
Joshua

Respuestas:

32

El mejor método que tienes es chattr +i {file}. Esto establece el atributo inmutable y luego un archivo no puede ser modificado, eliminado, renombrado o un enlace creado por cualquier persona, incluida la raíz.

La única persona que puede editar el archivo es root. (S) tiene que deshacer esto eliminando el bit inmutable: chattr -i {file}y luego puede hacer lo que sea con el archivo. Configurar el + i nuevamente bloquea el archivo de cualquier modificación.

Sin embargo, esto no impedirá formatear la partición donde se almacena el archivo. Evitará el robo del archivo.


Incluso puede hacer esto en un punto de montaje completo si desea:

chattr +i -R /discworld

haría que todo el "mundo de los discos" y cualquier cosa en él sea inmutable ( chattr -i -R /discworlddeshacerlo;))


Rinzwind
fuente
Me gustaría modificar, eliminar, renombrar, etc., solo se puede hacer por root. Incluso si la raíz no puede cambiar, se leerá solo para todos, lo que no quiero en mi caso.
Avani badheka
@Avanibadheka root puede hacer chattr -i antes de editar y luego hacer chattr + i nuevamente para bloquearlo.
Rinzwind
1
También puede eliminar permanentemente (hasta que se reinicie) la capacidad de modificar CUALQUIER bit inmutable del sistema.
rackandboneman
¿Ni siquiera se puede copiar? ¿Entonces cat file> output o dd no funcionan?
Konerak
1
Se puede copiar un archivo inmutable (a menos que esté configurado como chmod a-r). Ver mi registro de terminal para prueba de ejemplo.
Ruslan
18

Sin hacer nada especial, puede dificultar que otros lean, cambien o eliminen el archivo eliminando los permisos para todos menos el propietario. Convierta a root en el propietario del archivo y colóquelo dentro de un directorio al que solo root tenga acceso ...

sudo mkdir /home/secret     #this directory will be owned by root, no need to chown
sudo chmod 700 /home/secret

mover ( sudo mv file /home/secret) su archivo allí y hacer

sudo chown root: /home/secret/file
sudo chmod 600 /home/secret/file

chmody chowntomar múltiples argumentos: chmod 600 file1 file2ochmod 600 file*

aparte de eso, use encriptación ...

Zanna
fuente
3
Quizás sea más fácil de entender si usa permisos de caracteres en lugar de octal. Por lo tanto, sería, por ejemplo, "chmod go-rwx" eliminar los permisos de lectura, escritura y ejecución del grupo y otros. Vea la página de manual de chmod.
jamesqf
12

Una forma bastante segura de proteger los documentos es el cifrado (siempre que destruya el original y almacene la versión cifrada correctamente).

Los permisos (como lo sugieren las otras respuestas) pueden eludirse (ver esto ).

Por lo tanto, le recomiendo que encripte correctamente el archivo. Aquí es cómo:

(Para un método de interfaz gráfica, vea el final de esta respuesta)

Asegúrese de haberlo gpginstalado.

Por ejemplo, para cifrar un archivo llamado Important_File.txt, use

$ gpg -c Important_File.txt

Ahora ingrese la contraseña (se usará más adelante cuando tenga que leerla).

Ahora obtendrá un archivo con el nombre del original y una .gpgextensión, por ejemplo Important_File.txt.gpg.

Elimine el archivo original y conserve la .gpgversión. Puede ser fácil obtener el archivo original del disco si no utiliza la shredutilidad segura (que todavía no funcionará en unidades SSD o tarjetas SD):

$ shred Important_File.txt

Ahora solo tenemos Important_File.txt.gpgcon nosotros.

Siempre que necesites leerlo, simplemente

$ gpg Important_File.txt.gpg

Luego ingrese la contraseña que estableció en el primer comando. Obtendrás el original Important_File.txt.

NOTA : Esto solo protegerá el contenido del .gpgarchivo encriptado para que nadie lo lea (usando encriptación), ¡pero cualquiera puede eliminarlo, copiarlo o moverlo ! Para una protección básica de eso , use los métodos de permiso de las otras respuestas en el .gpgarchivo encriptado .

Método de interfaz gráfica (GUI)

Instala la aplicación Seahorse.

Entonces puede hacer esto desde la aplicación Archivos:

Captura de pantalla de cifrado de archivos GNOME

ID universalmente único
fuente
1
"La única forma segura de proteger los documentos es el cifrado" No estoy de acuerdo. El acto de cifrar no es seguro, lo que lo hace seguro. Es la parte social después de eso que lo hace. Si crea un archivo Léame al lado del archivo encriptado con "esta es la contraseña: 11212324234", puede cifrar todo lo que desee seguro, no lo es.
Rinzwind
1
@Rinzwind Editado. De todos modos, con ese nivel de estupidez, nada es seguro.
UniversallyUniqueID
Votado con anticipación ;-)
Rinzwind
Tenga en cuenta que puede ser fácil recuperar el archivo original sin cifrar si lo elimina ( rmo elimine del administrador de archivos). Debería sobrescribirlo para que no se pueda recuperar, por ejemplo, usando shred. Eso también es inútil en SSD y unidades flash ...
Byte Commander
@ByteCommander Gracias, lo he agregado a la respuesta.
UniversallyUniqueID
9

Simplemente establezca un permiso muy estricto 600, de modo que solo el propietario pueda leerlo y escribirlo (si necesita permisos de ejecución, eso sería 700).

También puede hacerlo gráficamente: simplemente haga clic derecho en el archivo, seleccione Properties > Permissions > Sety configure todo menos el ownercampo en nada.

Vea la imagen como ejemplo:

la imagen

dadexix86
fuente
Oye, creo que tu respuesta se beneficiaría de una captura de pantalla que muestre cómo hacerlo con la GUI.
grooveplex
Hecho, gracias :) (pero mi sistema está en italiano ...)
dadexix86
@Zanna buena observación (modifiqué la respuesta)
dadexix86
8

Si usted es el usuario único en el sistema y nadie puede acceder razonablemente a su computadora sin sus permisos, puede bloquear el acceso con este comando, según la respuesta de Zanna :

sudo chown root:root /my/secret/file.txt
sudo chmod 600 /my/secret/file.txt

En este caso, el archivo solo puede ser leído y / o escrito por el rootusuario. Esto se considera "lo suficientemente seguro" si nadie puede arrancar su computadora sin su permiso o levantar su disco duro. Estamos usando al rootusuario en este caso, porque el rootusuario siempre puede leer archivos, incluso si no tienen permiso. Al usar el usuario raíz, exigimos que solo un usuario pueda acceder a él.

Si desea marcar el archivo como inmutable de cualquier forma o forma, puede usar el iatributo para marcar el archivo como inmutable . En este caso, los permisos del archivo están bloqueados y no se pueden cambiar bajo ninguna circunstancia. De este modo, puede hacer el siguiente comando para hacer que el archivo no se pueda cambiar y protegerlo de la eliminación y los cambios de permisos:

sudo chattr +i /my/secret/file.txt

Si desea cambiarlo, reemplácelo +icon a -ipara desbloquear el archivo temporalmente. Vea la respuesta de Rinzwind para una visión más profunda.

Ahora, si otras personas tienen acceso a su computadora (ya sea sudoacceso remoto o cualquier forma de acceso físico), esto se desmorona instantáneamente. Un atacante puede usar rootpoderes para leer su archivo, insertar un USB en vivo o simplemente extraer su disco duro.

Por lo tanto, necesitamos encriptar el archivo. Personalmente prefiero usar "contenedores de archivos", para que pueda pegar más y hacer que crezca según sea necesario. chattr +itodavía se recomienda para que el archivo no se elimine accidentalmente (o se altere). Finalmente, si está usando una imagen encriptada, puede establecer permisos para permitir que otros accedan a un subconjunto muy limitado de archivos cuando se monta el disco, lo que lo hace bueno para un servidor. Esta guía estaba originalmente disponible aquí , y fue adaptada para su uso aquí.

En primer lugar, desea crear una imagen de disco para su uso. En este ejemplo, lo haremos con 5 GB.

dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img

Luego, necesitamos encriptar su imagen:

sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img

Aquí tendrá la opción de ingresar su contraseña de cifrado preferida. Una vez hecho esto, necesitamos exponer el dispositivo de bloque sin procesar:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device

En este momento, tenemos un contenedor de archivos descifrado, pero no hay un sistema de archivos, y es tan bueno como inútil. Vamos a arreglar eso:

sudo mkfs.ext4 /dev/mapper/my-secret-device

Ahora, necesitamos un lugar para montar nuestra nueva partición. En este caso, lo pondré en /crypt. Soy el usuario 1000, así que voy a configurar mi partición para que solo me permita (y root) leer / escribir desde ella.

sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000

Ahora, puedo usar mi herramienta de archivos para navegar /crypty puedo almacenar todos mis archivos confidenciales allí. Una vez que termine, tendré que desmontar y volver a cifrar mi partición.

sudo umount /crypt
sudo cryptsetup luksClose my-secret-device

Ahora, voy a configurar particiones apropiadas en mi archivo de imagen, de modo que solo yo y root podamos acceder a él, y que ya no se pueda cambiar.

chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img

Cada vez que quiero abrir este archivo para leer, solo necesito ejecutar estos dos comandos, que puedo alias fácilmente:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Mis datos cifrados estarán disponibles en /crypty serán de solo lectura y solo accesibles para mí y root.

Si quiero alterar el archivo, necesito cambiar los permisos y luego montar:

sudo chattr -i ~/NSA-Data-Dump-20161012.img
chmod 700 ~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Ahora, debe tener cuidado aquí porque si un usuario tiene root en su sistema, puede modificar / destruir su partición encriptada, dejándola inútil. También pueden robar datos del disco, pero solo cuando está abierto. Sin embargo, no pueden robar datos o incluso ver que los datos existen sin que usted los abra explícitamente. Por lo tanto, es su deber asegurarse de que su sistema sea lo suficientemente seguro como para no tener ningún usuario root en línea cuando abra su volumen cifrado.


TL; DR :

  1. Haz la bóveda:

    dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mkfs.ext4 /dev/mapper/my-secret-device
    
  2. Llena la bóveda:

    sudo mkdir /crypt
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
  3. Bloquee la bóveda:

    sudo umount /crypt
    sudo cryptsetup luksClose my-secret-device
    
  4. Congelar la bóveda:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
  5. Abre la bóveda:

    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
    
Kaz Wolfe
fuente
Por supuesto, un usuario con acceso de root también podría reemplazarlo cryptsetupcon algo que registre las contraseñas ingresadas ...
Hagen von Eitzen
@HagenvonEitzen Sí, bueno, no hay nada como "verdaderamente seguro" en las computadoras. Hay un punto donde trazas la línea.
Kaz Wolfe el
7

Puede usar encfs para el cifrado de directorios .

Básicamente, debe crear 2 directorios, 1 en el que se almacenarán los datos cifrados y 1 donde accederá a esos datos:

mkdir ~/.encrypted
mkdir ~/private

Luego ejecute (debe ejecutar esta línea cada vez que quiera 'montar' su directorio):

encfs ~/.encrypted/ ~/private/

A menos que sepa más al respecto, solo presione ENTERpara ir a la configuración estándar (se le preguntó solo la primera vez).

Luego ingrese su contraseña y se montará.

Solo el usuario accederá a sus datos de forma segura ~/private/(puede ignorarlos ~/.encrypted)

Para desmontarlo:

sudo umount ~/private/

o

fusermount -u ~/private/

Simple como eso.

lepe
fuente
3

Puede cifrar los datos utilizando cryptkeeper, que es realmente una muy buena aplicación y puede proporcionar seguridad a su archivo. Puedes instalarlo con:

sudo apt-get update
sudo apt-get install cryptkeeper

En general, le recomiendo encriptar la carpeta con un nombre que comience . porque ponerlo antes del nombre del archivo lo ocultaría. Es un pequeño truco pero funciona.

Para mostrar la carpeta, use Ctrl+ ho viceversa.

SHUBHRANEEL GHOSH
fuente
1
¿Para qué aplicación se aplica la combinación de teclas Ctrl + h? No funcionará lsdefinitivamente.
Melebius
Ctrl-H al menos funciona para Nautilus (y sus tenedores, como Nemo). En cuanto a otros administradores de archivos, no puedo decirlo. Cuando lo use ls, puede usar el -ainterruptor para mostrar todos los archivos (es decir, incluidos los ocultos).
s3lph