Nella maggior parte dei casi, si guadagna poco disabilitando effettivamente gli accessi root remoti. Aiuta marginalmente a far rispettare una politica che gli amministratori effettuano l'accesso tramite i propri account e su
che eseguono il root come necessario (o sudo
eventualmente usano con sudosh
... a seconda delle proprie politiche).
Creare password di root estremamente lunghe e ingombranti (efficaci fino a quando non stai ancora usando l'antico hash salt DES + 12 bit per le tue password) è altrettanto efficace nel far rispettare tale politica.
Un sito con cui ho familiarità aveva un sistema in base al quale le password univoche venivano generate casualmente per ciascun host, archiviate in un database e trasferite ai sistemi. Gli amministratori dovevano utilizzare i ssh
loro account normali e sudo
per la maggior parte delle operazioni. Tuttavia, la password di root era accessibile a loro tramite un servizio Web interno basato su SSL (che richiedeva ulteriormente il loro token RSA SecurID e PIN). Il recupero di una password di root ha comportato l'inserimento di una giustificazione (di solito un collegamento a un numero di ticket Remedy (TM)) e gli accessi dove sono stati periodicamente controllati. Uno dei pochi motivi accettabili per l'utilizzo diretto della password di root era nei casi in cui un sistema era stato arrestato fsck
durante il processo di avvio ... esulogin
richiedeva una vera password di root per eseguire manualmente i processi di controllo e riparazione del filesystem. (C'è stata una discussione sui metodi alternativi per questo --- che sono relativamente facili per Linux, ma diventano molto più difficili mentre provi ad estendere le tue procedure per tenere conto dei numerosi sistemi HP-UX, AIX e precedenti SunOS e Solaris che erano ancora in produzione in quell'ambiente).
Ci sono casi angolari in cui è necessaria una password di root --- o almeno è la migliore alternativa disponibile. Mantenerlo disponibile rendendolo sufficientemente robusto contro il tipo di minacce che puoi prevedere è generalmente la tua migliore strategia.
Un altro sito che conosco ha un approccio piuttosto elegante alla gestione decentralizzata degli account. Hanno pacchetti user- * e sudo- * (pensate agli RPM) che sono installati nei sistemi usando le normali procedure di gestione dei pacchetti e l'infrastruttura di automazione. Nel loro caso il pacchetto sudo- * ha una dipendenza dal corrispondente pacchetto user- *. Questo è utile perché ti consente di avere gruppi di macchine con account localizzati (tutti gli account sono amministratori, sviluppatori, personale di supporto o account "senza testa") ed elimina la dipendenza da LDAP / NIS o altri servizi di autenticazione e identità in rete. (Ciò riduce l'accoppiamento tra i sistemi rendendoli significativamente più robusti).
Una cosa che mi piace di questo approccio è che offre flessibilità. Chiunque abbia sudo
accesso può emettere un comando per aggiungere un utente normale o un altro sudo
account utente. Quindi, se sto lavorando su un ticket, qualcuno delle persone che hanno già accesso a un sistema può facilmente darmi accesso. Non ci sono ritardi mentre un ticket per aggiungermi a un elenco di controllo degli accessi in alcuni database centrali esegue un processo di approvazione centralizzato e, infine, propaga una modifica al sistema in questione. Qualsiasi utente autorizzato sudo
sul sistema può darmi accesso e successivamente rimuovermi. (Sì, se fossi cattivo e loro mi prendessero in girosudo
Potrei modificare maliziosamente le cose per mantenere l'accesso ... in effetti ci sono alcune cose che potrei fare come un normale utente per mantenere l'accesso dopo tale rimozione. Tuttavia, questa non è la minaccia di cui sono preoccupati. Il mio accesso è ancora limitato a un numero relativamente ridotto di sistemi in generale; quindi l'impatto di un account compromesso è ancora più limitato rispetto alla maggior parte degli schemi simili che ho visto.