Turno de analizar los ficheros con bit setgid y setuid.
Tal y como hemos visto en el capítulo 10 de esta serie, en los derivados de UNIX existe un formato especial para permisos igualmente especiales. Los ficheros con bit setgid se caracterizan por la representación numérica 2000, mientras que los setuid emplean el 4000, dentro de ese abanico especial de permisos que va desde el 0000 al 7777. Al igual que en el caso del sticky bit, serán objeto de nuestro análisis.
Definamos cada situación:
El bit SUID o setuid activado sobre un fichero indica que todo aquél que ejecute el archivo va a tener durante la ejecución los mismos privilegios que quién lo creó; dicho de otra forma, si el administrador crea un fichero y lo setuida, todo aquel usuario que lo ejecute va a disponer, hasta que el programa finalice, de un nivel de privilegio total en el sistema.
Todo lo que acabamos de comentar con respecto al bit setuid es aplicable al bit setgid pero a nivel de grupo del fichero en lugar de propietario: en lugar de trabajar con el EUID del propietario, todo usuario que ejecute un programa setgidado tendrá los privilegios del grupo al que pertenece el archivo. Para activar el bit de setgid sumaremos 2000 a la representación octal del permiso del fichero y además habremos de darle permiso de ejecución a la terna de grupo; si lo hacemos, la s o S aparecerá en lugar de la x en esta terna. Si el fichero es un directorio y no un archivo plano, el bit setgid afecta a los ficheros y subdirectorios que se creen en él: estos tendrán como grupo propietario al mismo que el directorio setgidado, siempre que el proceso que los cree pertenezca a dicho grupo.
Después de leer estas definiciones, poco formales pero muy explictivas, huelgan comentarios del porqué de la necesidad de analizar los ficheros con bits setuid y setgid, así como las implicaciones que sobre la seguridad del sistema que derivan de la aplicación de ambos bit. En ambos casos, se trata de que existan los mínimos ficheros con bit setuid o setgid presentes en el sistema, y aquellos que estén marcados con este tipo de bit, deben estar sobradamente justificados.
Ejemplo práctico
Como siempre identificamos nuestro sistema. Hoy emplearemos una distribución Slackware:
Linux slackware 2.6.16 #95 Wed May 17 10:16:21 GMT 2006 i686 pentium4 i386 GNU/Linux
Obtenemos en primer lugar los ficheros con bit setgid:
/usr/bin/find / -perm -2000 -exec ls -la {} \; >>sample_setgid.txt
En este caso, no tenemos resultados. Obtenemos ficheros con bit setuid:
/usr/bin/find / -perm -4000 -exec ls -la {} \; >>sample_setuid.txt
En este caso sí hay resultados:
#Ficheros con bit setuid en instalacion por defecto Slackware
#uname -a: Linux slackware 2.6.16 #95 Wed May 17 10:16:21 GMT 2006 i686 pentium4 i386 GNU/Linux
#Sergio Hernando – http://www.sahw.com/wp-rwsr-xr-x 1 root root 540024 Oct 6 20:12
/mnt/live/memory/images/07_kde_apps.mo/opt/kde/bin/kppp
-rwsr-xr-x 1 lp sys 9144 Feb 3 2006
/mnt/live/memory/images/05_common.mo/usr/bin/lppasswd
-rws–x–x 1 root bin 16100 Mar 3 2003
/mnt/live/memory/images/05_common.mo/usr/bin/traceroute
-rws–x–x 1 root root 1839196 May 2 2006
/mnt/live/memory/images/03_xwindow.mo/usr/X11R6/bin/Xorg
-rwsr-xr-x 1 lp sys 9144 Feb 3 2006 /usr/bin/lppasswd
-rws–x–x 1 root bin 16100 Mar 3 2003 /usr/bin/traceroute
-rws–x–x 1 root root 1839196 May 2 2006 /usr/X11R6/bin/Xorg
-rwsr-xr-x 1 root root 540024 Oct 6 20:12 /opt/kde/bin/kppp
-rwsr-xr-x 1 root root 540024 Oct 6 20:12
/mnt/live/memory/images/07_kde_apps.mo/opt/kde/bin/kppp
-rwsr-xr-x 1 lp sys 9144 Feb 3 2006
/mnt/live/memory/images/05_common.mo/usr/bin/lppasswd
-rws–x–x 1 root bin 16100 Mar 3 2003
/mnt/live/memory/images/05_common.mo/usr/bin/traceroute
-rws–x–x 1 root root 1839196 May 2 2006
/mnt/live/memory/images/03_xwindow.mo/usr/X11R6/bin/Xorg
-rwsr-xr-x 1 lp sys 9144 Feb 3 2006 /usr/bin/lppasswd
-rws–x–x 1 root bin 16100 Mar 3 2003 /usr/bin/traceroute
-rws–x–x 1 root root 1839196 May 2 2006 /usr/X11R6/bin/Xorg
-rwsr-xr-x 1 root root 540024 Oct 6 20:12 /opt/kde/bin/kppp
Resumen
Los bit setuid y setgid representan un grado de privilegio adicional que debe ser estudiado. Para ello, extraeremos la información a ficheros y contrastaremos que su aplicación responde a necesidad de funcionamiento del sistema y los aplicativos que sobre él corren. Trataremos de optimizar su presencia, reduciendo a la cantidad mínima su aplicación, y justificando en todo momento el porqué de su utilización.
Felicitaciones.
La documentacion que tienes para realizar una auditoria unix esta muy clara y precisa.
Yo no soy auditor, pero si cumplo con el rol de Administrador Unix y me gustaria si tienen formularios prediseñados para el manejo de la toma de datos y el registro de las evidencias o hallasgos que uno quiera docuementar.
Gracias.