
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 auditctl
deberí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.
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.