Pregunta Linux: ¿hay alguna forma de evitar / proteger que un archivo se elimine incluso de root?


Tengo un archivo muy importante que utiliza una aplicación en mi lugar de trabajo, necesito asegurarme de que no se borre en absoluto, ¿cómo puedo hacer eso?


86
2017-12-02 16:02


origen


Haga una copia de seguridad, para que pueda restaurarla ... Aparte de eso, chattr +i puede ayudar, pero también hará que el archivo sea de solo lectura (y se puede anular con chattr -i), también puedes intentar protegerlo con SELInux etc. - Sven♦
¿Puede la raíz crear un proceso que incluso la raíz no puede matar? - Mark Gabriel
@MarkGabriel Sí. Una bomba tenedor. :) - reirab
Dios, Raíz, ¿qué es la diferencia? - Dan Neely
El administrador de HW puede venir y quitar el disco, triturarlo, quemar los restos y enviarlos a hoghs. O, mejor aún, algunos programadores C (++) pueden inducir algunos demonios nasales. Lo que sea importante para ti, hazlo. Dos veces. - Pavel


Respuestas:


Sí, puede cambiar los atributos del archivo a solo lectura.

El comando es:

chattr +i filename

Y para desactivarlo:

chattr -i filename

Desde man chattr:

Un archivo con el i el atributo no se puede modificar: no se puede eliminar ni cambiar de nombre, no se puede crear un enlace a este archivo y no se pueden escribir datos en el archivo. Solo el superusuario o un proceso que posea la CAP_LINUX_IMMUTABLE La capacidad puede establecer o borrar este atributo.


127
2017-12-02 16:04



Para los interesados, el equivalente de bsd es chflags schg - Andrew Domaszek
Tenga en cuenta que un usuario con acceso de raíz puede anular la definición de ese indicador y luego eliminar el archivo. Es poco probable que ocurra por accidente, pero no se prohíbe contra la eliminación intencional. - Grant
@Grant, no si el Securelevel se establece lo suficientemente alto. El proceso de inicio establece el nivel de seguridad en 2 antes de que se habilite la red, por lo que restablecer el indicador requiere acceso local a la máquina (pero esto significa que los archivos utilizados en el proceso de inicio antes de ese tiempo también deben ser inmutables). - Simon Richter
@Grant Si uno quiere llevarlo al extremo, no puede evitar que la partición se elimine o que el disco se coloque en un horno o que los protones se descompongan en 10 ^ 30 años ... - Hagen von Eitzen
@Itai Ganot hombre. Desearía haberlo leído hace 4 días. Yo era una pregunta en un examen que tomé = / - vfbsilva


Grabarlo en un CD. Coloque el CD en una unidad de CD-ROM y acceda a él desde allí.


80
2017-12-03 15:18



+1 por pensar fuera de la caja. Y, afaik, también se ha usado antes en algunas circunstancias (unidad de cdrom de caja negra con el cd que se envió a su destino). Puede que no sea apropiado si alguien puede desconectar la unidad, de todos modos. - Alex Mazzariol
BESO. ¡Me encanta! +1 - MonkeyZeus
Creo que esa es la respuesta correcta a esta pregunta. Cambiar el atributo de archivo (chattr -i) no puede evitar acciones maliciosas. - Bruno von Paris
En estos días, una tarjeta SD de tamaño completo en un lector de tarjetas incorporado puede ser una mejor solución: menor consumo de energía, acceso más rápido en muchos casos y más duradero en el uso sin escritura. - Chris H
@ jpmc26 por lo tanto, unidad de CD-ROM. Esos son de lectura / sólo. - Thorbjørn Ravn Andersen


  1. Crear una imagen del sistema de archivos.
  2. Montar la imagen.
  3. Copia el archivo a la imagen montada.
  4. Desmonte la imagen y vuelva a montarla como de solo lectura.
  5. Ahora no puedes borrarlo.

Ejemplo:

