Miglior metodo di sicurezza per l'accesso SSH

1

Recentemente ho iniziato a pensare alla sicurezza un po 'più a fondo e ho trovato alcune domande sulle quali avrei davvero apprezzato le opinioni.

Per anni ho avuto lo stesso SSH Keypair per accedere ai miei server, github ecc. Mi sono assicurato la mia chiave privata e l'ho mantenuta in questo modo. Ho la chiave privata tra più macchine, laptop lavoro, laptop privato e dispositivo mobile. Ora, anche se non vedo questo come un problema perché non so mai dove dovrò connettermi per ordinare i problemi ecc. Recentemente mentre leggevo alcuni blog su come un datore di lavoro senza scrupoli scannerizzava e collezionava chiavi private sui loro laptop dipendenti, mi faceva pensare a chi potrebbe potenzialmente avere accesso alle mie macchine. il mio attuale datore di lavoro esegue il backup dei loro laptop, quindi in pratica la mia chiave privata potrebbe essere archiviata ovunque sui loro sistemi e consentire a chiunque abbia accesso a questi sistemi di accedere alla mia chiave.

Quindi qual è il modo migliore per risolvere questo problema? Ho bisogno delle mie chiavi su più macchine / dispositivi, quindi come faccio a gestirli e tenerli tutti al sicuro? Ho letto sulla separazione delle chiavi su singoli dispositivi, server e utenti

  • Utente1 - > Server1 (1x Keypair)
  • Utente1 - > Server2 (1x Keypair)
  • Utente1 - > Server3 (1x Keypair)

Questo non risolve davvero nulla, in quanto significa solo più chiavi da gestire con pochissimi vantaggi in termini di sicurezza.

L'opzione successiva consisterebbe nel modificare gli accessi dall'autenticazione basata su chiave all'autenticazione TOTP (nome utente, password e password monouso basata sul tempo). Ciò eliminerebbe la necessità di avere una coppia di chiavi privata, ma consentirà comunque l'accesso ai miei server. Ovviamente avrei ancora bisogno di chiavi per siti come GitHub ecc.

Qualcuno ha altri pensieri su questo?

    
posta Tony 27.01.2016 - 15:14
fonte

5 risposte

2

Puoi crittografare il tuo file chiave e ssh ti chiederà di decrittografare la password quando ti connetti al tuo server.

ssh-keygen -p [-f keyfile]

ssh-keygen richiederà una password utilizzata per crittografare la chiave.

    
risposta data 27.01.2016 - 15:28
fonte
0

Anche con la passphrase, è probabilmente una questione di tempo prima che venga decifrato. Inoltre dovrai integrare il servizio totp, che potrebbe non essere possibile se non sei l'amministratore. Sfortunatamente la rotazione delle chiavi diventa quindi una necessità.

    
risposta data 27.01.2016 - 16:56
fonte
0

Anche se non c'è nulla che possa immaginare che ti protegga da un individuo veramente determinato con accesso amministrativo alle tue macchine, un'alternativa alle passphrase sui file archiviati localmente è usare una smart card - c'è il supporto in PuTTY, WinSCP e per ssh / scp / sftp su Linux e probabilmente anche altri sistemi operativi.

    
risposta data 27.01.2016 - 17:42
fonte
0

Continuando la mia ossessione con i token hardware e i dispositivi YOneKey NEO, ho generato una chiave GPG sul token, ho esportato la chiave pubblica e ho utilizzato gpgkey2ssh per convertirlo nel formato che va nel mio file authorized_keys .

Invece di usare ssh-agent per decodificare il mio file chiave dal disco, collego il mio token di sicurezza e utilizzo gpg-agent . L'accesso ora richiede che la chiave sia fisicamente nel computer e non possa essere copiata.

Completamente compatibile con GitHub, non richiede modifiche alla configurazione del server oltre alla rotazione della chiave e richiede l'installazione minima di gpg-agent per utilizzarla sul client.

Per quanto riguarda la necessità della chiave su più macchine, utilizzare l'inoltro dell'agent ( ssh -A ) per mantenere il vantaggio di accesso temporale richiesto dal fatto che il token hardware è installato.

    
risposta data 27.01.2016 - 18:35
fonte
0

Uso una chiave per computer client e tutti i server remoti a cui ho bisogno di accedere hanno 1 o più righe nel loro file authorized_keys , a seconda di quali client dovrebbero essere autorizzati ad accedervi.

Quindi, se hai un laptop di casa, un cellulare di casa e un laptop da lavoro, ognuno di questi otterrebbe una coppia di chiavi. Quindi carichi ogni chiave pubblica su ogni computer remoto a cui ognuno di questi dovrebbe avere accesso. Ad esempio, il server su cui si eseguono i backup domestici probabilmente otterrà la chiave pubblica di entrambi i computer di casa, ma non il computer di lavoro; un server Web supportato per il lavoro ma che potrebbe essere necessario accedere dal tuo cellulare quando sei in corso di chiamata otterrà le chiavi pubbliche per il tuo laptop di lavoro e per il tuo cellulare.

Ora hai creato un nuovo problema: la gestione delle chiavi. Ma finché il numero di computer client rimane piccolo, puoi gestirlo manualmente.

Ogni volta che esegui il provisioning di un nuovo computer, parte della configurazione ora deve creare una nuova coppia di chiavi e spingere la chiave pubblica (probabilmente utilizzando uno dei computer esistenti) a tutti i server che dovrebbero essere autorizzati a gestire. Quando si rimuove il computer da un computer, si esce e si rimuovono tutte le sue chiavi pubbliche (se lo si annulla "in modo sicuro" e la chiave privata viene distrutta, potrebbe non essere un'attività urgente). Quando un computer non è più affidabile (ad esempio ti rendi conto che le chiavi del tuo computer di lavoro sono state salvate anche se hai tentato di impedirlo, e poi hai casualmente cercato su Google la passphrase di proteggerle) puoi semplicemente rimuovere la chiave pubblica di quel computer ovunque e generare un nuova coppia di chiavi per quel computer.

    
risposta data 27.01.2016 - 19:15
fonte

Leggi altre domande sui tag