Restringir el acceso de los usuarios para que solo lean desde /proc

Restringir el acceso de los usuarios para que solo lean desde /proc

Como método para configurar algunos sistemas básicos de monitoreo, tengo un script configurado en SSH y ejecuto algunos comandos básicos de shell, leyendo algunos archivos en formato /proc. Me gustaría crear una cuenta de usuario específica para esta tarea y debería tener el siguiente acceso:

  • SSH
  • Intento
  • Sólo lectura en/proc

Otras publicaciones han mencionado rssh o Chroot, pero ¿son estos los mejores métodos? Me parece que debería haber una manera de crear un usuario sin permisos y solo agregar lo que sea necesario, aplicando mis restricciones a nivel del sistema de archivos en lugar de SSH. es posible?

Todos los sistemas que quiero monitorear en este momento ejecutan Ubuntu, pero no me gustaría limitarme a ninguna distribución en particular.

Respuesta1

En primer lugar, los permisos. Cuando crea una nueva cuenta ( adduseral menos en sistemas basados ​​en Debian; otras pueden ser ligeramente diferentes), obtiene un nuevo usuario y un nuevo grupo con el mismo nombre. También obtiene un directorio de inicio para el usuario. Este nuevo usuario tendrá permisos de lectura/escritura de usuario y grupo en su directorio de inicio. También podrán acceder a cualquier cosa designada como legible en todo el mundo y modificar cualquier cosa que sea escribible en todo el mundo.

Hasta donde yo sé, no es posible específicamenteexcluirun usuario o grupo con permisos de lectura/escritura mundial utilizando el sistema de permisos POSIX tradicional. Túpodersin embargo, habilite las ACL más avanzadas (muy parecidas al NTFS de Windows, si está familiarizado con él), que le permiten establecer permisos de denegación específicos.


Un método alternativo es establecer unshell de inicio de sesión personalizado, usando el chshcomando o modificando /etc/passwd. Cuando inician sesión, este 'shell' se ejecutará con la entrada del usuario redirigida como entrada estándar y su salida/error estándar redirigida a la salida del terminal. Puedes configurar este 'shell' para que seacualquierejecutable en el sistema, incluido (pero no limitado a) su propio programa C, script bash/python/perl, etc.

Hay algunas formas de hacer esto. Puede configurar el shell de inicio de sesión para que sea un script que simplemente genere los datos que desee y no reciba ninguna entrada. Simplemente genera los datos y sale, cerrando la sesión SSH. Esta es la forma más segura, aunque no tan flexible.

Alternativamente, puede hacer que un script tome alguna entrada y la use para determinar qué imprimir. La forma de hacer esto depende de usted: si usa un bashscript, puede usarlo readjunto con una casedeclaración o una serie de ifdeclaraciones. Sin embargo, debe tener cuidado de no ejecutar ningún comando no saneado directamente del usuario, y existen otros posibles problemas de seguridad al recibir entradas que no son de confianza. Por ejemplo, puede tomar la entrada processesy devolver la salida de ps -e.

Si lo desea y es bueno con C, incluso podría modificarlo bashpara no poder acceder a ningún otro directorio, pero es mucho más seguro no recibir información o filtrar solo comandos específicos incluidos en la lista blanca, en lugar de intentar restringir qué directorios. Puedes entrar. También es más fácil escribir un script de shell rápido que modificar un programa complejo en C.

Respuesta2

Para aplicar el modo de solo lectura en /proc, puede acceder a un clon de solo lectura sshfs de /proc.

información relacionada