Seguridad en el sistema de ficheros Argelia Martn

  • Slides: 34
Download presentation
Seguridad en el sistema de ficheros Argelia Martín, Adrián Macias Casado 1

Seguridad en el sistema de ficheros Argelia Martín, Adrián Macias Casado 1

Permisos y Propiedad n Permisos: n Dos grupos de propiedades (propiedad y derechos de

Permisos y Propiedad n Permisos: n Dos grupos de propiedades (propiedad y derechos de acceso) por cada fichero n Almacenados en disco Igual mecanismo para muchos dispositivos (que son ficheros) Propiedad: n n n Todo fichero tiene un usuario y un grupo asociado 2

Derechos de acceso (I) n Rwxrwxrwx n n Posiciones 2 -4: permisos para el

Derechos de acceso (I) n Rwxrwxrwx n n 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 n n d --> el fichero es un directorio b --> dispositivo de bloque c --> dispositivo de tipo carácter "-" --> fichero normal 3

Derechos de acceso (II) n Ficheros n Lectura n n Escritura n n Primer

Derechos de acceso (II) n Ficheros n Lectura n n Escritura n n Primer carácter de de cada rango (caracteres 2, 5, 8) Segundo carácter de de cada rango (caracteres 3, 6, 9) Ejecución n Tercer carácter de de cada rango (caracteres 4, 7, 10) 4

Derechos de acceso (III) n Directorios: n n Significado algo distinto que con los

Derechos de acceso (III) n Directorios: n n Significado algo distinto que con los fichero Lectura n n Escritura n n Permiso para listar el contenido Permiso para crear o borrar ficheros del directorio Ejecución n Permiso para hacerlo el directorio actual y ejecutar ficheros 5

Modificación de los permisos n n Sólo el propietario puede cambiar los permisos, incluso

Modificación de los permisos n n 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: n n Simbólico Numérico 6

Chmod (modo simbólico) n chmod [ugoa] (+|-|=) [rwx] ficheros n n n u: usuario

Chmod (modo simbólico) n chmod [ugoa] (+|-|=) [rwx] ficheros n n n 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 7

Chmod (modo numérico) n chmod NNN ficheros n Especifica permisos a establecer n Cada

Chmod (modo numérico) n chmod NNN ficheros n Especifica permisos a establecer n Cada N afecta a: n n usuario propietario grupo propietario resto de usuarios Se usa nomenclatura octal (0 -7) 8

umask (permisos por defecto) n n umask determina los permisos por defecto (asignados a

umask (permisos por defecto) n n umask determina los permisos por defecto (asignados a los nuevos ficheros) Usa nomenclatura inversa a chmod (un 1 en umask es un 0 chmod) n n Para cambiarlo ejecutar al cargar un terminal: n n ej: umask 137 = chmod 640 echo 'umask 137' >> ~/. profile Para que afecte a nuevos usuarios: n echo 'umask 137' >> /etc/skel/. bashrc 9

Casos especiales, riesgos y soluciones (I) n Permisos extra para los directorios n Sticky

Casos especiales, riesgos y soluciones (I) n Permisos extra para los directorios n Sticky bit n n Se aplica para el resto de usuarios Crea la situación para el resto de usuarios: n n n Pueden crear propios ficheros (y borrarlos) Ficheros de otros usuarios permanecen chmod o+t directorio Aparece una t en lugar de la x de resto de usuarios SGID para directorios n Los ficheros creados tendrán ese grupo 10

Casos especiales, riesgos y soluciones (II) n Ficheros de dispositivo n A tener especialmente

Casos especiales, riesgos y soluciones (II) n Ficheros de dispositivo n A tener especialmente en cuenta: n n n 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 a+rw /dev/null /dev/zero /dev/random 11

Ejecutables SUID/SGID n n Los procesos tienen un usuario y grupo (el del que

Ejecutables SUID/SGID n n Los procesos tienen un usuario y grupo (el del que lo ejecuta) n 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 12

Establecer SUID/SGID n Modo simbólico: n n Usando chmod, con s en vez de

Establecer SUID/SGID n Modo simbólico: n n Usando chmod, con s en vez de x Modo numérico: n Usando 4 dígitos (el 1º para permisos especiales): n n n valor 4: SUID valor 2: SGID valor 6: SUID y SGID 13

Mantenimiento de los permisos SUID/SGID n Para localizarlos: n n find / -perm +6000

Mantenimiento de los permisos SUID/SGID n Para localizarlos: n n find / -perm +6000 -follow Comprobar cuáles deben permanecer n Guardar la lista: n n n find / -perm +6000 -follow > /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 n Mantener al día los binarios 14

Atributos especiales para ficheros n Existe un conjunto de propiedades extra n n dependientes

Atributos especiales para ficheros n Existe un conjunto de propiedades extra n n dependientes del sistema de ficheros Modificarlos (sólo el superusuario): n n chattr [+|-|=]modos ficheros Modos: n n n a: permite sólo añadir contenido al fichero i: no permite modificaciones Para ver estas porpiedades: lsattr 15

Sistema de ficheros raíz de sólo lectura n n No es necesario modificar ficheros

Sistema de ficheros raíz de sólo lectura n n No es necesario modificar ficheros del sistema en el uso cotidiano del sistema Remontar como sólo lectura en tiempo de ejecución: n n mount -n -o remount, ro / mount -n -o remount, rw / Usar /etc/fstab para establecer el modo sólo lectura por defecto 16

Opciones para mount y fstab n n n user: los usuarios normales pueden montar

Opciones para mount y fstab n n n user: los usuarios normales pueden montar y desmontar noauto: no montar al inicio errors=N que hacer en caso de error n n n continue: continuar remount-ro: remontar en modo sólo lectura panic: system panic umask=N (FAT): valor de umask uid=N (FAT): usuario N posee los ficheros gid=N (FAT): grupo N posee los ficheros 17

Extra File System Security Tools 18

Extra File System Security Tools 18

Existen dos tipos básicos de herramientas: n n Mecanismos de “Access control list” (ACL),

Existen dos tipos básicos de herramientas: n n 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. 19

POSIX Access Control Lists for Linux El sistema de permisos de Linux Native: n

POSIX Access Control Lists for Linux El sistema de permisos de Linux Native: n n 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 20

Ejemplo: Users Groups Permissions Juan rwx Pepe rw- Menganito r-trabajadores gandules (otros) 21

Ejemplo: Users Groups Permissions Juan rwx Pepe rw- Menganito r-trabajadores gandules (otros) 21

POSIX ACLs for Linux Paquete: Conjunto de parches para el Kernel y para las

POSIX ACLs for Linux Paquete: Conjunto de parches para el Kernel y para las utilidades del sist. de ficheros ext 2 (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 22

Componentes del paquete POSIX ACLs para Linux : n n n Linux Kernel source(fuente):

Componentes del paquete POSIX ACLs para Linux : n n n 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. e 2 fsprogs : Extiende las utilidades del ext 2 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. 23

Instalación: n n Bajarse el núcleo Configurar el núcleo con la activación de las

Instalación: n 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_ETX 2_TS_EXT_ARRT y CONFIG_POSIX_ACL n n n Instalarlo Comprobar que los paquetes anteriores están actualizados Reboot 24

Comandos (POSIX access control lists) n n setfacl: usado para dar o quitar permisos

Comandos (POSIX access control lists) n n 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. 25

Sintaxis para el comando “setfacl” Añade o quita restricciones de access control list a

Sintaxis para el comando “setfacl” Añade o quita restricciones de access control list a un fichero o directorio dado. n n n setfacl [-m|-x] u: [user]: [+|^] permissions file [file. . . ] setfacl [-m|-x] g: [group]: [+|^] permissions file [file. . . ] setfacl [-m|-x] o: [+|^] permissions file [file. . . ] -m modifica o da permisos +: añado permiso ^: elimino permisos -x quita permisos. 26

Setfacl: ejemplo n n n n n setfacl -m u: : rwx file read,

Setfacl: ejemplo n n n n n setfacl -m u: : rwx file read, write, execution al user del fichero setfacl -m g: : rwx file read, write, execution al group del fichero setfacl -m u: pepe: rwx file read, write, execution al user adicional pepe setfacl -m g: gandules: r file read, write, execution al group adicional gandules setfacl -m o: r file solo permiso de lectura a otros users setfacl -m u: pepe: ^x file le quito el permiso de execution a pepe setfacl -m g: gandules: +w file añado el permiso de write al group gandules setfacl -x u: pepe file quito todos los permisos al user pepe setfacl -x g: gandules file quito todos los permisos al group gandules 27

Sintaxis y ejemplo para el comando“getfacl” Muestra la lista actual de permisos de access

Sintaxis y ejemplo para el comando“getfacl” Muestra la lista actual de permisos de access control list de un fichero o lista de ficheros. n getfacl file [file. . . ] Ejemplo: $ getfacl ficherito # file : ficherito # owner: pepe # group: gandules user: : rwx user: juan: r-group: trabajadores: rwx other: --- $ 28

Permisos por defecto y ejemplo. El software ACL también permite permisos por defecto, funcionalmente

Permisos por defecto y ejemplo. El software ACL también permite permisos por defecto, funcionalmente similares a los ofrecidos por el umask n n n setfacl [-m|-x] d: u: [user]: [+|^] permissions dir [dir. . . ] setfacl [-m|-x] d: g: [group]: [+|^] permissions dir [dir. . . ] setfacl [-m|-x] d: o: [+|^] permissions dir [dir. . . ] Todos los ficheros que se creen dentro del directorio dir tendrán los permisos especificados en el comando (herencia) n n setfacl -m d: u: : rw dir el user tendrá permisos de read y write para todos los ficheros creados en dir setfacl -m d: g: : r dir el grupo tendrá permiso de read para todos los ficheros creados en dir 29

Permisos Mask (temporales) setfacl –m m: [+|^] permissions file [file. . . ] Supongamos

Permisos 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 m: ^w texasmap #getfacl texasmap | grep mask: r-x # n 30

Copiar ACLs entre ficheros: n Se usa el argumento -S para una especificación ACL

Copiar ACLs entre ficheros: n Se usa el argumento -S para una especificación ACL desde la entrada estandar. getfacl file 1 | setfacl -S- file 2 31

Conflicto entre los tradicionales y los ACL Se usa un algoritmo que puede ser

Conflicto entre los tradicionales y los ACL Se usa un algoritmo que puede ser simplificado con las dos reglas siguientes: n n 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. 32

Advertencias y consideraciones n n n Standard kernels Hay Kernels que no soportan ACLs

Advertencias y consideraciones n n n 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-ext 2 file systems: Las utilidades getfacl y setfacl no son soportados por Non-ext 2 file systems. 33

Herramientas para el borrado permanente n n n La mayor parte de los usuarios

Herramientas para el borrado permanente n n n 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) 34