Cómo auditar permisos con el comando de búsqueda

Seamos realistas: el sistema de archivos de Linux puede ser complejo. Agregue sistemas de archivos remotos montados, medios extraíbles y cualquier directorio específico del servidor que haya creado, y es posible que usted o sus usuarios tengan dificultades para recordar exactamente dónde se almacena un archivo determinado. Aquí es donde el find
Llega el pedido. Le permite buscar archivos o directorios según varios criterios. Haré un examen básico de find
a continuación, pero el enfoque de este artículo es un poco diferente: Buscar recursos por permisos.
¿Por qué tengo que buscar por permisos?
- Auditoría de seguridad
- Resolver quejas de acceso de usuarios
- Solucionar problemas de acceso a la aplicación
Ejemplo rápido de búsqueda por nombre
Hay otros artículos sobre Habilitar Sysadmin que cubren el find
ordenar eficientemente. Sin embargo, resumiré rápidamente el comando aquí.
Sintaxis:
find (where to search) (what to search for)
Ejemplo:
# find /etc -name rsyslog
# find /home/user01 -type d
Sin embargo, este artículo se centra en el uso de -perm
opción, que busca en función de la configuración de permisos.
Modo absoluto versus modo simbólico
Recuerde que los permisos se configuran mediante el chmod
pedido. el chmod
El comando reconoce tanto el modo absoluto como el modo simbólico. Ver mi artículo reciente Cómo administrar los permisos de Linux para usuarios, grupos y más para una revisión de la gestión del acceso a los recursos, incluyendo las dos modalidades. el find
El comando también reconoce uno u otro modo, por lo que puede usar el que le resulte más natural. Para mí, este es el modo absoluto. Tienes que recordar algunos elementos sobre el modo absoluto y el modo simbólico para usar efectivamente el find -perms
pedido.
modo absoluto
El modo absoluto usa valores octales para representar permisos. Los valores se enumeran en el orden del permiso que se asignará al usuario, grupo y todos los demás.
Por ejemplo:
# chmod 764 file1
Define el usuario con siete (rwx), grupo con 6 (rw), y otros con 4 (r) para file1
.
Modo simbólico
El modo simbólico utiliza símbolos para representar los niveles de acceso y utiliza operadores matemáticos para dar (+) o eliminar (-) permisos.
Por ejemplo:
# chmod o+rw file1
Dado el otros identidad leer y escribir en file1
.
Encuentre permisos de recursos usando el modo absoluto
La búsqueda de permisos más básica no utiliza ningún parámetro adicional. La declaración dice "buscar un recurso con estos permisos".
Por ejemplo:
# find /etc -perm 777
El comando es: Encuentra el /etc
directorio de recursos con el 777 nivel de acceso (rwx para todas las identidades).
El ejemplo anterior solo encuentra recursos con el permiso exacto especificado, ni más ni menos. ¿Qué pasaría si necesitaras un poco más de flexibilidad? Hay dos parámetros adicionales que pueden ser muy útiles. El primero es el -
carácter (guión), y el segundo es el /
carácter (barra oblicua). Veamos ambos.
Búsqueda por -
El uso de -
La opción significa que "al menos este nivel de permiso está establecido, así como todos los permisos superiores".
Ejemplo:
# find . -perm -644
Este ejemplo muestra todos los recursos en el directorio actual con al menos 644 permisos
Búsqueda por /
El uso de /
La opción significa "todos los permisos enumerados están establecidos".
Ejemplo:
# find . -perm /644
Este ejemplo muestra recursos con 644 o permisos superiores.
Encuentre permisos de recursos usando el modo simbólico
El modo simbólico utiliza el ugo símbolos (usuario, grupo, otros), rwx símbolos (leer, escribir, ejecutar) y operadores matemáticos (como + Donde -) para establecer los permisos.
Búsqueda por -
el -
La opción funciona igual en modo simbólico que en modo absoluto. Muestra recursos con "al menos este nivel de acceso".
Ejemplo:
# find -perm -u+w,g+w
Búsqueda por /
el /
también funciona igual en modo simbólico. Muestra los recursos con "todos los permisos enumerados".
Ejemplo:
# find -perm /u+w,g+w
Los permisos estándar de Linux son muy comunes y ahora sabe cómo encontrar recursos con un nivel de acceso determinado configurado. Sin embargo, Linux también se aprovecha. el find
El comando también puede mostrar estos permisos.
Encuentre recursos con permisos especiales configurados
Los permisos especiales de Linux definen controles de acceso adicionales a los recursos. Hay tres permisos especiales: Establecer ID de usuario (SUID), Establecer ID de grupo (SGID) y Sticky Bit. Los detalles de cada uno están más allá del alcance de este artículo, pero permítanme resumir rápidamente:
autorización especial | La descripcion |
SUID | Un archivo es ejecutado por un usuario con la identidad del propietario, incluso si ese usuario no es el propietario |
SGID | El contenido de un directorio hereda automáticamente la asociación de grupo de la carpeta principal (ideal para directorios compartidos por equipos de proyecto) |
poco pegajoso | El archivo se carga automáticamente en la memoria y nadie más que el propietario no puede eliminarlo ni editarlo. |
Consulte este artículo para obtener más información sobre permisos especiales.
Los permisos especiales se configuran usando un cuarto bit (más a la izquierda):
- SUID = 4
- SGID = 2
- Pedacito pegajoso = 1
Punto: La salida de ls -l
comando mostrará un s en el campo ejecutable del usuario si SUID está configurado, un s en el campo ejecutable del grupo si SGID está configurado, y un T Donde t si Sticky Bit está configurado (dependiendo de si el tiempo de ejecución también está configurado).
El siguiente contenido cubre la búsqueda de archivos con permisos especiales específicos configurados.
Buscar archivos con SUID configurado
Para buscar archivos donde se establece el nivel de acceso SUID, utilice el -perm
opción pero incluye el cuarto dígito. SUID tiene un valor octal de 4.
Por ejemplo, para buscar recursos con el SUID configurado:
# find /usr/bin -perm 4755
Buscar archivos con SGID configurado
Puede usar la misma sintaxis para mostrar recursos con el conjunto de permisos SGID usando el valor octal SGID de 2.
Por ejemplo, para buscar recursos con el SGID configurado:
# find /usr/bin -perm 2755
Encuentra archivos con Sticky Bit configurado
Finalmente, puedes usar el valor octal de 1 para mostrar los recursos con el Sticky Bit configurado.
Aquí hay un ejemplo de Sticky Bit:
# find /etc -perm /1444
Notar: El -
y /
la configuración funciona igual con permisos especiales que con permisos estándar.
Ejemplos de bonos
Aquí hay algunos comandos adicionales que pueden ser útiles para ver los permisos. Mientras escribía el artículo, seguí pensando y luego agregando ejemplos adicionales. Así que aquí hay varios comandos adicionales para auditar permisos.
Bonificación 1: use -no para cancelar resultados
Puedes usar el -not
opción con find
para especificar cualquier cosa que no coincida con los criterios dados.
El primer ejemplo muestra una normal find
intento, y el segundo muestra find
con -not
.
# find /etc/network -perm 777
El ejemplo anterior muestra los recursos dentro /etc/network
que tienen 777 permisos configurados.
# find /etc/network -not -perm 777
Este ejemplo muestra los recursos dentro /etc/network
que tienen permisos 777 configurado.
Bonificación 2: Establecer permisos usando find y chmod
Una de las ventajas de find
es que incluye una función de ejecución. Puede combinar esto con comandos de seguimiento, como xargs
, rm
, Donde chmod
.
# find -perm -111 -exec chmod -R 777 {} ;
En este ejemplo, el {}
los caracteres representan los resultados de la find
orden, y el ;
los personajes representan un final de la chmod
pedido.
Advertencia: Asegúrese de comprender cuál será el efecto de la ejecución combinada de "buscar + otros comandos". Un error tipográfico podría fácilmente find
todos los archivos en /etc
luego intente eliminarlos o establecer permisos que bloqueen a los usuarios legítimos de sus directorios de inicio.
Bono 3: Mostrar permisos usando ls y grep
A veces no necesita las características avanzadas del find
pedido. En cambio, solo necesita una vista rápida y fácil de los permisos específicos. En este caso, confíe en el ls
y grep
pedidos.
Ejemplo:
# ls -l | grep rwxrw-r--
Este comando muestra todo el contenido del directorio con los permisos especificados.
Bonificación 4: Mostrar permisos de ACL
el find
El comando no muestra fácilmente archivos con permisos de Lista de control de acceso (ACL) aplicados. En este caso, utilice el getfacl
comando en su lugar.
Ejemplo:
# getfacl file1
Conclusión
el find
El comando es una utilidad útil para mostrar directorios o archivos que necesita ubicar. Sin embargo, find también puede ser una gran herramienta de seguridad porque muestra directorios y archivos con permisos específicos. Como administrador del sistema, puede usar esta información para asegurarse de que los recursos del servidor estén configurados de acuerdo con las políticas de seguridad de su organización. Recuerda que puedes utilizar el >>
redirector para documentar estos permisos. Dicho documento puede utilizarse como base de autorización para futuras auditorías.
Artículos de interés