it-swarm-eu.dev

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

Prendi in considerazione una distro Linux aggiornata e generica che ospita un server web. Ho bisogno di tre esseri umani di tanto in tanto 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 semplicemente consentire SSH con password e dare la combinazione nome utente/password a tutti e tre gli umani. Tuttavia, preferisco disabilitare gli accessi con password e richiedere 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 come accedono anche ad altri server.

12
dotancohen

Sì, puoi avere più chiavi a cui è consentito accedere a un account. Questa è una configurazione comune tra gli utenti che hanno più macchine affidabili e mantengono una chiave privata separata su ognuna.

Questa è anche una configurazione ragionevole per un account di servizio destinato ad accedere a una sola applicazione. In questa situazione, di solito è combinato con una shell di accesso limitata o speciale che consente l'accesso solo a quella specifica applicazione. Ad esempio, gitosis è un gateway per il sistema di controllo della versione Git e gestisce l'autenticazione dell'utente da sola, attenendosi a un account congiunto git a livello unix. Se più persone possono eseguire un comando arbitrario tramite questo account, dovresti davvero dare loro diversi account unix.

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

Puoi inserire restrizioni sulle chiavi stesse nel authorized_keys file . Per esempio, ssh-rsa AAAA… [email protected] dichiara una chiave senza restrizioni, mentre un utente che accede con la seguente chiave può accedere solo da una sottorete IP specifica, non può inoltrare le porte e può solo eseguire 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 si fa affidamento sulle restrizioni dei comandi, fare attenzione che il comando non consenta alcun modo indiretto per ottenere una Shell o modificare i file in .ssh directory o qualsiasi altra posizione sensibile. Puoi creare la home directory dell'account, il ~/.ssh directory e i suoi contenuti di proprietà di root e accessibili per la lettura da parte dell'utente, il che impedirebbe l'escalation dei privilegi nel caso in cui l'applicazione con restrizioni abbia un file sovrascrivere la vulnerabilità ma nessuna vulnerabilità di fuga da Shell.

Impostato LogLevel VERBOSE (un passo avanti rispetto al livello predefinito INFO) nella configurazione del server (sshd_config) per registrare quale chiave è stata utilizzata per accedere ogni volta all'account.

Hai preso in considerazione solo la creazione di 3 utenti e l'inserimento di questi in un gruppo che può solo eseguire quella particolare azione. Ciò aumenterà la tua capacità di tracciamento. Questo è in realtà il motivo per cui utenti e gruppi sono disponibili in un sistema operativo.

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

Esistono anche altri sistemi come PowerBroker che forniscono una Shell aggiuntiva che registra tutte le sequenze di comandi, ma per il tuo caso d'uso è probabilmente un enorme sovraccarico.

8
Lucas Kauffman

È facile consentire a più chiavi di accedere a un determinato account: inserisci semplicemente tutte le chiavi public, una dopo l'altra, nel .ssh/authorized_keys file 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; fare in modo che ciascun utente generi la propria coppia di chiavi (con ssh-keygen) e inviarti il ​​risultante .ssh/id_dsa.pub o .ssh/id_rsa.pub (a seconda del tipo di chiave che hanno generato). Quindi incollare il .pub contenuto del file nel .ssh/authorized_keys (questi sono file di testo).

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

4
Tom Leek