GNU/Linux >> Tutoriales Linux >  >> Linux

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 usted o sus usuarios pueden tener dificultades para recordar exactamente dónde se almacena un archivo determinado. Ahí es donde find entra el comando. Le permite buscar archivos o directorios según varios criterios. Haré una revisión básica de find a continuación, pero el enfoque de este artículo es un poco diferente:Buscar recursos por permisos.

¿Por qué necesito buscar por permisos?

  • Auditoría de seguridad
  • Solucionar problemas de acceso de usuarios
  • Solucionar problemas de acceso a aplicaciones

Ejemplo rápido de búsqueda por nombre

Hay otros artículos sobre Habilitar Sysadmin que cubren el find comandar con eficacia. 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 según la configuración de permisos.

Modo absoluto versus modo simbólico

Recuerde que los permisos se establecen mediante el chmod dominio. El chmod El comando reconoce tanto el modo absoluto como el modo simbólico. Consulte mi artículo reciente Cómo administrar los permisos de Linux para usuarios, grupos y otros para obtener una revisión de la administración del acceso a los recursos, incluidos los dos modos. El find El comando también reconoce cualquiera de los modos, por lo que puede usar el que le resulte más natural. Para mí, ese es el modo absoluto. Debe recordar algunas cosas sobre el modo absoluto y el modo simbólico para usar de manera efectiva find -perms comando.

Modo absoluto

El modo absoluto usa valores octales para representar permisos. Los valores se enumeran en orden según el permiso que se asignará al usuario, grupo y todos los demás.

Por ejemplo:

# chmod 764 file1

