In qualità di amministratore di Linux, uno dei miei compiti è svolgere una sorta di attività per eliminare i privilegi di root delle applicazioni in esecuzione sui miei sistemi?
Sì. È tuo compito assicurarti che sia fatto. Se l'applicazione non lo fa, devi notare che l'applicazione non lo sta facendo e fallo da solo.
O mi affido semplicemente agli sviluppatori dell'applicazione per assicurarmi che abbiano scritto il loro codice per farlo?
Non fare affidamento sugli sviluppatori di applicazioni per aver fatto qualsiasi cosa. Ci sono molti strumenti a disposizione di un amministratore di sistema Linux per ottenere i fatti di ciò che le applicazioni stanno facendo in fase di esecuzione.
È compito del programmatore dell'applicazione garantire che l'applicazione abbandoni i privilegi di root e funzioni con diritti non privilegiati. Se l'applicazione non lo fa, non c'è niente che tu possa fare al riguardo, a parte astenersi dall'usare l'applicazione, inviare una segnalazione di bug allo sviluppatore o implementare tu stesso le modifiche necessarie nel codice.
D'altra parte, sei tu , in qualità di amministratore, che sceglie come utente avviare l'applicazione; la regola d'oro è non concedere mai a un processo più privilegi di quelli necessari per essere eseguito. Quindi puoi creare un utente senza privilegi:dai un'occhiata a /etc/passwd
per avere un'idea degli account di sistema ed eseguire l'applicazione come questo utente. (Raramente devi farlo a mano; di solito questo viene risolto quando installi un software tramite il gestore pacchetti.) Tuttavia, se l'applicazione richiede i privilegi di root per avviarsi e quindi non riesce a eliminare tali privilegi nel mezzo di la corsa, allora è fuori dal tuo controllo.
Ad esempio, versioni precedenti di sendmail
richiesto per eseguire SUID root, che rappresentava una falla di sicurezza se un aggressore remoto riusciva a sfruttare con successo una vulnerabilità del programma. Se avessi sendmail
eseguito unicamente come inoltro di posta, potresti eseguirlo come utente senza privilegi.
Direi che come amministratori di sistema è nostro compito concedere il minor privilegio possibile alle applicazioni e agli utenti (che consentono loro di svolgere il proprio lavoro).
Un utente che distribuisce app Tomcat/Java o pagine Web o distribuisce un'app con accesso al database raramente ha poche o poche esigenze legittime per l'accesso root.
La maggior parte dei framework al giorno d'oggi rilascia anche root per impostazione predefinita.
Ad esempio, per gli sviluppatori qui che utilizzano framework Java, diamo solo accesso agli sviluppatori a un utente non privilegiato in grado di eseguire la distribuzione e alcuni comandi sudo limitati a (ri)avviare e arrestare alcuni servizi chiave.
Direi ancora di più che non è compito del team di sviluppo occuparsi dei server di produzione.
Dalla mia esperienza di vita, spesso il team di sviluppo è solo preoccupato di portare a termine il proprio lavoro e non è in grado di ottenere una gestione corretta della sicurezza e della capacità senza pianificazione, guida e intervento proattivo da parte del team di amministratori di sistema.