next up previous
Next: Permisos de un archivo Up: Villalon Previous: Villalon

Sistema de ficheros

El sistema de ficheros es la parte del núcleo más visible por los usuarios; se encarga de abstraer propiedades físicas de los diferentes dispoditivos para proporcionar una interfaz única de almacenamiento: el archivo. Cada Unix tiene su sistema de archivos nativo (por ejemplo, ext2 en Linux, UFS en Solaris o EFS en IRIX), por lo que para acceder a todos ellos de la misma forma el núcleo de Unix incorpora una capa superior denominada Virtual File System encagada de proporcionar un acceso uniforme a los diferentes tipos de sistema de ficheros.

Montar un sistema de ficheros es asociar un determinado nombre de directorio, denominado mount point o punto de montaje, con el sistema en cuestión, de forma que al utilizar dicha ruta estaremos trabajando sobre el sistema de ficheros que hemos asociado a ella.

Para saber qué sistemas de ficheros se han de montar en el arranque de la máquina y bajo qué nombre de direcotio, Unix utiliza un determinado archivo; aunque su nombre depende del clon utilizado (/etc/vfstab en Solaris, /etc/fstab en Linux) su función es equivalente.

Si cualquiera de las entradas de /etc/fstab o equivalente fuera errónea, el sistema o bien no arrancaría o bien lo haría incorrectamente. Por lo que evidentemente éste ha de ser sólo modificable por el root.

Existen diferentes problemas que radican en una gestión incorrecta del montaje de sistemas de ficheros. Por ejemplo, algo muy habitual en un atacante que consigue privilegios de administrador en una máquina es instalar ciertas utilidades que le permitan seguir gozando de ese privilegio, si guarda el fichero setuidado en cualquier dierctorio de nuestro sistema, su localización será muy rápida. Pero el atacante también tiene la opción de utilizar una parte del sitema de ficheros oculta. Cuando montamos un sistema de ficheros bajo un nombre de directorio, todo lo que había en ese directorio desaparece de la vista, y es sustituido por el contenido del sistema montado.

El atacante puede desmontar una parte de nuestra jerarquía de directorios, guardar ahí ciertos ficheros y volver a montar el sistema que había anteriormente; localizar esos archivos puede ser complicado, no por motivos técnicos sino porque a muy poca gente se le ocurre hacerlo. La orden ncheck puede detectar estos ficheros ocultos bajo un mount point.

Otro problema clásico de los sistemas de ficheros viene de la necesidad que en muchos entornos existe de permitir a los usuarios sin privilegios montar y desmontar sistemas de ficheros (típicamente discos flexibles o CD-ROM). Unix permite dar una solución rápida a este problema, pero esta solución puede convertirse en una amenaza a la seguridad si no es implantada correctamente.

Si deseamos que un usuario sin privilegios pueda montar y desmontar cierto dispositivio, hemos de especificar la opción user en la entrada correspondiente de /etc/fstab. Parece lógico también utilizar noauto para que el sistema no se monte automáticamente en el arranque de la máquina --si esto sucediera el root tendría que desmontar la unidad manualmente para que otros usuarios puedan montarla--.

Pero otras opciones importantes no son tan inmediatas. Es imprescindible que si permitimos a un usuario montar una unidad utilicemos nodev de forma que si en el sistema montado exiten ficheros de dispositivo ese fichero sea ignorado. También es importante especificar nosuid, de forma que se ignore el bit de setuid en cualquier fichero contenido en el sistema que el usuario monta: así evitamos que con un simple shell setuidado en un disco flexible el usuario consiga privilegios de administrador en nuestro sistema. Incluso puede ser conveniente especificar noexec, de forma que no se pueda ejecutar nada de lo que está en el dispositivo montado. Todas estas opciones (noexec, nosuid y nodev en Linux se asumen simplemente al indicar user, aunque no está de más ponerlas explícitamente ya que no todos los Unix tienen está opción.

Un aspecto relacionado con el montaje de sistemas de ficheros que puede afectar a nuestra seguridad es el uso de sistemas de ficheros diferentes del raíz bajo ciertos direcotrios; una elección incorrecta a la hora de elegir dónde montar sistemas puede causar ciertos problemas, sobre todo negaciones de servicio. Generalmente, es recomendable montar dispositivos diferentes bajo todos y cada uno de los directorios sobre los que los usuarios tienen permiso de escritura; esto incluye el padre de sus $HOME, /tmp o /var/tmp. Con esto conseguimos que si un usuario llena un disco, esto no afecte al resto del sistema.



Subsecciones
next up previous
Next: Permisos de un archivo Up: Villalon Previous: Villalon
2003-01-16