È possibile ottenere OpenSSH per registrare la chiave pubblica utilizzata nell'autenticazione?


27

Ho un sistema di produzione in cui diverse persone possono accedere a un singolo account: l'account è per l'applicazione e non per la persona in quanto non abbiamo account personali sui server di produzione.

Ai fini del controllo, voglio essere in grado di dire chi ha effettuato l'accesso a che ora e, mentre usiamo le chiavi SSH per accedere, sembra logico seguirlo (poiché non esiste un altro identificatore da tracciare).

Quando SSH autentica un utente, registra il nome utente nel registro di sicurezza del sistema, ma non registra quale delle chiavi pubbliche autorizzate è stata utilizzata nel login. È possibile ottenere OpenSSH per segnalare anche quale chiave pubblica è stata utilizzata, o forse solo il commento associato a quella chiave?

Il sistema operativo in uso è CentOS 5.6, ma mi piacerebbe anche sapere se è possibile su altri sistemi operativi.

Risposte:


33

Se si solleva LogLevel su VERBOSE in / etc / sshd / sshd_config, verrà registrata l'impronta digitale della chiave pubblica utilizzata per autenticare l'utente.

LogLevel VERBOSE

poi ricevi messaggi come questo

Jul 19 11:23:13 centos sshd[13431]: Connection from 192.168.1.104 port 63529
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13432]: Postponed publickey for user from 192.168.1.104 port 63529 ssh2
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13431]: Accepted publickey for user from 192.168.1.104 port 63529 ssh2

Puoi usare

 ssh-keygen -lf /path/to/public_key_file

per ottenere l'impronta digitale di una particolare chiave pubblica.


2
Grazie! Devo confermare le impronte digitali delle chiavi rispetto al authorized_keysfile, quindi ho realizzato questo piccolo script per stampare le impronte digitali delle chiavi autorizzate:(p="$(mktemp)";cat ~/.ssh/authorized_keys|while IFS="$(printf "\n")" read key; do echo $key > $p; ssh-keygen -lf $p; done; rm -f $p)
Guss

Ho notato che SSH ora registra la chiave due volte per ogni accesso: hai idea del perché e / o come ottenerla per registrarla una volta?
Guss,

Questo è un livello di dettaglio che non conosco. Riesci a fermarlo, probabilmente non senza curiosare con il codice sorgente.
user9517 supporta GoFundMonica il

2
Questa discussione sembra rilevante. Trova la chiave corrispondente due volte: una volta per determinare se la chiave sarebbe accettabile o meno, quindi una seconda volta per verificare la firma fornita dal client.
mpontillo,

3

Se la tua gente sta usando ssh-agent, potresti metterlo nel tuo .bashrc:

SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo `/bin/date` $SSH_KEY_NAME >> ~/.login.log

È una buona idea, sfortunatamente uno dei motivi per cui voglio registrare questo è che sto usando i comandi authorized_keys per gli utenti che voglio registrare, e normalmente non ottengono una shell bash.
Guss,

0

Prova a giocare con il LogLevelparametro in sshd_config. Per i dettagli, consultare man sshd_config


0

3
Benvenuti in Server Fault! In generale, ci piace che le risposte sul sito siano in grado di resistere da sole - I collegamenti sono fantastici, ma se quel collegamento si rompe la risposta dovrebbe avere informazioni sufficienti per essere ancora utile. Si prega di considerare la modifica della risposta per includere ulteriori dettagli. Vedi le FAQ per maggiori informazioni.
slm,
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.