Seguridad en el sistema de
ficheros
Argelia Martín Martín, Adrián Macias Casado
1
Permisos 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
2
Derechos 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 --> el fichero es un directorio
b --> dispositivo de bloque
c --> dispositivo de tipo carácter
"-" --> fichero normal
3
Derechos de acceso (II)

Ficheros

Lectura


Escritura


Primer carácter de de cada rango (caracteres 2, 5, 8)
Segundo carácter de de cada rango (caracteres 3, 6, 9)
Ejecución

Tercer carácter de de cada rango (caracteres 4, 7, 10)
4
Derechos de acceso (III)

Directorios:


Significado algo distinto que con los fichero
Lectura


Escritura


Permiso para listar el contenido
Permiso para crear o borrar ficheros del directorio
Ejecución

Permiso para hacerlo el directorio actual y ejecutar ficheros
5
Modificació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
6
Chmod (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
7
Chmod (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)
8
umask (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)


Para cambiarlo ejecutar al cargar un terminal:


ej: umask 137 = chmod 640
echo 'umask 137' >> ~/.profile
Para que afecte a nuevos usuarios:

echo 'umask 137' >> /etc/skel/.bashrc
9
Casos 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 o+t directorio
Aparece una t en lugar de la x de resto de usuarios
SGID para directorios

Los ficheros creados tendrán ese grupo
10
Casos 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 a+rw /dev/null /dev/zero /dev/random
11
Ejecutables 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
12
Establecer 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
13
Mantenimiento de los permisos SUID/SGID

Para localizarlos:


find / -perm +6000 -follow
Comprobar cuáles deben permanecer

Guardar la lista:



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

Mantener al día los binarios
14
Atributos 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
15
Sistema 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:


Remontar como sólo lectura en tiempo de
ejecució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



user: los usuarios normales pueden montar y
desmontar
noauto: no montar al inicio
errors=N que hacer en caso de error






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
Existen 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.
19
POSIX 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
20
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
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
22
Componentes 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.
23
Instalació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
24
Comandos (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.
25
Sintaxis para el comando “setfacl”
Añade o quita restricciones de access control list a un fichero o
directorio dado.



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









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 control list de un
fichero o lista de ficheros.

getfacl file [file...]
Ejemplo:
$ getfacl ficherito
# file : ficherito
# owner:pepe
# group:gandules
user::rwx
user:juan:r-group::r-group: trabajadores:rwx
other:---
$
28
Permisos por defecto y ejemplo.
El software ACL también permite permisos por defecto,
funcionalmente similares a los ofrecidos por el umask



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)


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 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
mask:r-x
#

30
Copiar ACLs entre ficheros:

Se usa el argumento -S para una especificación ACL desde la
entrada estandar.
getfacl file1 | setfacl -S- file2
31
Conflicto 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.
32
Advertencias 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.
33
Herramientas 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)
34
Descargar

Extra File System Security Tools