Comandos de registro ejecutados sobre ssh

8

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

Decir,

ssh something@server.com COMMAND

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

Hice una búsqueda exhaustiva pero no pude encontrar nada.

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

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

Puedo obtener una vista en vivo con

pstree -p | grep ssh

Intenté Snoopy, audited y sudosh pero no pude registrar esos comandos a través de ssh.

Hay un http://freecode.com/projects/shwatchr . pero no puedo descargar el script para probar.

¿Hay alguna otra manera de hacer esto?

Gracias.........

Prashanth
fuente

Respuestas:

4

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

man auditctl debería darte un punto de partida.

Jenny D
fuente
Buen consejo, pero para mí demasiado abstracto. ¿Cómo usar auditctlpara registrar comandos ssh?
guettli
3

Hice una prueba usando esta opción en mi servidor suse lab y funciona, pero tal vez hay una mejor manera.

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
c4f4t0r
fuente
Esto registra el comando enviado pero no lo ejecuta en el sistema remoto.
Michael McGarrah
1

He encontrado una manera de hacer esto. Hay un script en perl escrito por John M. Simpson ( https://www.jms1.net/ ).

Todo lo que tienes que hacer es agregar

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

antes de cada tecla en sus ~ / .ssh / optional_keys

Funciona solo si tiene un ssh sin contraseña, pero esto resuelve mi propósito hasta cierto punto.

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

Prashanth
fuente
1

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 las teclas ssh. Hice un script bash corto 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-command y luego lo hice ejecutable ( chmod +x ~/bin/log-commands).

En el archivo authorised_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:

command = "/ home / tricky / bin / log-command" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ ...... 6J0C1 [email protected]

Si alguien conoce el registro pero no quiere que vea los comandos, simplemente puede entrar en una sesión interactiva. Como mencionaste, ya intentaste snoopy, lo que hará eso por ti. Las alternativas populares que no he probado son rooth, sudosh y log-user-session.

zaTricky
fuente