Comandos de registro ejecutados a través de SSH

Comandos de registro ejecutados a través de SSH

Me gustaría registrar todos los comandos ejecutados a través de SSH.

Decir,

ssh [email protected] COMMAND

Quiero iniciar sesión en "COMMAND" en server.com

Busqué mucho pero no pude encontrar nada.

Hay una pregunta más similar, pero no creo que haya una solución.

Cómo registrar "ejecución remota a través de SSH"

Puedo obtener una vista en vivo con

pstree -p | grep ssh

Probé Snoopy, auditd y sudosh, pero no pude registrar esos comandos a través de SSH.

Hay unhttp://freecode.com/projects/shwatchr, pero no puedo descargar el script para probarlo.

¿Hay alguna otra manera de hacer esto?

Respuesta1

Hice una prueba usando esta opción en el laboratorio de uso de mi servidor y funcionó, pero tal vez haya una mejor manera.

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"

Respuesta2

En lugar de centrarse en SSH, dé un paso atrás y considere utilizar auditd. Supongo que lo que realmente desea es rastrear a los usuarios, no rastrear lo que se hace desde SSH a diferencia de otros tipos de inicio de sesión.

man auditctldebería darte un punto de partida.

Respuesta3

He encontrado una manera de hacer esto. Hay un script en Perl escrito porJohn Simpson(https://www.jms1.net/).

Todo lo que tienes que hacer es agregar

command="#{path to log-session}"

antes de cada clave en su ~/.ssh/authorized_keys

Sólo funciona si tienes un ssh sin contraseña, pero esto resuelve mi propósito hasta cierto punto.

http://www.jms1.net/log-session

Respuesta4

En mi caso tenía exactamente el mismo requisito. La única advertencia con este método es que no estoy seguro de cómo hacerlo funcionar si no utiliza claves ssh. Hice un breve script bash para registrar el comando antes de ejecutarlo:

#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"

Guardé este comando en ~/bin/log-commands y luego lo hice ejecutable ( chmod +x ~/bin/log-commands).

En el archivo autorizado_keys, agregué el command=parámetro a la línea que pertenece a la clave SSH para la que quería tener registros, por lo que se vería obligado a ejecutar el script de comandos de registro:

comando="/home/tricky/bin/log-commands" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ......6J0C1 [correo electrónico protegido]

Si alguien está al tanto del registro pero no quiere que usted vea los comandos, simplemente puede iniciar una sesión interactiva. Como mencionaste, ya probaste snoopy, que lo hará por ti. Las alternativas populares que no he probado son rootsh, sudosh y log-user-session.

información relacionada