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
Índice

    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 especialLa descripcion
    SUIDUn archivo es ejecutado por un usuario con la identidad del propietario, incluso si ese usuario no es el propietario
    SGIDEl 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 pegajosoEl 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

    Subir