Establece el usuario con 7 (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

Da los otros identidad leer y escribir a file1 .

Encuentre permisos de recursos usando el modo absoluto

La búsqueda de permisos más fundamental no utiliza parámetros adicionales. La declaración dice "buscar un recurso con estos permisos".

Por ejemplo:

# find /etc -perm 777

El comando es:Buscar en /etc directorio de recursos con el 777 nivel de acceso (rwx para todas las identidades).

El ejemplo anterior solo encuentra recursos con exactamente el permiso especificado, ni más ni menos. ¿Qué pasa si necesitas 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.

Buscar por -

El uso del - opción significa "al menos este nivel de permiso está configurado y cualquier permiso superior".

Ejemplo:

# find . -perm -644

Este ejemplo muestra todos los recursos en el directorio actual con al menos 644 permisos.

Buscar por /

El uso del / opción significa "cualquiera de los permisos enumerados está establecido".

Ejemplo:

# find . -perm /644

Este ejemplo muestra recursos con 644 o mayores permisos.

Encuentre permisos de recursos usando el modo simbólico

El modo simbólico usa el ugo símbolos (usuario, grupo, otros), rwx símbolos (leer, escribir, ejecutar) y operadores matemáticos (como + o - ) para definir permisos.

Buscar por -

El - La opción funciona igual en modo simbólico que antes en modo absoluto. Muestra recursos con "al menos este nivel de acceso".

Ejemplo:

# find -perm -u+w,g+w

Buscar por /

El / también funciona igual en modo simbólico. Muestra los recursos con "cualquier permiso enumerado".

Ejemplo:

# find -perm /u+w,g+w

Los permisos estándar de Linux son muy comunes y ahora sabe cómo buscar recursos con un nivel de acceso determinado configurado. Sin embargo, Linux también aprovecha los permisos especiales . El find El comando también puede mostrar estos permisos.

Encuentre recursos con permisos especiales configurados

Los permisos especiales de Linux establecen 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 fuera del alcance de este artículo, pero permítanme resumir rápidamente:

Eche un vistazo a este artículo para obtener más información sobre los permisos especiales.

Los permisos especiales se configuran usando un cuarto bit (más a la izquierda):

  • SUID =4
  • SGID =2
  • Pedacito adhesivo =1

Consejo :La salida de ls -l el comando mostrará una s en el campo ejecutable del usuario si SUID está configurado, un s en el campo ejecutable del grupo si SGID está configurado, y una T o t si Sticky Bit está configurado (dependiendo de si ejecutar 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 en los que se define el nivel de acceso SUID, use -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 permiso SGID definido mediante el valor octal SGID de 2 .

Por ejemplo, para buscar recursos con el SGID configurado:

# find /usr/bin -perm 2755

Buscar archivos con Sticky Bit configurado

Finalmente, puede 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

Nota :El - y / los parámetros funcionan igual con permisos especiales que con permisos estándar.

[ Otros lectores disfrutaron: Conceptos básicos de administrador de sistemas de Linux:administración de cuentas de usuario]

Ejemplos adicionales

Aquí hay algunos comandos adicionales que pueden ser útiles para mostrar permisos. Mientras escribía el artículo, no dejaba de pensar:Espera, ¿qué pasa con esto? y luego agregar ejemplos de bonificación. Así que aquí hay varios comandos adicionales para la auditoría de permisos.

Bonus 1:Use -no para negar los resultados

Puede usar el -not opción con find para especificar cualquier cosa que no coincida con los criterios dados.

El primer ejemplo muestra un find normal intento, y el segundo muestra find con -not .

# find /etc/network -perm 777

El ejemplo anterior muestra los recursos dentro de /etc/network que hacer tiene 777 permisos configurados.

# find /etc/network -not -perm 777

Este ejemplo muestra los recursos dentro de /etc/network que tienen permisos que no sean 777 configurado.

Bonificación 2:Establecer permisos usando find y chmod

Uno de los beneficios de find es que incluye una función de ejecución. Puede combinar esto con comandos de seguimiento, como xargs , rm o chmod .

# find -perm -111 -exec chmod -R 777 {} \;

En este ejemplo, el {} los caracteres representan los resultados de find comando, y el \; los caracteres representan una terminación de chmod comando.

Advertencia :Tenga cuidado de comprender exactamente cuál será el efecto de su ejecución combinada de "buscar + otros comandos". Un error tipográfico podría fácilmente find todos los archivos en /etc y luego intente eliminarlos o configurar permisos que bloqueen a los usuarios legítimos fuera de sus directorios de inicio.

Bono 3:Mostrar permisos usando ls y grep

A veces no necesita la funcionalidad avanzada de find dominio. En cambio, solo necesita una visualización rápida y fácil de permisos específicos. En ese caso, confíe en ls y grep comandos.

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 los archivos con los permisos de la Lista de control de acceso (ACL) aplicados. En ese caso, use el getfacl comando en su lugar.

Ejemplo:

# getfacl file1

Consulte Introducción a las listas de control de acceso (ACL) de Linux para obtener más información sobre las listas de control de acceso.

Resumir

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 de sistemas, puede usar esa información para asegurarse de que los recursos del servidor estén configurados de acuerdo con las políticas de seguridad de su empresa. No olvides que puedes usar el >> redirector para documentar estos permisos. Dicho documento se puede utilizar como referencia de permisos para futuras auditorías.

[ ¿Está pensando en la seguridad? Consulte esta guía gratuita para impulsar la seguridad de la nube híbrida y proteger su negocio. ] 


Linux
  1. Encuentra archivos y directorios en Linux con el comando de búsqueda

  2. Búsqueda de archivos en la línea de comandos (instrucciones)

  3. Cómo encontrar archivos en CentOS 8 en la línea de comandos

  4. Cómo encontrar archivos con el comando fd en Linux

  5. ¿Cómo usar expresiones regulares con el comando de búsqueda?

Cómo usar el comando de suspensión de Linux con ejemplos

Cómo usar el comando who en Linux con ejemplos

Cómo usar el comando RPM (con ejemplos)

Cómo encontrar archivos en la línea de comandos de Ubuntu

Cómo encontrar archivos con el comando fd en Linux

Cómo encontrar archivos con docenas de criterios con el comando Bash Find

    Permiso especial Descripción
    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)
    Broca adhesiva El archivo se carga en la memoria automáticamente y nadie más que el propietario no puede eliminarlo ni modificarlo