Desarrollé una aplicación que usa NTP para cambiar la hora de la red, para sincronizar dos de mis computadoras. Se ejecuta como root
, ya que solo este último puede cambiar la hora y la fecha en Linux (supongo).
Ahora, quiero ejecutarlo como usuario. Pero, necesito acceder al tiempo.
- ¿Es una buena práctica ejecutar un demonio en una cuenta de usuario no root?
- ¿Debo darle a mi aplicación una capacidad como
CAP_SYS_TIME
? - ¿No introduce una vulnerabilidad de seguridad?
- ¿Hay una mejor manera?
security
daemon
access-control
Anónimo12223
fuente
fuente
ntp
cuenta de usuario (al menos en los sistemas Linux), por lo que no debería ser necesario que realice este cambio. ¿Qué paquete NTP has instalado?Respuestas:
Sí, y esto es común. Por ejemplo, Apache comienza como root y luego bifurca el nuevo proceso como www-data (por defecto).
Como se dijo anteriormente, si su programa es pirateado (por ejemplo, inyección de código), el atacante no obtendrá acceso de root, sino que estará limitado a los privilegios que le otorgó a este usuario específico.
Es una buena idea ya que evita usar setuid y limita los permisos a esta capacidad muy específica.
Puede aumentar la seguridad, por ejemplo:
fuente
USER
en un directorio, usechroot
(ejecútelo como usuario raíz). Sin embargo, debe crear e inicializar una cárcel (directorio) antes. En resumen, debe colocar las bibliotecas y los archivos binarios que su proceso necesita en esta cárcel y luego llamarchroot <path/to/jail> <command>
. Un buen tutorial con algunos ejemplos que necesita está disponible aquíA menos que tenga razones fuertes e irrefutables de lo contrario, solo debe usar el paquete NTP que viene con su distribución GNU / Linux. El demonio NTP estándar ha tardado años en madurar y viene con características sofisticadas como ralentizar o acelerar el reloj de su sistema para sincronizarlo con una red o reloj GPS. Se ha diseñado para sincronizar relojes, por lo que lo más probable es que sea la mejor herramienta para ese propósito.
ntpd
aún se mantiene, a juzgar por las actualizaciones recientes (al momento de escribir esta publicación). Si necesita más funciones, le sugiero que se comunique directamente con los desarrolladores, confíe en lo que tienen que decir al respecto.fuente
Si tiene un programa que necesita poder hacer la función X (por ejemplo, manipular el reloj), y puede darle el privilegio / poder para hacer la función X y nada más, eso es mejor que darle toda la lata del alfabeto sopa. Esto se conoce como el principio de menor privilegio . Considere qué sucede si su programa tiene un error, ya sea un error de programación normal o una vulnerabilidad de seguridad explotable. Si se ejecuta como "root", podría eliminar los archivos de todos, o enviarlos a un atacante. Si lo único que el programa es capaz de hacer es manipular el reloj (y funciones no privilegiados, como la manipulación de archivos en un directorio bloqueado-abajo), entonces eso es lo peor que puede suceder si el programa va sin escrúpulos.
fuente