¿Es posible averiguar qué clave ssh se utilizó para acceder a una cuenta? Tengo una cuenta en un servidor a la que dejo que varias personas (¡de confianza!) Tengan acceso a través de ssh. Me resultaría útil poder saber quién inició sesión y cuándo. Tengo acceso a la raíz para poder mirar los registros, pero no parece haber nada allí. ¿Hay algún interruptor de configuración que ponga alguna forma de identificar la clave en los registros?
ssh
logs
authentication
Espacio de bucle
fuente
fuente
Respuestas:
Si ingresa al archivo de configuración sshd (generalmente
/etc/ssh/sshd_config
) y cambia la directiva LogLevel a VERBOSE:... puedes ver algo como esto en los registros:
De
man sshd_config
:fuente
sed -ne "/sshd.$PPID.:.*matching DSA key/{s/^.* //g;p;q}" /var/log/auth.log
sed
!q
Directiva, la línea de la tienda hasta el final del archivo ... línea de sed convertido en:sed -ne "/sshd.$PPID.:.*matching DSA key/{s/^.* //g;h};\${x;p}" /var/log/auth.log
. Definitivamente: ¡Me encanta sed!Algo similar a la respuesta de @ user37161 . Si la cuenta compartida está ejecutando un shell personalizado y el shell necesita saber qué usuario está allí, entonces ejecutar el script "wrapper" podría no ser suficiente, ya que la información allí no se pasa al shell personalizado, excepto a través de métodos que podrían causar una carrera condiciones
En su lugar, puede usar la
environment=
opción en el archivo Authorized_keys para establecer una variable de entorno, que el shell personalizado puede leer.Dentro de su
.ssh/authorized_keys
archivo, anteponga cada línea con un conjunto de variables de entorno, como el siguiente:Luego, el shell personalizado, o cualquiera de los diversos scripts rc, puede leer la
$REMOTEUSER
variable y tomar la acción adecuada.Sin embargo, tenga en cuenta que si está utilizando un shell estándar, entonces el usuario conectado puede modificar el archivo para frustrar varias cosas. Además, existen algunos riesgos al permitir a los usuarios establecer variables de entorno como
LDPRELOAD
. Ver lasshd_config
documentación sobrePermitUserEnvironment
.fuente
Actualizar 2016-10-31 sobre el formato de registro
Algunas secuencias de comandos para una instalación adecuada
Hay un método completamente utilizable para rastrear / registrar conexiones ssh por clave con la experencia de nombre de usuario.
Introducción
Además de la respuesta de @Caleb, me gustaría compartir algunos pequeños trucos allí:
Nota: estoy trabajando en Debian 6.0 .
Instalación del servidor
Nivel de registro SSHD
Primero, asegúrese de que la configuración del servidor tenga un nivel de registro suficiente:
como root, esto establecerá un inicio de sesión detallado y activo:
Podría escribirse:
o en un script sed :
Que podría ejecutarse como:
Que por activar esto:
Syslog: hacer que las huellas digitales sean legibles por el usuario
Ahora tome huellas digitales en un archivo legible por el usuario:
Intente (re) iniciar sesión desde ssh para asegurarse de que
sshdusers.log
se cree un nuevo archivo (y que contenga algo), luegoUso
Esto imprimirá la huella digital de las sesiones actuales:
Complemento para
.bashrc
Y finalmente, hay un pequeño complemento para poner al final de su
/etc/bash.bashrc
usuario.bashrc
:así que después de volver a iniciar sesión desde SSH, verá:
Nota En algunas instalaciones, el archivo de clave autorizado puede tener un nombre diferente, como
$HOME/.ssh/authorized_keys2
...fuente
file
para conocer los tipos de archivos. Pero en cuanto a humano que navega los sistemas de ficheros, que tienen extensiones como.pl
,.py
,.sh
,.awk
,.sed
,.tar.gz
, o incluso.png.b64.gz
es muy útil!Supongamos que los usuarios "joe" y "deb" tienen acceso a la cuenta "x". Luego, en la cuenta x,
.ssh_authorized_keys
agrega las líneas:También en la secuencia de comandos del contenedor puede hacer lo que quiera, registrando la clave privada de Joe que ha estado usando
ssh
en una fecha y hora en particular con el comando$ORIGINAL_COMMAND
.fuente
En fedora 20+, los intentos y éxitos de inicio de sesión se guardan en /var/log/audit/audit.log. Este registro guarda los intentos de inicio de sesión (fallas y éxitos), y la huella digital clave utilizada para el intento de inicio de sesión se guarda en el campo denominado fp.
Puede comparar la huella digital clave iniciada con las huellas digitales en las claves autorizadas ejecutándola línea por línea a través de ssh-keygen -l
Una explicación detallada con respecto a los inicios de sesión ssh y su seguridad y detección de intrusos está aquí: http://vpathak.tumblr.com/post/121343814158/fedora-audit-log-with-love-from-russia
fuente
Puedes probar esto:
fuente
ssh-add -L | awk 'NR==FNR { k=$2;next } /^#/{next} $2==k { print $3;exit} $3==k {print $4;exit} ' - ~/.ssh/authorized_keys
Además de @F. Respuesta de Hauri, preparo un útil "mensaje LoggedIn"
Un archivo adicional es opcional ($ HOME / .ssh / users):
Esta parte se debe pegar en
/etc/profile
(para todos los usuarios) o en~/.bashrc
Resultado
fuente