Quanto è sicuro mantenere gli script di proprietà non root in /etc/init.d?


15

Ho un'applicazione che funziona come un demone ed è controllata da uno script in /etc/init.d
A volte abbiamo bisogno di cambiare alcuni parametri di avvio / controllo di questi script e quindi riavviare il demone. Questi script hanno solo il permesso di scrittura per l'utente root, quindi quando modifico questi script ho bisogno dei privilegi di root.

Quello che stavo pensando è che avrei dovuto rendere un utente non root il proprietario di quegli script. In questo modo solo root e un utente speciale possono modificare questi script.

È accettabile tenere alcuni file di proprietà non root nelle directory /etc/init.d?
O è assurdo, disturbare l'ordine naturale del sistema?


1
cattiva idea, non farlo.
ChuckCottrill,

Risposte:


17

Ciò che viene immediatamente in mente è che un utente non privilegiato è in grado di eseguire le cose all'avvio come root , il che è desiderabile per i cracker che:

  • Vuoi intensificare i privilegi di altri account
  • Desideri utilizzare il tuo server per ospitare un servizio non autorizzato
  • Vuoi avviare i robot IRC / Spam se il server si riavvia
  • Vuoi fare un rumore metallico su una nave madre per dire "Sono di nuovo sveglio" e forse scaricare un nuovo payload
  • Vuoi ripulire le loro tracce
  • ... altra cattiveria.

Questo è possibile se il tuo utente sfavorito è in qualche modo compromesso, forse attraverso un altro servizio (http / etc). La maggior parte degli aggressori eseguirà rapidamente lso findsu / di tutto /etcper vedere se esistono tali possibilità, ci sono shell scritte in varie lingue che usano che lo rendono semplice.

Se gestisci il server in remoto, principalmente tramite SSH, ci sono ottime possibilità che non lo vedrai nemmeno a meno che non controlli lo script init, perché non vedrai l'output all'avvio (tuttavia, dovresti usare qualcosa che controlla gli hash di quegli script con hash noti per vedere se qualcosa è cambiato, o software di controllo versione, ecc.)

Sicuramente non vuoi che ciò accada, root ha davvero bisogno di possedere quello script di init. Potresti aggiungere l'utente di sviluppo all'elenco dei sudoer in modo che sia abbastanza conveniente aggiornare lo script, ma ti consiglio di non consentire l'accesso in scrittura senza privilegi a qualsiasi cosa in init.d


5
tl; dr : se lo fai, l'utente non root è buono come root al prossimo avvio. Stai implorando di essere investito.
Warren Young,

9

Oltre agli ottimi punti sollevati da Tim Post, aggiungerei che per un'installazione in cui più persone devono essere in grado di inviare le modifiche su un server, dovresti prendere in considerazione l'uso di un qualche tipo di sistema di gestione della configurazione.

Se, ad esempio, usi burattino, chef o cfengine, puoi fare in modo che gli utenti interessati modifichino i file localmente e quindi espellano le modifiche con la gestione della configurazione. Ovviamente il modo in cui configurarlo varierà a seconda del sistema in uso, ma se impostato correttamente includerà un software di controllo delle versioni che semplifica il ripristino di una versione precedente di un file di configurazione quando (nota: quando , non se !) qualcuno ha fatto un errore. Semplifica inoltre la copia della configurazione in un sistema di test separato, ecc.


Mantenere sia gli script che i file dei dati di configurazione aggiornati in un sistema di gestione della configurazione / versione è un'ottima idea, anche senza considerare se un sistema potrebbe essere compromesso.
ChuckCottrill,

In effetti, l'ho usato per correggere errori di un paio di magnitudini più spesso di quanto non lo abbia usato per riparare un sistema compromesso.
Jenny D,

Grazie mille . Perché qui principalmente un utente dedicato utilizza questa applicazione, quindi sudo funziona senza problemi e questo è quello che stavo facendo da molto tempo. MA sono davvero molto interessato al sistema di gestione delle versioni per le configurazioni. Cara Jenny, puoi fornirmi qualche riferimento per farlo O QUALUNQUE ESEMPIO !! :).
Akaks,

1
Se non vuoi seguire il percorso completo fantoccio / chef / cfengine ecc., Utilizzerei personalmente www.perforce.com. Lo abbiamo usato per ~ 100 server prima che esistessero le marionette e la loro licenza di valutazione era sufficiente per un server. Il vantaggio principale è che è possibile effettuare il checkout dei file VC in qualsiasi posizione nel file system anziché essere limitati a un sottotraccia. Altre opzioni sono joeyh.name/code/etckeeper o l'utilizzo di qualsiasi VC combinato con script per spostare i file nella directory corretta.
Jenny D,
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.