Pregunta

Quiero construir un front-end basado en la web para administrar / administrar mi caja de Linux. P.ej. Quiero poder agregar usuarios, administrar el sistema de archivos y todo ese tipo de cosas. Piense en ello como un clon de cPanel pero más para el administrador del sistema que para el administrador web.

Estaba pensando en crear un servicio que se ejecute en mi caja y que realice todas las tareas de los niveles del sistema. De esta manera puedo tener una clara separación entre mi front-end basado en la web y la lógica real. Las páginas del servidor pueden hacer llamadas a mi servidor especializado o realizar tareas en cola de esa manera. Sin embargo, no estoy seguro de si esta sería la mejor manera de hacerlo.

Creo que otra pregunta importante sería, ¿cómo lidiaría con la seguridad al construir algo como esto?

PD: Esto es solo un proyecto favorito y una experiencia de aprendizaje, por lo que no estoy interesado en las soluciones existentes que hacen algo similar.

¿Fue útil?

Solución

Haga que el demonio de servicio especializado se ejecute como un usuario distinto, llamémoslo 'managerd'. Configure su archivo / etc / sudoers para que 'managerd' pueda ejecutar los diversos comandos que desea que se ejecuten, como root, sin una contraseña.

Haga que el servidor web deje caer "disparador" archivos que contienen los comandos para ejecutar en un directorio en modo '770' con un grupo al que solo pertenecen el usuario del servidor web y 'managerd'. Asegúrese de que 'managerd' verifique que los archivos tengan la propiedad correcta antes de ejecutar el comando.

Asegúrese de que el lado de la interfaz web esté bloqueado: ejecútelo solo a través de HTTPS, requiera autenticación y, si es posible, coloque ACL específicas de IP, de modo que solo pueda acceder a él desde ubicaciones conocidas de antemano.

Otros consejos

Su solución parece una solución muy sensata para el problema 'raíz'.

Par de sugerencias:

  1. Vincular el 'servicio especializado' a localhost también ayudaría a garantizar que las solicitudes no se puedan hacer externamente.
  2. Comprobando las funciones de llamada de solicitud que realizan las acciones y no le dan directamente al servicio acceso ilimitado completo Llamando a una función " addToGroup (usuario, grupo) " en lugar de un genérico " performAction (comando) " ;.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top