Como explicamos en el post anterior, es posible establecer que un programa se ejecute con los privilegios del usuario dueño (generalmente root) o del grupo propietario del mismo mediante el uso de SUID o SGID, respectivamente. Esto nos permite que dicho programa corra con permisos elevados. En esta oportunidad veremos ejemplos concretos para fijar los conceptos que compartimos anteriormente.
Permisos elevados
Como mencionamos, en teoría solamente el archivo /usr/bin/passwd debe contar con el permiso de SUID, aunque también es probable que existan otros basados en el software que tengamos instalado en nuestro equipo (dicho sea de paso, otro binario que generalmente posee el bit SUID es at (/usr/bin/at). Además de estos dos ejemplos, el binario correspondiente al sistema gráfico X también posee dicho permiso (por razones obvias, todos los usuarios deben poder iniciar sesión en un entorno gráfico).
Podemos ver todos los casos anteriores, incluyendo permisos, en la Fig. 1:
Es importante notar que aunque at posea el permiso SUID, es posible impedir que ciertos usuarios tengan acceso al archivo binario como explicamos en una ocasión anterior.
Búsqueda de archivos con permisos elevados
Como administradores del sistema, nos interesará identificar todos los archivos que cuenten con los permisos de SUID o SGID, y restringir los mismos al mínimo necesario. Una vez identificados, podremos proceder a removerlos o cambiar sus permisos a otros menos potencialmente peligrosos para la integridad del sistema.
Para realizar esta tarea podemos valernos del uso de find y de la posibilidad de utilizar los permisos de un archivo como criterio de búsqueda. Los siguientes dos ejemplos permiten encontrar todos los archivos que cuentan con cualquiera de los dos permisos especiales.
find /usr/bin -type f -perm -u+s find /usr/bin -type f -perm -g+s
Por supuesto, podemos cambiar el directorio donde deseamos comenzar la búsqueda, aunque para ilustrar nosotros decidimos buscar dentro /usr/bin como observamos en la Fig. 2:
Espero que este post les haya resultado de utilidad. ¡Hasta la próxima!