¿Es un riesgo de seguridad ejecutar mis trabajos crontab como root?

8

Tengo algunos trabajos cron que estoy ejecutando, principalmente cosas relacionadas con copias de seguridad.

Tengo que hacer una copia de seguridad atascada como / etc / apache2 / sites / available, etc., que requieren acceso de root.

Tengo un par de preguntas:

Cuando se ejecuta en un servidor sin cabeza:

  1. ¿Bajo qué usuario se ejecuta el script (suponiendo que no especifique un usuario en la entrada del trabajo cron)?
  2. ¿Está bien ejecutar el script de respaldo como root, o eso plantea una pregunta de seguridad?

Por cierto, mi servidor está ejecutando Ubuntu 10.0.4 LTS

usuario35402
fuente

Respuestas:

15

Si ha asegurado el acceso al script lo suficiente y ha tomado precauciones razonables, ejecutar algo desde el crontab root no suele ser un riesgo para la seguridad.

Pero no ejecute un script como root que un usuario no root puede editar o sobrescribir. Esto se aplica a los trabajos ejecutados desde cron, así como de forma interactiva.

Si ese script incluye otros archivos, también se aplica a ellos.

En caso de duda, utilice siempre el principio del menor privilegio. Si todavía no está seguro, siempre puede hacer preguntas específicas en foros y en IRC.


Siempre hay (casi) una forma de ejecutar algo como usuario no root. Si todo lo demás falla al usar sudo para limitar a un usuario a comandos específicos, también limita el potencial de hacer daño.

Entonces, con el ejemplo que dio de hacer una copia de seguridad de / etc / apache2 / sites-available, ese archivo es legible de forma predeterminada por cualquier persona, lo que implica que el acceso al destino solo se puede escribir desde la raíz.

Podrías arreglar eso por

  • crear un grupo llamado backupadmins (por ejemplo)
  • configura el grupo en el directorio de destino para backupadmins
  • agregar un usuario llamado backupuser (por ejemplo)
  • agregue el usuario backupuseruser al grupo backupadmins.
  • hacer que el directorio sea escribible por el grupo backupadmins
  • ejecute el trabajo cron desde el crontab de backupuser.
Richard Holloway
fuente
+1 para las útiles instrucciones paso a paso. Tu respuesta ha sido extremadamente útil. Tenía la intención de seguir este camino de todos modos, pero como era la primera vez que lo hacía, es tranquilizador ver que se recomienda aquí (y algunas personas parecen estar de acuerdo con su recomendación).
user35402
Por cierto, si creo el grupo de usuarios y el usuario como usted sugiere, ¿podré acceder a / etc / apache / sites-available y otras carpetas que están (con razón), limitadas solo al acceso de root? ¿Cómo puedo solucionar ese problema?
user35402
3

Depende de lo que estén haciendo los scripts. Si están respaldando cosas, entonces probablemente esté bien que sean root: si un usuario malintencionado sobrescribe estos scripts, es probable que tenga mayores problemas de todos modos.

Si hacen cosas estúpidas como ejecutar archivos encontrados en directorios, o cualquier cosa que pueda estar influenciada por el contenido de los directorios web, entonces probablemente deba buscar alternativas.

James L
fuente
2

Millones de trabajos cron en todo el mundo se ejecutan como root todos los días (o en cualquier período que estén programados para ejecutarse).

Lo importante es que se establezcan los permisos adecuados. Si está ejecutando algo que todos pueden escribir, un usuario o proceso malintencionado podría cambiar lo que está haciendo.

Los trabajos de Cron son ejecutados por el propietario del crontab, generalmente hablando. Un crontab de usuario podría estar, /var/spool/cron/crontabs/usernamepor ejemplo. Cronjobs que están en /etc/crontab, /etc/cron.d/o /etc/cron.hourly(diariamente, semanalmente, mensualmente) serán ejecutados por root. Es importante que la propiedad y los permisos también sean correctos para estos archivos crontab.

Pausado hasta nuevo aviso.
fuente