it-swarm-es.com

¿Vista en vivo de los comandos de Linux Shell ejecutados por otro usuario?

¿Es posible que el usuario root en Linux tenga una vista en tiempo real (o casi en tiempo real) de los comandos de Shell que ejecuta otro usuario conectado a través de un terminal o SSH? Obviamente se almacenan en .bash_history, pero eso solo se guarda cuando el usuario cierra la sesión y también se puede deshabilitar.

Editar: idealmente, algo que se pueda encender y apagar fácilmente.

28
EMP

como root, puede reemplazar su Shell con un simple script de contenedor que registra sus comandos antes de pasarlos al Shell real. Esto solo funcionaría antes de que inicien sesión.

17
Tim Howland

Use sniffy si desea entrar en la sesión del usuario o screen -x si tienes cooperación.

Sin embargo, tenga en cuenta que espiar a sus usuarios puede estar sujeto a regulaciones o incluso completamente ilegal según su legislación local.

9
David Schmitt

Cambiar el Shell es muy trivial para eludir, parchear el Shell en sí es mejor, pero debes parchear todos los shells. Nuestro cracker favorito usa esto, como un bono que no se molesta en deshabilitar bash_history.

ssh Host /bin/sh -i  

Snoopy es una envoltura alrededor de las funciones ejecutivas, y registra cualquier binario externo que se ejecuta (no las funciones integradas de Shell)

La sugerencia de @David Schmitt sniffy usa un método mejor, toca el pseudoterminal.

ttysnoop usa el mismo método, pero no se mantiene. (Probablemente tuve problemas para registrar conexiones ssh, no puedo recordar)

Puede intentar parchar ssh para registrar una sesión, pero ese parche es ¡viejo.

pseudopod y rootsh se pueden usar para registrar sudos legítimos. Y shwatcr es otra cosa para monitorear los inicios de sesión.

7
hayalci

Sysdig es una poderosa herramienta de exploración a nivel de sistema; esto es lo que quieres;)

ejemplo:

sysdig -i spy_users

Categoría: Seguridad

spy_users Muestra la actividad interactiva del usuario

enumera todos los comandos que los usuarios inician de manera interactiva (por ejemplo, desde bash) y cada directorio que visitan los usuarios

4
Andrzej Chabierski

Si está cooperando, puede usar pantalla GN entre dos usuarios: haga que uno establezca la sesión de pantalla, luego haga que el otro se una usando screen -x.

Si desea que el root "espíe" a otros usuarios sin su conocimiento, la solución mejor y más eficiente podría ser el software/hardware keylogger.

4
Tim

Puedes probar el parche bash-BOFH. Busca el parche.

2
squillman

Escribí un método para registrar todos los comandos/bash 'bash' en un archivo de texto o un servidor 'syslog' sin usar un parche o una herramienta ejecutable especial.

Es muy fácil de implementar, ya que es un simple shellscript que debe llamarse una vez en la inicialización de 'bash'.

Vea el método aquí: http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger

1

Snoopy está destinado al registro de comandos ligero.

Si desea ver en vivo los comandos ejecutados en su sistema, puede ser este. Advertencia: snoopy no es una solución de auditoría adecuada y puede eludirse fácilmente.

Sin embargo, si desea ver todos los caracteres escritos en la terminal, tendrá que usar otra herramienta.

Divulgación: Soy actual mantenedor de snoopy.

1
Bostjan Skufca
function spy() { 
   ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ; 
   /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
        | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; 
}

[436] [email protected] ~ $ w<br>
 09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20<br>
USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT<br>
klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd                                      <br>
klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]<br>
klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager<br>
klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash<br>
klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w<br>
klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder<br>
[437] [email protected] ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>

Parece funcionar bastante bien si no te importa clasificar un montón de saltos de línea.

1
Jessica Parker