È un rischio per la sicurezza eseguire i miei lavori crontab come root?


8

Ho alcuni lavori cron che sto eseguendo, principalmente roba relativa al backup.

Devo eseguire il backup bloccato come / etc / apache2 / sites / available etc, che richiede l'accesso come root.

Ho un paio di domande:

Quando si esegue su un server senza testa:

  1. Con quale utente viene eseguito lo script (supponendo che non specifichi un utente nella voce cron job)?
  2. Va bene eseguire lo script di backup come root - o questo pone una domanda di sicurezza?

A proposito, il mio server esegue Ubuntu 10.0.4 LTS

Risposte:


15

Se hai sufficientemente protetto l'accesso allo script e hai preso precauzioni sensate, eseguire qualcosa dal root crontab non è di solito un rischio per la sicurezza.

Ma non eseguire uno script come root che un utente non root può modificare o sovrascrivere. Questo vale per i lavori eseguiti da cron e in modo interattivo.

Se quello script include altri file, lo stesso vale anche per loro.

In caso di dubbio, utilizzare sempre il principio del privilegio minimo. Se non sei ancora sicuro, puoi sempre porre domande specifiche sui forum e in IRC.


C'è (quasi) sempre un modo per eseguire qualcosa come utente non root. Se tutto il resto fallisce l'uso di sudo per limitare un utente a comandi specifici, limita anche il potenziale danno.

Quindi, con l'esempio che hai dato sul backup di / etc / apache2 / sites-available, quel file è di default leggibile da chiunque, quindi ciò implica che è l'accesso alla destinazione che è scrivibile solo da root.

Potresti risolverlo da

  • creare un gruppo chiamato backupadmins (ad esempio)
  • imposta il gruppo nella directory di destinazione su backupadmins
  • aggiungere un utente chiamato backupuser (ad esempio)
  • aggiungere l'utente backupuser agli amministratori di backup di gruppo.
  • rendere la directory scrivibile dal gruppo backupadmins
  • eseguire il cron job dal crontab del backupuser.

+1 per le utili istruzioni dettagliate. La tua risposta è stata estremamente utile. Avevo intenzione di seguire questa strada comunque, ma dato che era la prima volta che lo facevo, è rassicurante vedere che qui è stato raccomandato (e parecchie persone sembrano concordare con la tua raccomandazione).
user35402

A proposito, se creo il gruppo di utenti e l'utente come suggerisci, sarò in grado di accedere a / etc / apache / siti-disponibili e altre cartelle che sono (giustamente) limitate al solo accesso root ?. Come aggirare quel problema?
user35402

3

Dipende da cosa stanno facendo gli script. Se stanno eseguendo il backup di roba, probabilmente è bene che siano root - se un utente malintenzionato sovrascrive questi script, probabilmente avrai comunque problemi più grandi.

Se fanno cose stupide come l'esecuzione di file trovati nelle directory o qualsiasi cosa possa essere influenzata dal contenuto delle directory web, allora probabilmente dovrai cercare delle alternative.


2

Milioni di cron job in tutto il mondo vengono eseguiti come root ogni giorno (o in qualunque periodo siano impostati per essere eseguiti).

L'importante è che siano impostate le autorizzazioni appropriate. Se stai eseguendo qualcosa che è scrivibile da tutti, un utente o un processo dannoso potrebbe cambiare ciò che sta facendo.

I lavori Cron sono gestiti dal proprietario del crontab, in generale. Un crontab utente potrebbe essere /var/spool/cron/crontabs/usernamead esempio. Cronjobs che sono /etc/crontab, /etc/cron.d/o /etc/cron.hourly(giornaliera, settimanale, mensile) saranno gestiti da root. È importante che la proprietà e le autorizzazioni siano corrette anche per questi file crontab.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.