Una vez analizados los ficheros ocultos, es hora de verificar la existencia de ficheros con sticky bit. Echemos un ojo a la Wikipedia para comprender en qué consiste el concepto de sticky bit:
Wikipedia: El sticky bit es un permiso de acceso que puede ser asignado a ficheros y directorios en sistemas Unix.
Históricamente, el sticky bit se utilizaba en ficheros ejecutables. Cuando se asignaba, le indicaba al sistema operativo (SO) que mantuviera el programa en memoria para ejecuciones posteriores (incluso de otros usuarios). Desde entonces el rendimiento de las tecnologías de almacenamiento persistente han mejorado mucho y este uso ha quedado obsoleto.
Hoy en día, el sticky bit se utiliza con directorios. Cuando se le asigna a un directorio, significa que los elementos que hay en ese directorio sólo pueden ser renombrados o borrados por el propietario del elemento, el propietario del directorio o el usuario root, aunque el resto de usuarios tenga permisos de escritura.
El sticky bit está a menudo configurado para el directorio /tmp.
En un sistema UNIX, el formato tradicional de los permisos es una representación numérica que todos conocemos, y que varía entre 000 y 777. De esta representación nacen los permisos 644, 755, 777, etc, que definirán, para el propietario, grupo y otros, quien puede leer, escribir y/o ejecutar un fichero o directorio determinado.
En UNIX existe un formato especial para permisos igualmente especiales. En este caso, hablamos de un abanico que empieza en 0000 y se extiende a 7777, existiendo en ese abanico tres representaciones que nos interesan de una manera bastante significativa:
- 1000 -> Ficheros con sticky bit
- 2000 -> Ficheros con bit setgid
- 4000 -> Ficheros con bit setuid
Para conocer los ficheros con sticky bit, lanzaremos por consola una orden que bucee en el sistema y nos localice, con detalles, aquellos ficheros con permisos 1000:
/usr/bin/find / -perm -1000 -exec ls -la {} \;
Como siempre, es recomendable llevarse los resultados a fichero, por las mismas razones expuestas en el capítulo anterior sobre ficheros ocultos:
/usr/bin/find / -perm -1000 -exec ls -la {} \; >>sample_sitckybit.txt
Ejemplo práctico
Extraemos los ficheros con sticky bit de nuestro sistema objetivo. En nuestro caso, es una instalacion por defecto Solaris 10. Los resultados se pueden descargar aquí. También he preparado una salida en un sistema Ubuntu, con lo que podéis bajarla igualmente y ver las diferencias entre ambas instalaciones por defecto. En el caso de Solaris:
total 14
drwxrwxrwt 3 root mail 512 dic 22 10:17 .
drwxr-xr-x 44 root sys 1024 dic 22 10:02 ..
drwxrwxr-x 2 root mail 512 dic 21 17:22 :saved
-rw-rw—- 1 root mail 3086 dic 22 10:17 root
total 4
drwxrwxrwt 2 root bin 512 dic 21 17:22 .
drwxr-xr-x 44 root sys 1024 dic 22 10:02 ..
total 16
drwxrwxrwt 2 root root 186 ene 12 08:27 .
drwxr-xr-x 8 root sys 1252 ene 12 08:28 ..
Drw-r–r– 1 root root 0 ene 12 08:27 rpc_100169.1
total 4
drwxrwxrwt 2 root bin 512 dic 21 17:24 .
drwxr-xr-x 12 root bin 512 dic 21 17:55 ..
total 4
drwxrwxrwt 2 uucp uucp 512 dic 21 17:45 .
drwxr-xr-x 12 root bin 512 dic 21 17:55 ..
total 4
drwxrwxrwt 2 root bin 512 dic 21 17:52 .
drwxr-xr-x 12 root bin 512 dic 21 17:55 ..
total 14
drwxrwxrwt 4 root sys 512 ene 12 08:27 .
drwxr-xr-x 44 root sys 1024 dic 22 10:02 ..
-rw-r–r– 1 root root 162 ene 15 10:16 brerr
-rw-r–r– 1 root root 274 ene 15 10:16 brlog
drwx—— 3 root root 512 ene 15 10:17 gconfd-root
drwx—— 2 root root 512 ene 15 10:17 orbit-root
-rw——- 1 root root 216 ene 12 08:28 wscon-:0-L.aW7a
total 6
drwxrwxrwt 3 root sys 512 dic 21 17:27 .
drwxr-xr-x 3 root sys 512 dic 21 17:27 ..
drwx—— 2 root sys 512 dic 21 17:27 root
total 10
drwxrwxrwt 2 root root 512 dic 21 17:27 .
drwxr-xr-x 3 root root 512 dic 21 17:27 ..
-rw-r–r– 1 root root 146 dic 21 2001 Disabled
-rw-r–r– 1 root root 122 dic 21 2001 Minimal
-rw-r–r– 1 root root 90 dic 21 2001 Standard
total 6
drwxrwxrwt 3 root root 512 ene 15 10:16 .
drwxr-xr-x 6 root root 512 ene 12 08:27 ..
drwxr-xr-x 2 root root 512 ene 15 10:16 root-unknown-0
total 4
drwxrwxrwt 2 root sys 512 dic 21 17:40 .
drwxr-xr-x 3 root sys 512 dic 21 17:40 ..
total 786
drwxrwxrwt 6 root sys 1472 ene 15 11:06 .
drwxr-xr-x 32 root root 1024 ene 15 10:21 ..
drwxrwxrwx 2 root root 184 ene 15 10:16 .removable
-r–r–r– 1 root root 11 ene 12 08:27 .X0-lock
drwxrwxrwt 2 root root 176 ene 12 08:27 .X11-pipe
drwxrwxrwt 2 root root 176 ene 12 08:27 .X11-unix
-rw-r–r– 1 root root 222 ene 12 08:26 breg_business_logic_20070112082656168.log
-rw-r–r– 1 root root 180 ene 15 10:16 breg_business_logic_20070115101659715.log
-rw——- 1 root root 318760 ene 15 10:16 dtdbcache_:0
drwxr-xr-x 2 root root 117 ene 15 10:16 hsperfdata_root
-rw-r–r– 1 root root 251 ene 15 10:17 rootswup.trc
-rw-r–r– 1 root root 0 ene 15 10:17 sdtvolcheck1290
-rw——- 1 root root 49 ene 15 10:17 sh1380.2
-rw——- 1 root root 50 ene 15 10:17 sh1380.3
-rw——- 1 root root 49 ene 15 10:17 sh1500.2
-rw——- 1 root root 50 ene 15 10:17 sh1500.3
-rw-r–r– 1 root root 5 ene 15 10:16 speckeysd.lock
total 16
drwxrwxrwt 2 root root 176 ene 12 08:27 .
drwxrwxrwt 6 root sys 1472 ene 15 11:06 ..
srwxrwxrwx 1 root root 0 ene 12 08:27 X0
total 16
drwxrwxrwt 2 root root 176 ene 12 08:27 .
drwxrwxrwt 6 root sys 1472 ene 15 11:06 ..
prw-rw-rw- 1 root root 0 ene 12 08:27 X0
Resumen
Los ficheros con sticky bit implican una medida de protección adicional para directorios y ficheros, ya que independientemente de sus permisos propios, en los ficheros contenidos en un directorio con permisos sticky bit sólo podrán realizar operaciones el propietario del fichero, el del directorio o el root.
El proceso de auditoría se centrará en la localización de ficheros y directorios con sticky bit, con el fin de comprobar que las asignaciones son las adecuadas, y que se emplean los bits de permanencia para dotar de una protección adicional a aquellos directorios que lo requieran. Se investigará si existen asignaciones supérfluas, y se informará de las mismas.
Hola que tal
Siempre he tenido dudas con respecto al alcance de la auditoria cuando se trata del sistema operativo, base de datos, en la que ya existe el administrador de DBA, o el de seguridad.
En este caso el auditor deberá ejecutar estos pasos, o es con el administrador que los realice para que el auditor tome estos datos. Mi inquietud es más porque se necesitan permisos de root o administrador para poder obtener datos a carpetas que solamente pueden entrar un administrador (por ejemplo cuando se trata del find)
Gracias
(y sigo fielmente cada uno de tus artículos, que son verdaderamente útiles)
Hildebrando,
Cualquiera de los métodos vale. De todos modos es mucho más aséptico y recomendable que el auditor no posea credenciales en las máquinas, y que se limite a solicitar la información, para así no dejar lugar a la sospecha de que el auditor pueda manipular.
Eso sí, pedir la información es sentarse al lado del auditado y pedir que en el momento, nos la proporcione. Y que la firme para evitar su manipulación, a ser posible.
Un saludo ;)