Como administrador de Linux, ¿es uno de mis trabajos realizar algún tipo de tarea para eliminar los privilegios de root de las aplicaciones que se ejecutan en mis sistemas?
Sí. Es su trabajo asegurarse de que se haga. Si la aplicación no lo hace, debe darse cuenta de que la aplicación no lo está haciendo y hacerlo usted mismo.
¿O simplemente confío en los desarrolladores de aplicaciones para asegurarme de que han escrito su código para hacer esto?
No confíes en los desarrolladores de aplicaciones que han hecho nada. Hay muchas herramientas disponibles para un administrador de sistemas Linux para obtener los hechos de lo que hacen las aplicaciones en tiempo de ejecución.
Es deber del programador de la aplicación asegurarse de que la aplicación pierda los privilegios de root y funcione con derechos sin privilegios. Si la aplicación no hace esto, no hay nada que pueda hacer al respecto, aparte de abstenerse de usar la aplicación, enviar un informe de error al desarrollador o implementar los cambios necesarios en el código.
Por otro lado, eres tú , como administrador, que elige con qué usuario se inicia la aplicación; la regla de oro es nunca otorgar a un proceso más privilegios de los que necesita para ejecutarse. Para que pueda crear un usuario sin privilegios, eche un vistazo en /etc/passwd
para tener una idea de las cuentas del sistema y ejecutar la aplicación como este usuario. (Rara vez tiene que hacer esto a mano; por lo general, todo esto se soluciona cuando instala un software a través del administrador de paquetes). la carrera, entonces está fuera de tu control.
Por ejemplo, versiones anteriores de sendmail
requerido para ejecutar SUID root, lo que era un agujero de seguridad si un atacante remoto lograba explotar con éxito una vulnerabilidad del programa. Si tuvieras sendmail
ejecutándose únicamente como retransmisión de correo, puede ejecutarlo como un usuario sin privilegios.
Diría que, como administradores de sistemas, es nuestro trabajo dar el menor privilegio posible a las aplicaciones y a los usuarios (que les permitan hacer su trabajo).
Un usuario que implementa aplicaciones o páginas web de Tomcat/Java, o que implementa una aplicación con acceso a la base de datos, rara vez tiene pocas o pocas necesidades legítimas de acceso raíz.
La mayoría de los marcos también eliminan la raíz por defecto hoy en día.
Por ejemplo, para los desarrolladores aquí que usan marcos Java, solo les damos acceso a los desarrolladores a un usuario sin privilegios capaz de implementar, y algunos comandos sudo están restringidos para (re)iniciar y detener algunos servicios clave.
Iría aún más lejos diciendo que no es asunto del equipo de desarrollo lidiar con los servidores de producción.
Según mi experiencia de vida, a menudo el equipo de desarrollo solo se preocupa por hacer su trabajo y no es capaz de hacer que la seguridad y la gestión de la capacidad sean correctas sin la planificación, la orientación y la intervención proactiva del equipo de administración de sistemas.