Condividi l'accesso root senza condividere la password

4

Sto cercando un modo per condividere i privilegi di amministratore su alcuni host senza fornire la password dell'amministratore. Dal suo link , stavo pensando di utilizzare un host primario da cui ogni utente può sudo -u utente per avere accesso alla chiave SSH specifica e connettersi agli altri computer senza alcuna password. Le chiavi SSH hanno passphrase forti e vengono caricate in memoria da un amministratore.

Se userA necessita dell'accesso root ai computer lan1, lo aggiungiamo al file sudoers come: userA ALL= /bin/su - lan1 dove lan1 è un altro utente contenente una chiave SSH accettata da tutti gli host su lan1. Quindi, userA può accedere alla chiave SSH specifica dell'utente lan1 e fare sudo su - lan1 ssh root@[computer_in_lan1] senza conoscere alcuna password di root.

Il problema è che ho bisogno di abilitare il login SSH root per lan1 e questa è una brutta cosa. Mi chiedo: il login di root richiederebbe una chiave SSH, quindi indovinare qualsiasi cosa sarebbe impossibile, qual è il rischio eccetto tonnellate di log di bot?

Ora, ci sono soluzioni per condividere un accesso root senza dover condividere la password?

    
posta Bamse 09.03.2015 - 16:30
fonte

2 risposte

2

Versione breve:

  1. La tua soluzione sacrifica la registrazione e il controllo della responsabilità, solo per quanto ne sai.

  2. Se il login di root diretto è un problema, usa un utente non amministratore generico per ssh in e poi sudo per root.

  3. Se vuoi essere intelligente, configura sudo (via pam) per richiedere un nome utente e una password specifici per l'uomo in modo che l'escalation dei privilegi locali sia legata all'essere umano responsabile.

Versione lunga:

Il login diretto alla root è negativo per due motivi:

  • Abbassa la barriera per l'attacco di un utente malintenzionato come root.
  • Rimuove la registrazione di controllo che lega le modifiche di sistema a un individuo responsabile
  • responsabile.
  • I revisori se la saltano addosso come la donnola nella pancetta.

Se dovessi sostituire ssh root@[computer_in_lan1] con un utente non privilegiato, ad esempio ssh myadmin@[computer_in_lan1] e quindi richiedere all'utente di utilizzare sudo per ottenere i privilegi di root, allora dovrai affrontare il primo motivo. Tuttavia, il secondo è ancora un problema, perché se più umani possono accedere a myadmin , allora chi deve sapere quale umano ha fatto?

Un modo per compensare sarebbe richiedere un'autenticazione per-umana una volta locale al sistema. Una volta che l'utente accede come myadmin , eseguirà sudo su - per ottenere i privilegi di root. Una soluzione intelligente sarebbe di richiedere autenticazione individuale dagli umani a questo punto in modo da poter legare l'atto di ottenere i privilegi di root su un individuo.

Come molte altre cose, sudo usa pam come back-end di autenticazione. E pam può essere configurato per richiedere un nome utente e per uscire in rete con qualcosa come LDAP o RADIUS . Quindi, Joe accede come myadmin tramite ssh e digita sudo su - ; Dovrà inserire username 'joe' e la sua password per diventare root. Quando Kate effettua l'accesso con lo stesso account myadmin generico e digita sudo su - , dovrà ottenere il nome utente "kate" e la sua password per ottenere il root.

Ora, impostarlo sarebbe tanto, o più, di lavoro rispetto all'impostazione di un singolo account utente su tutti i sistemi. La manutenzione potrebbe essere inferiore. Ma sarebbe molto più divertente da fare.

    
risposta data 09.03.2015 - 18:19
fonte
2

Ti consiglio di non consentire il login diretto come root tramite ssh su qualsiasi sistema. Come menzionato nel precedente commento di gowenfawr, è meglio avere account personali per tutti coloro che amministrano il sistema su tutti i nodi e dare loro l'accesso a sudo per effettuare il root in locale. Non avrebbero bisogno di una password di root su alcun nodo per questo; userebbero la propria password o altre credenziali.

Può essere automatizzato con strumenti di autenticazione distribuiti come LDAP e RADIUS o con uno strumento client-server in cui il client viene eseguito localmente su ciascun nodo, raccoglie le informazioni da un sistema di autorizzazione centrale e crea e mantiene il singolo utente account sui sistemi.

In caso contrario, potresti voler impostare un account dedicato (non individuale) su ciascun nodo il cui scopo è eseguire un insieme specifico di comandi come root tramite il controllo sudo, e avere un mezzo per le chiavi pubbliche di tutti i amministratori sul "server di salto" centrale distribuito a authorized_keys per questo account su tutti i nodi.

La chiave (destinata al gioco di parole) serve a proteggere dall'uso improprio o dall'intercettazione delle chiavi private degli amministratori sul nodo centrale, impedendo l'accesso illimitato all'account di root in remoto e facendo affidamento sull'escalation dei privilegi locali (sudo). / p>     

risposta data 09.03.2015 - 17:59
fonte

Leggi altre domande sui tag