Applicare le password delle chiavi SSH?


9

Sto cercando di rimuovere accessi basati su password per SSH. Tuttavia, non voglio consentire chiavi ssh senza password, dato che sarebbe ancora peggio.

Come posso assicurarmi che solo le chiavi SSH che dispongono di password possano connettersi?

Se ciò non è possibile, esistono alternative, come la gestione centralizzata della generazione di chiavi SSH e la prevenzione da parte degli utenti della generazione e / o dell'utilizzo delle proprie chiavi? Qualcosa come PKI, suppongo.

Risposte:


20

La passphrase che può essere impostata sulla chiave privata non è correlata al server SSH o alla connessione ad essa. L'impostazione di una passphrase sulla chiave privata è semplicemente una misura di sicurezza che il proprietario della chiave può adottare per impedire l'accesso alla sua shell remota da parte di terzi nel caso in cui la chiave privata venga rubata.

Sfortunatamente, non è possibile forzare gli utenti a proteggere le proprie chiavi private con passphrase. A volte sono necessarie chiavi private non protette per automatizzare l'accesso al server SSH remoto. Una buona abitudine che consiglio vivamente in questi casi è di consigliare agli utenti di eseguire l' hashing del file known_hosts (memorizzato in ~ / .ssh / known_hosts ), che mantiene le informazioni sugli host remoti a cui l'utente si collega, usando il seguente comando:

ssh-keygen -H -f ~/.ssh/known_hosts

In questo modo, anche se una terza parte avesse accesso a una chiave privata non protetta, sarebbe estremamente difficile scoprire per quali host remoti questa chiave è valida. Ovviamente, cancellare la cronologia della shell è obbligatorio affinché questa tecnica abbia valore.

Inoltre, un'altra cosa che dovresti sempre tenere a mente, non è consentire a root di accedere in remoto aggiungendo quanto segue nella configurazione del tuo server SSH (sshd_config):

PermitRootLogin no

D'altra parte, se si desidera impedire agli utenti di utilizzare le chiavi per l'autenticazione, ma invece utilizzare le password, è necessario aggiungere quanto segue a sshd_config :

PasswordAuthentication yes
PubkeyAuthentication no

8

Non è possibile.

Gli utenti possono fare qualsiasi cosa con i loro file di chiavi, convertirli in senza password anche se lo hai generato per esempio.


3

Non puoi. Una volta che l'utente ha i dati chiave in suo possesso, non puoi impedirgli di rimuovere la passphrase. Dovrai cercare altri modi per eseguire l'autenticazione.


2

Per ottenere il controllo delle chiavi utente, tutte le chiavi devono essere spostate in una directory di proprietà radice in cui le chiavi sono leggibili ma non modificabili dall'utente finale. Questo può essere fatto aggiornando sshd_config.

Una volta che i file delle chiavi si trovano in una posizione controllata, sarà necessaria un'interfaccia di gestione per l'aggiornamento (e l'applicazione della politica delle password) seguita dalla distribuzione delle chiavi agli host richiesti. O arrotolane uno tu stesso o dai un'occhiata a prodotti come FoxT / Tectia ecc.


... che rompe i benefici della chiave pubblica
Patwie,

0

Una soluzione potrebbe essere l'uso del plug-in del modulo PAM dell'autenticatore di Google. Di solito disponibile nei pacchetti ufficiali.

Ciò renderà disponibile 2FA tramite un codice a 6 cifre sul tuo smartphone.

Istruzioni qui: Come impostare l'autenticazione a più fattori per SSH su Ubuntu 16.04


1
Dovresti notare che questo non risponde direttamente alla domanda, ma è una (buona) alternativa.
ceejayoz,

1
@ceejayoz Hai ragione. Ho aggiunto "Una soluzione sarebbe usare .." all'inizio della risposta proprio ora per chiarire che si tratta di un'alternativa.
Basilio,

-1

SEMPLICE, è sufficiente estendere il protocollo SSH in modo che il client SSH o l'agente SSH segnalino / impostino un flag per dire se la chiave privata originale è stata crittografata o meno (forse il lato server può anche porre una query) - poiché il lato client ha visibilità della chiave privata e richiede già la passphrase quando la chiave è crittografata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.