Además de los permisos especiales de los que hablamos en posts anteriores, en Linux disponemos -a través del paquete e2fsprogs, disponible por defecto en una instalación inicial- de una herramienta sumamente útil para aumentar la seguridad de nuestro sistema. Mediante un nivel adicional de protección, chattr nos permite poner restricciones en el tipo de modificaciones que se pueden hacer sobre un archivo, e incluso impedirlas por completo.
Uso básico de chattr
Ilustraremos la funcionalidad básica de chattr mediante los siguientes ejemplos:
Ejemplo 1 – Impedir que el archivo selabanca.txt sea borrado o renombrado como otronombre.txt agregando el atributo i (immutable):
touch selabanca.txt chattr +i selabanca.txt rm selabanca.txt mv selabanca.txt otronombre.txt
Si luego quitamos el atributo, podremos borrar o renombrar el archivo sin inconvenientes:
chattr -i selabanca.txt mv selabanca.txt otronombre.txt
El ejemplo 1 es ilustrado en la Fig. 1 a continuación:
Ejemplo 2 – Impedir que se borre el contenido del archivo selabanca.txt (pero que sí permita a root agregar contenido al mismo). Podemos lograr este objetivo al agregar el atributo a (append) a dicho archivo:
echo "Hoy es lunes" > selabanca.txt chattr +a selabanca.txt echo "y ayer fue domingo" > selabanca.txt echo "y ayer fue domingo" >> selabanca.txt cat selabanca.txt
Como podemos ver en la Fig. 2, el archivo selabanca.txt no puede ser sobrescrito (ni siquiera por root), pero sí puede agregarse contenido al mismo.
De la misma forma en que lo hicimos en el ejemplo 1, podemos remover el atributo del archivo y así poder realizar la sobrescritura del mismo si es que lo deseamos:
chattr -a selabanca.txt
Antes de seguir con el ejemplo 3, asegurémonos de volver a colocar los atributos agregar (a) e inmutable (i) al archivo selabanca.txt.
Ejemplo 3 – Listar los atributos especiales de un archivo
Si deseamos ver los atributos especiales que fueran aplicados a un archivo con anterioridad, podemos utilizar el comando lsattr (provisto por el mismo paquete, e2fsprogs) tal como vemos en la Fig. 3:
Aunque estos son ejemplos clásicos del uso de chattr, esta herramienta puede modificar otros atributos especiales de archivos (ver man chattr para mayores detalles). Solamente aplica a sistemas de archivos nativos de Linux (ext2, ext3, ext4, xfs, btrfs, etc).
El uso de los atributos de archivo puede ayudarnos a impedir, por ejemplo, que un intruso que haya obtenido acceso a nuestro sistema pueda modificar o borrar los logs del sistema (¡si es que dichos archivos poseen los atributos correspondientes!)
¡Nos leemos en el próximo post!