Immagina questo scenario. Hai appena configurato l'autenticazione basata su chiave SSH nel tuo server Linux. E poi, hai deciso di disabilitare completamente l'autenticazione basata su password e di consentire solo l'autenticazione basata su chiave a tutti gli utenti. Prima di disabilitare l'autenticazione della password, desideri verificare quali utenti stanno ancora utilizzando le password per accedere al server tramite SSH. Come lo farai? Bene, è possibile! Questa breve guida spiega come scoprire se un utente utilizza l'autenticazione SSH basata su password o chiave in Linux.
Trova se un utente utilizza l'autenticazione SSH basata su password o chiave
Possiamo identificare se un utente ha effettuato l'accesso a un server Linux tramite SSH utilizzando una password o una chiave ssh. Non è un modo affidabile e garantito al 100%, ma è comunque un buon approccio.
Innanzitutto, controlla se il ~/.ssh/authorized_keys
il file esiste. Perché, nel metodo di autenticazione basato su chiave SSH, la chiave pubblica SSH deve essere caricata sui sistemi a cui si desidera accedere tramite SSH. Le chiavi pubbliche verranno generalmente archiviate in un file chiamato ~/.ssh/authorized_keys
nei sistemi remoti. Se questo file esiste, è probabile che l'utente stia probabilmente utilizzando l'autenticazione basata su chiave.
Quindi, controlla i file di registro di autenticazione per verificare quale metodo di autenticazione sta attualmente utilizzando l'utente per accedere al sistema remoto. Il metodo di autenticazione è registrato in "/var/log/secure"
file su sistemi basati su RPM (es. CentOS), "/var/log/auth.log"
file su sistemi basati su DEB (es. Ubuntu).
Cerca la password inserita nei file di registro dell'autenticazione utilizzando il comando grep o in qualsiasi altro modo tu preferisca.
$ grep 'password' /var/log/secure
Oppure,
$ grep 'password' /var/log/auth.log
Risultato di esempio:
[...] May 8 10:40:36 ostechnix sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2 May 8 10:40:56 ostechnix sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2
Hai notato le righe "Password accettata per..." nell'output sopra? Significa che l'utente sta accedendo ai sistemi remoti tramite password. Come per l'output sopra, gli utenti "senthil" e "sk" stanno accedendo al sistema remoto utilizzando l'autenticazione con password ssh.
Se l'utente utilizza l'autenticazione basata su chiave, probabilmente vedresti un output come di seguito:
May 8 10:40:56 ostechnix sshd[3405]: Accepted publickey for sk from 192.168.225.37 port 41992 ssh2
Naturalmente, è un po' difficile se il file di registro è molto lungo con un numero elevato di voci. In tal caso, usa "tail"
comando per visualizzare un determinato numero di file di registro.
Ad esempio, il comando seguente visualizzerà solo le ultime 10 voci del file di registro:
$ grep 'password' /var/log/auth.log | tail -n 10
Risultato di esempio:
May 8 10:21:49 ostechnix sshd[2135]: Accepted password for senthil from 192.168.225.37 port 41920 ssh2 May 8 10:21:57 ostechnix sshd[2222]: Accepted password for sk from 192.168.225.37 port 41922 ssh2 May 8 10:24:57 ostechnix sshd[2360]: Accepted password for senthil from 192.168.225.37 port 41924 ssh2 May 8 10:25:04 ostechnix sshd[2448]: Accepted password for sk from 192.168.225.37 port 41926 ssh2 May 8 10:29:40 ostechnix sshd[2663]: Accepted password for senthil from 192.168.225.37 port 41938 ssh2 May 8 10:29:55 ostechnix sshd[2765]: Accepted password for sk from 192.168.225.37 port 41940 ssh2 May 8 10:39:34 ostechnix sshd[3064]: Accepted password for senthil from 192.168.225.37 port 41986 ssh2 May 8 10:39:55 ostechnix sshd[3184]: Accepted password for sk from 192.168.225.37 port 41988 ssh2 May 8 10:40:36 ostechnix sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2 May 8 10:40:56 ostechnix sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2
Puoi anche usare -f
contrassegna per seguire il registro durante il test.
$ grep 'password' /var/log/auth.log | tail -f -n 10
Se desideri controllare l'intero file di registro per trovare "password" voci pagina per pagina, usa "less"
comando:
$ grep 'password' /var/log/auth.log | less
Per trovare tutti i log relativi a sshd
(tentativi riusciti o falliti), sostituisci "password" con "sshd" in tutti i comandi precedenti.
$ grep 'sshd' /var/log/auth.log | tail -n 10
Altre guide relative a SSH:
- Consenti o nega l'accesso SSH a un particolare utente o gruppo in Linux
- Limita il numero di accessi SSH per utente/gruppo/sistema
- Limita l'accesso ai server Linux utilizzando i wrapper TCP
- Esegui comandi su sistemi Linux remoti tramite SSH
- Come creare alias SSH in Linux
- Come inserire SSH in una directory particolare su Linux
- SSLH:condividi la stessa porta per HTTPS e SSH
- ScanSSH:server SSH veloce e scanner proxy aperto
- Come riprendere i file trasferiti parzialmente su SSH utilizzando Rsync
- Come eseguire un comando singolo su più sistemi remoti contemporaneamente
- DSH:esegui un comando Linux su più host alla volta
- Come impedire la disconnessione della sessione SSH in Linux
- Come abilitare SSH su FreeBSD
Spero che questo aiuti.