Come proteggere SSH in modo che più utenti possano accedere a un account?

12

Considera una distribuzione Linux generica aggiornata che ospita un server web. Ho bisogno che tre umani facciano occasionalmente SSH nello stesso account utente per eseguire alcune azioni che possono essere eseguite solo da quel particolare account utente.

Il "modo semplice" per farlo sarebbe quello di consentire semplicemente SSH tramite password e di dare il nome utente / password combo a tutti e tre gli umani. Tuttavia, preferisco disabilitare gli accessi delle password e richiedere le chiavi RSA. C'è un modo per configurare SSH per accettare le chiavi RSA da tre diversi utenti? Non voglio distribuire le stesse chiavi a quegli utenti che si collegano anche ad altri server.

    
posta dotancohen 12.04.2013 - 11:44
fonte

3 risposte

11

Sì, è possibile avere più chiavi a cui è consentito accedere a un account. Questa è una configurazione comune tra gli utenti che dispongono di più macchine attendibili e mantengono una chiave privata separata su ciascuna di esse.

Questa è anche una configurazione ragionevole per un account di servizio che ha il solo scopo di accedere a un'applicazione. In questa situazione di solito viene combinato con una shell di accesso ristretta o per scopi speciali che consente solo l'accesso a quella specifica applicazione. Ad esempio, gitosis è un gateway per il sistema di controllo versione Git e gestisce da solo l'autenticazione dell'utente, attenendosi a un giunto git account a livello di unix. Se più persone possono eseguire comandi arbitrari attraverso questo account, dovresti davvero dare loro diversi account unix.

Chiedi agli utenti di inviarti una chiave pubblica e concatena le chiavi pubbliche insieme per formare il file ~/.ssh/authorized_keys o aggiungi in modo equivalente ogni chiave pubblica a partire da un file vuoto.

Puoi mettere restrizioni sulle chiavi stesse nel % file% di scambio . Ad esempio, authorized_keys dichiara una chiave senza restrizioni, mentre un utente che accede con la seguente chiave è autorizzato ad accedere da una subnet IP specifica, potrebbe non inoltrare le porte e potrebbe eseguire solo un comando specifico:

command="/usr/local/bin/restricted-app",from="192.0.2.0/24",no-agent-forwarding,no-port-forwarding,no-x11-forwarding ssh-rsa AAAA… [email protected]

Se ti affidi alle restrizioni dei comandi, fai attenzione che il comando non consenta alcun modo indiretto di ottenere una shell o di modificare i file nella directory ssh-rsa AAAA… [email protected] o in qualsiasi altra posizione sensibile. È possibile creare la directory principale dell'account, la directory .ssh e il suo contenuto di proprietà root e accessibile per la lettura dall'utente, che impedirebbe l'escalation dei privilegi nel caso in cui l'applicazione limitata abbia una vulnerabilità di sovrascrittura dei file ma nessuna vulnerabilità di escape.

Imposta ~/.ssh (un incremento del livello predefinito LogLevel VERBOSE ) nella configurazione del server ( INFO ) per registrare quale chiave è stata utilizzata per accedere ogni volta all'account.

    
risposta data 12.04.2013 - 14:24
fonte
8

Hai considerato di fare solo 3 utenti e metterli in un gruppo che può solo eseguire quella determinata azione. Ciò aumenterà la tua capacità di tracciamento. Questo è in realtà il punto fondamentale per cui utenti e gruppi sono disponibili in un sistema operativo.

Se per qualche motivo non è possibile, puoi comunque consentire loro di accedere (e non fare NIENTE altro) e su a un particolare utente.

Ci sono anche altri sistemi come PowerBroker che forniscono una shell aggiuntiva che registra tutti i colpi di comando, ma per il tuo caso d'uso è probabilmente un enorme overkill.

    
risposta data 12.04.2013 - 11:47
fonte
4

È facile consentire a più chiavi di accedere a un determinato account: è sufficiente mettere tutte le chiavi pubbliche , una dopo l'altra, nel file .ssh/authorized_keys dell'account di destinazione. Qualsiasi utente che controlla una delle chiavi private corrispondenti sarà in grado di aprire una connessione a tale account.

Idealmente, non generare le chiavi da soli; fai in modo che ogni utente generi la propria coppia di chiavi (con ssh-keygen ) e ti invii il risultante .ssh/id_dsa.pub o .ssh/id_rsa.pub (a seconda del tipo di chiave che hanno generato). Quindi incollare il contenuto del file .pub in .ssh/authorized_keys (questi sono file di testo).

Per limitare ciò che questi utenti possono fare con l'account, vedi la risposta di @Gilles (questa è una domanda importante, ma ortogonale).

    
risposta data 12.04.2013 - 15:39
fonte

Leggi altre domande sui tag