Title: Seguridad en el sistema de ficheros
1Seguridad en el sistema de ficheros
Argelia Martín Martín, Adrián Macias Casado
2Permisos y Propiedad
- Permisos
- Dos grupos de propiedades (propiedad y derechos
de acceso) por cada fichero - Almacenados en disco
- Igual mecanismo para muchos dispositivos (que son
ficheros) - Propiedad
- Todo fichero tiene un usuario y un grupo asociado
3Derechos de acceso (I)
- Rwxrwxrwx
- Posiciones 2-4 permisos para el usuario
propietario - Posiciones 5-7 permisos para usuarios del grupo
propietario - Posiciones 8-10 permisos para el resto de
usuarios - Primer carácter tipo especial de fichero
- d --gt el fichero es un directorio
- b --gt dispositivo de bloque
- c --gt dispositivo de tipo carácter
- "-" --gt fichero normal
4Derechos de acceso (II)
- Ficheros
- Lectura
- Primer carácter de de cada rango (caracteres 2,
5, 8) - Escritura
- Segundo carácter de de cada rango (caracteres 3,
6, 9) - Ejecución
- Tercer carácter de de cada rango (caracteres 4,
7, 10)
5Derechos de acceso (III)
- Directorios
- Significado algo distinto que con los fichero
- Lectura
- Permiso para listar el contenido
- Escritura
- Permiso para crear o borrar ficheros del
directorio - Ejecución
- Permiso para hacerlo el directorio actual y
ejecutar ficheros
6Modificación de los permisos
- Sólo el propietario puede cambiar los permisos,
incluso si el fichero lo puede escribir
cualquiera - Se usa el comando chmod que puede funcionar en
dos modos - Simbólico
- Numérico
7Chmod (modo simbólico)
- chmod ugoa (-) rwx ficheros
- u usuario propietario
- g grupo propietario
- o resto de usuarios
- a todos los usuarios
- "" añadir permiso
- "-" quitar permiso
- "" establecer permisos
- r permiso de lectura
- w permiso de escritura
- x permiso de ejecución
- X ignorado con - en directorios
8Chmod (modo numérico)
- chmod NNN ficheros
- Especifica permisos a establecer
- Cada N afecta a
- usuario propietario
- grupo propietario
- resto de usuarios
- Se usa nomenclatura octal (0-7)
9umask (permisos por defecto)
- umask determina los permisos por defecto
(asignados a los nuevos ficheros) - Usa nomenclatura inversa a chmod (un 1 en umask
es un 0 chmod) - ej umask 137 chmod 640
- Para cambiarlo ejecutar al cargar un terminal
- echo 'umask 137' gtgt /.profile
- Para que afecte a nuevos usuarios
- echo 'umask 137' gtgt /etc/skel/.bashrc
10Casos especiales, riesgos y soluciones (I)
- Permisos extra para los directorios
- Sticky bit
- Se aplica para el resto de usuarios
- Crea la situación para el resto de usuarios
- Pueden crear propios ficheros (y borrarlos)
- Ficheros de otros usuarios permanecen
- chmod ot directorio
- Aparece una t en lugar de la x de resto de
usuarios - SGID para directorios
- Los ficheros creados tendrán ese grupo
11Casos especiales, riesgos y soluciones (II)
- Ficheros de dispositivo
- A tener especialmente en cuenta
- No dar permisos a los dispositivos de disco duro
- No dar permisos a otros dispositivos
- Algunos son enlaces simbólicos (lrwxrwxrwx)
- chmod o-rwx
- chmod arw /dev/null /dev/zero /dev/random
12Ejecutables SUID/SGID
- Los procesos tienen un usuario y grupo (el del
que lo ejecuta) - tienen acceso a ficheros según se le concedan al
usuario/grupo - Con SUID/SGID el usuario/grupo del proceso es del
propietario del fichero - En los permisos aparece como s en vez de x
- Riesgo en la seguridad los programas
proporcionan más acceso al usuario
13Establecer SUID/SGID
- Modo simbólico
- Usando chmod, con s en vez de x
- Modo numérico
- Usando 4 dígitos (el 1º para permisos
especiales) - valor 4 SUID
- valor 2 SGID
- valor 6 SUID y SGID
14Mantenimiento de los permisos SUID/SGID
- Para localizarlos
- find / -perm 6000 -follow
- Comprobar cuáles deben permanecer
- Guardar la lista
- find / -perm 6000 -follow gt /dev/splist
- chmod go-rwx /etc/splist
- Programar este script
- for BINFILE in (find / -perm 6000 -follow) do
- if "(grep BINFILE /etc/splist)" "" then
- echo BINFILE mail -s "Problemita con
SUID/SGID!!!" root - fi
- done
- Mantener al día los binarios
15Atributos especiales para ficheros
- Existe un conjunto de propiedades extra
- dependientes del sistema de ficheros
- Modificarlos (sólo el superusuario)
- chattr -modos ficheros
- Modos
- a permite sólo añadir contenido al fichero
- i no permite modificaciones
- Para ver estas porpiedades lsattr
16Sistema de ficheros raíz de sólo lectura
- No es necesario modificar ficheros del sistema en
el uso cotidiano del sistema - Remontar como sólo lectura en tiempo de
ejecución - mount -n -o remount,ro /
- Remontar como sólo lectura en tiempo de
ejecución - mount -n -o remount,rw /
- Usar /etc/fstab para establecer el modo sólo
lectura por defecto
17Opciones para mount y fstab
- user los usuarios normales pueden montar y
desmontar - noauto no montar al inicio
- errorsN que hacer en caso de error
- continue continuar
- remount-ro remontar en modo sólo lectura
- panic system panic
- umaskN (FAT) valor de umask
- uidN (FAT) usuario N posee los ficheros
- gidN (FAT) grupo N posee los ficheros
18Extra File System Security Tools
19Existen dos tipos básicos de herramientas
- Mecanismos de Access control list (ACL), que
permiten especificar algunos permisos que no se
hayan disponibles en el tradicional sistema de
ficheros de Unix. - Herramientas para el borrado permanente, que
aseguran que los datos de los ficheros borrados
son realmente eliminados del soporte físico de
almacenamiento. - Para la seguridad y la flexibilidad ?son
necesarias.
20POSIX Access Control Lists for Linux
- El sistema de permisos de Linux Native
- Limitaciones sólo es posible especificar tres
roles (usuario propietario, grupo y resto de
usuarios) - Problema no es posible especificar permisos para
varios usuarios diferentes. - Apta para todo tipo de propósitos y usuarios pero
para sistemas en los que una mayor flexibilidad
es necesaria ? ACL
21Ejemplo
Users Groups Permissions
Juan rwx
Pepe rw-
Menganito r--
trabajadores
gandules
(otros)
22POSIX ACLs for Linux
- Paquete Conjunto de parches para el Kernel y
para las - utilidades del sist. de ficheros ext2
(http//acl.bestbits.at) - El paquete capacita al Kernel para que se
almacene una cantidad extra de metadatos para
cada fichero. Estos nuevos metadatos contienen la
información de permisos extendidos provistos por
las utilidades ACL. - Las versión de Linux con la que contamos ya
contiene este paquete -
23Componentes del paquete POSIX ACLs para Linux
- Linux Kernel source(fuente) soportado a partir
de las versiones 2.2.17 y el 2.4.0 - Extended attrs patch Extiende los atributos del
nivel de sistema de ficheros virtual en el fuente
del kernel. - ACL patch Usa los atributos adicionales
mencionados para almacenar información del access
control list. - e2fsprogs Extiende las utilidades del ext2 con
argumentos adicionales para líneas de comandos
para dar soporte a los metadatos ACL. - fileutils Extiende las utilidades de fichero GNU
de tal forma que la información de los permisos
extendidos es preservada en las operaciones de
utilidad de fichero. - ACL utilities source Para las utilidades extras
usadas para configurar la información ACL para
ficheros.
24Instalación
- Bajarse el núcleo
- Configurar el núcleo con la activación de las
opciones - CONFIG_FS_EXT_ARRT, CONFIG_FS_EXT_ARRT_USER,
- CONFIG_ETX2_TS_EXT_ARRT y CONFIG_POSIX_ACL
- Instalarlo
- Comprobar que los paquetes anteriores están
actualizados - Reboot
25Comandos (POSIX access control lists)
- setfacl usado para dar o quitar permisos en
ficheros con propiedades de access control list. - getfacl usado para mostrar permisos en ficheros
con propiedades de access control list.
26Sintaxis para el comando setfacl
- Añade o quita restricciones de access control
list a un fichero o - directorio dado.
- setfacl -m-x uuser permissions file
file... - setfacl -m-x ggroup permissions file
file... - setfacl -m-x o permissions file
file... - -m ? modifica o da permisos
- añado permiso
- elimino permisos
- -x ? quita permisos.
27Setfacl ejemplo
- setfacl -m urwx file ? read, write, execution
al user del fichero - setfacl -m grwx file ? read, write, execution
al group del fichero - setfacl -m upeperwx file ? read, write,
execution al user adicional pepe - setfacl -m ggandulesr file ? read, write,
execution al group adicional gandules - setfacl -m or file ? solo permiso de lectura a
otros users - setfacl -m upepex file ? le quito el permiso
de execution a pepe - setfacl -m ggandulesw file ? añado el permiso
de write al group gandules - setfacl -x upepe file ? quito todos los permisos
al user pepe - setfacl -x ggandules file ?quito todos los
permisos al group gandules
28Sintaxis y ejemplo para el comandogetfacl
- Muestra la lista actual de permisos de access
control list de un - fichero o lista de ficheros.
- getfacl file file...
- Ejemplo
- getfacl ficherito
- file ficherito
- ownerpepe
- groupgandules
- userrwx
- userjuanr--
- groupr--
- group trabajadoresrwx
- other---
-
29Permisos por defecto y ejemplo.
- El software ACL también permite permisos por
defecto, - funcionalmente similares a los ofrecidos por el
umask - setfacl -m-x duuser permissions dir
dir... - setfacl -m-x dggroup permissions dir
dir... - setfacl -m-x do permissions dir
dir... - Todos los ficheros que se creen dentro del
directorio dir - tendrán los permisos especificados en el comando
(herencia) - setfacl -m durw dir ? el user tendrá permisos
de read y write para todos los ficheros creados
en dir - setfacl -m dgr dir ? el grupo tendrá permiso
de read para todos los ficheros creados en dir
30Permisos Mask (temporales)
- setfacl m m permissions file
file... - Supongamos que cinco usuarios tienen permisos de
rwx sobre un fichero texasmap. Durante un tiempo
esta siendo usado en un Web site, y tú como
administrador del sistema quieres borrar todos
los permisos de escritura sobre ese fichero. Con
chmod puedes quitárselo al user y al group
propietario pero no a los users adicionales
(ACLs). Con setfactl puedes quitárselos a todos
uno a uno doblando el trabajo para volvérselos a
dar?como solución aparecen los mask permissions - setfacl m mw texasmap
- getfacl texasmap grep mask
- maskr-x
-
31Copiar ACLs entre ficheros
- Se usa el argumento -S para una especificación
ACL desde la entrada estandar. - getfacl file1 setfacl -S- file2
32Conflicto entre los tradicionales y los ACL
- Se usa un algoritmo que puede ser simplificado
con las dos - reglas siguientes
- Los permisos son chequeados de izquierda a
derecha (los permisos de usuarios prevalecen
sobre los de grupo, y los de grupo sobre los del
resto de usuarios). - Los permisos tradicionales prevalecen sobre los
ACL cuando se concede acceso, pero en el resto de
casos, los ACL prevalecen.
33Advertencias y consideraciones
- Standard kernels? Hay Kernels que no soportan
ACLs por lo que ignorarán los datos ACLs - NFS?teniendo un NFS montado, cuando exportamos un
fichero, los ACLs aplicados sobre él no se
tendrán en cuenta ya que NFS no los soporta. - Samba? Soporta los ACLs
- Backups?Muchas utilidades de backup, incluyendo
afio y tar no preservan los metadatos de ACLs. - Non-ext2 file systems Las utilidades getfacl y
setfacl no son soportados por Non-ext2 file
systems.
34Herramientas para el borrado permanente
- La mayor parte de los usuarios asumen que cuando
un fichero es borrado, lo es definitivamente
(falso ya que los datos se conservan en el
dispositivo físico de almacenamiento y ademas
puede ser posible recuperar estos datos mediante
herramientas especiales y con los conocimientos
adecuados) - Para ello surgen las herramientas para el borrado
permanente - Utilidades wipe y bcwipe (más potente)