# dd if=/dev/zero of=readonly.img bs=1024 count=1024
# mkfs.ext2 readonly.img
# mkdir readonlyfolder
# mount readonly.img readonlyfolder/
# echo "can't delete this" > readonlyfolder/permanent.txt
# umount readonlyfolder
# mount -o ro readonly.img readonlyfolder
# cat readonlyfolder/permanent.txt 
can't delete this
# rm readonlyfolder/permanent.txt 
rm: cannot remove `readonlyfolder/permanent.txt': Read-only file system

28
2017-12-03 20:33



mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt - Kaz Wolfe
Tomando esto un poco más lejos, puedes usar squashfs o cramfs que son comprimidos y de solo lectura. Necesita una herramienta especial para construir el sistema de archivos. - Zan Lynx


También debe crear varios enlaces duros al archivo. Estos deben estar en varios lugares a los que los usuarios regulares no pueden acceder.

De esta manera, incluso si logran anular la protección de chattr, los datos permanecerán y podrá restaurarlos fácilmente donde la aplicación los está buscando.


6
2017-12-03 05:15



Los enlaces duros no protegerán el contenido del archivo. - 200_success
Sin embargo, proporcionarán protección adicional contra DELETION, que era la pregunta original. - barbecue
@barbecue Si el archivo no está vinculado al nombre que una aplicación lo busca, no importa que el contenido del archivo exista bajo otro nombre. Para cualquier cosa que busque el archivo con el nombre esperado, el archivo aún se ha eliminado. - α CVn


Linux ha llamado montaje de enlace Opción que es bastante potente y útil. saber:

%  cd $TMP && mkdir usebindmountluke && cd usebindmountluke
%  echo usebindmountluke > preciousfile
%  sudo mount -B preciousfile preciousfile
%  sudo mount -oremount,ro preciousfile
%  echo sowhat > preciousfile
zsh: read-only file system: preciousfile
%  rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system

- lo que se está haciendo aquí es un archivo de montaje en enlace a sí mismo (sí, puede hacerlo en Linux), luego se vuelve a montar en modo R / O. Por supuesto, esto también se puede hacer al directorio.


6
2017-12-06 23:40





Otros han respondido tu pregunta como la has pedido. Como @Sven mencionó en un comentario, la solución general a la pregunta "¿Cómo me aseguro de no perder nunca un archivo?" Es crear una copia de seguridad del archivo. Haga una copia del archivo y guárdelo en varios lugares. Además, si el archivo es extremadamente importante y su compañía tiene una política para hacer copias de seguridad de los datos importantes con un servicio de respaldo, puede considerar incluir este archivo en el servicio.


5
2017-12-03 07:02



Bueno, por supuesto, se está realizando una copia de seguridad del archivo con regularidad, solo quería otra capa de protección contra los usuarios, que a veces trabajan en la caja con permisos de usuario root.


En un comentario a la respuesta por kevin, Jerry menciona:

Bueno, por supuesto, se está realizando una copia de seguridad del archivo con regularidad, solo quería otra capa de protección contra los usuarios, que a veces trabajan en la caja con permisos de usuario root. -

Voy a asumir que no puedes cambiar esta práctica, ya que es una idea realmente mala.

Todas las sugerencias sobre el uso de un dispositivo de solo lectura tienen el mismo problema: es un PITA para que usted realice cambios legítimos cuando lo necesite. En el caso de una unidad bloqueable, como una tarjeta SD, se encuentra con el problema de que de repente es vulnerable cuando lo desbloquea para realizar los cambios.

Lo que recomendaría en su lugar es configurar otra máquina como servidor NFS y compartir el directorio con los archivos importantes en las máquinas en las que los usuarios tienen root. Comparta el montaje como solo lectura, para que las máquinas con usuarios en los que no confía no puedan realizar modificaciones. Cuando necesite realizar cambios legítimamente, puede conectarse al servidor NFS y realizar los cambios allí.

Usamos esto para nuestros servidores web, de modo que un exploit exitoso contra el servidor web no podrá insertar ni cambiar ningún archivo que el servidor pueda devolver o cambiar la configuración.

Tenga en cuenta que esto puede ser anulado de la misma manera que todos los relacionados con el punto de montaje pueden ser:

  • Hacer una copia del directorio protegido.
  • Desmontar el directorio
  • Mueva la copia en lugar del montaje, o haga un enlace simbólico si ese montaje no tiene espacio suficiente.

3
2017-12-07 13:04



¿Por qué es una "idea realmente mala" realizar una copia de seguridad de un archivo importante con regularidad y también hacer un esfuerzo para proteger el original contra una eliminación accidental? En la pregunta original de la OP, y del comentario de la OP sobre la respuesta a la que hizo referencia, está claro que la preocupación no es una actividad maliciosa, sino una actividad accidental / incompetente. - Craig
@Craig: es una mala idea tener muchos usuarios con root, especialmente si no son de confianza para no meterse con archivos críticos. - Joe H.
Ah ... bueno, por supuesto que lo es. :-) Pero ese no era el meollo de la pregunta del OP. El OP afirmó que hay son los usuarios con acceso root que deben estar protegidos contra la eliminación accidental de un archivo. - Craig
@Craig: puede que no sea el quid de la pregunta, pero es el quid del problema (¿problema XY?) ... pero no tengo idea de lo que están haciendo como root, por lo que si podrían hacer uso de setuid y / o privilegios limitados de sudo. Y deberías volver a leer la pregunta, ya que no veo que Jerry mencione que solo está tratando de protegerse contra la eliminación involuntaria ("tengo que asegurarme de que no se borre en absoluto"), y solo dio un seguimiento que ver (lo que desencadenó mi respuesta). - Joe H.
Vea la respuesta del OP a esta respuesta. - Craig


En linux inmutable La bandera solo es compatible con algunos tipos de sistemas de archivos (la mayoría de los nativos, como ext4, xfs, btrfs...)

En los sistemas de archivos en los que no se admite, otra opción es montar el archivo por enlace sobre sí mismo en modo de solo lectura. Eso debe hacerse en dos pasos:

mount --bind file file
mount -o remount,bind,ro file

Eso tiene que hacerse en cada arranque, por ejemplo, a través de /etc/fstab.


3
2017-12-08 16:32



Espero que nadie umount El archivo para obtener permisos de escritura de nuevo. - whoan


¿Por qué no crear una imagen ISO 9660, que es de solo lectura por diseño?

Monte la imagen ISO y se verá como un CD-ROM, pero con el rendimiento de un disco duro, y los archivos en la imagen montada estarán tan seguros de la eliminación como los archivos en un CD-ROM físico.

La idea de grabar el archivo confidencial en un CD y ejecutarlo desde un CD-ROM es interesante, suponiendo que establecer el bit inmutable en el archivo no se considere suficiente.

Existen posibles problemas negativos al ejecutarlo desde un CD físico, incluido el rendimiento (las unidades de CD-ROM son mucho más lentas que las unidades de disco duro o SSD). Existe la posibilidad de que el CD-ROM sea removido por un individuo con buenas intenciones y reemplazado por un disco diferente al que necesitan acceso. Existe la posibilidad de que una parte maliciosa simplemente saque el disco y lo arroje en un microondas (o la basura), por lo que "borra" su archivo. Existe el inconveniente de tener que tener una unidad de CD-ROM de hardware dedicada solo para ese archivo y otros factores.

Pero el OP dejó en claro que la intención principal es proteger contra la eliminación accidental, no contra actos malintencionados, y que el archivo (s) en cuestión está respaldado y recuperable en caso de que ocurra un accidente, pero es altamente deseable que el archivo nunca ser borrado accidentalmente

Parece que ejecutar el archivo desde una imagen ISO montada satisfaría el requisito.


2
2017-12-06 23:03



La raíz todavía puede eliminar un archivo manipulando la imagen directamente. Es sólo un archivo normal que se monta. - Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen ¿Cómo es eso? ISO 9660 por diseño es inmutable. La parte que realice ese cambio tendría que eliminar y reemplazar todo el archivo ISO. No es que no pudieran hacer eso. Pero no pudieron entrar y eliminar quirúrgicamente un archivo sin una gran experiencia, si es que incluso entonces. Sería mucho más fácil quitar un CD-ROM físico de una unidad y tirarlo en un contenedor de basura. ;-) - Craig
No es necesario que sea sofisticado, solo sobrescriba el archivo de imagen con ceros. - Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Concederé ese punto con bastante facilidad. La advertencia es que requeriría desmontar intencionalmente la imagen y sobrescribirla. Un completo perpetrador lo haría shred en ese punto Pero a menos que esté negando el acceso físico a la máquina, parece más fácil simplemente sacar un CD físico de la unidad y tirarlo al contenedor que desmontar y sobrescribir el archivo ISO, aunque cualquiera de los dos es fácil. Y el OP ha declarado que se realiza una copia de seguridad del archivo importante de manera regular, por lo que esta es solo una medida adicional contra daños accidentales, no contra daños maliciosos. - Craig
He señalado cómo cambiar una imagen ISO9660 incluso si se supone que no se puede cambiar. Mi punto es que si un bit se puede escribir, la raíz puede escribirlo. - Thorbjørn Ravn Andersen