cómo obtener registros scp en un servidor remoto

cómo obtener registros scp en un servidor remoto

Básicamente, quiero registrar todos y cada uno de los archivos que se envían o reciben a través de SCP en el servidor.

Digamos que un usuario realiza un SCP del Servidor-1 al Servidor-2. Descubrí la manera de obtener registros del lado de los remitentes,pero ¿cómo obtener lo que se ha transferido del lado del receptor?

Quiero que los registros del lado del receptor contengan los nombres de los archivos que se le transfieren a través de SCP.

Además, para obtener registros del lado de los remitentes, estoy usando mi script bash que primero guarda el nombre del archivo en un archivo de registro y luego usa SCP para transferirlo. ¿Existe algún enfoque mejor para hacerlo?

Gracias de antemano por cualquier sugerencia.

Respuesta1

Acabo de encontrar una solución interesante que podría interesar a otros:

Cuando se usa, scpen realidad también llama al binario en el servidor con la -fbandera. Esto significa que se puede escribir un contenedor simple para el lado del servidor scp, como este:

Primero cambia scpel nombre de tu original:

mv /usr/bin/scp /usr/bin/scp-org

Luego cree un script simple en su nombre:

sudo nano /usr/bin/scp

con el contenido:

#/bin/bash

scp-org $@ | tee >(grep -aEo "[CD][0-7]{4} [0-9]* .*$" --line-buffered >> /var/log/scp.log)

Por supuesto, esto podría perfeccionarse, pero funciona como ejemplo. Ahora puede usar tail -f /var/log/scp.logy ver todos los archivos que se transfieren en tiempo real

Respuesta2

Puede intentar reemplazar el scpcomando en el servidor por una versión modificada que haga lo que necesita. scpes un programa muy simple y agregarle código de registro no debería ser una tarea desalentadora.

Respuesta3

Probablemente esté utilizando el paquete de software OpenSSH. La scputilidad OpenSSH no registra nada. Admite resultados de depuración para la sesión SSH subyacente, pero no registrará las transferencias de archivos reales que se están llevando a cabo.

De manera similar, el servidor OpenSSH se puede configurar para registrar detalles sobre lo que está haciendo, y se puede configurar para registrar el hecho de que un usuario se conectó y ejecutó scp, pero no registrará las transferencias de archivos reales que se están llevando a cabo.

Si no puede lograr que estos usuarios utilicen SFTP, existen tres métodos disponibles:

  1. Investigue servidores SSH/SFTP/SCP alternativos (en otras palabras, comerciales). Por lo general, deberían admitir el registro de transferencias de archivos.

  2. Reemplace la scputilidad en el servidor con una que registre los datos que desea. OpenSSH es de código abierto. Alguien que sepa programar en C para Unix podríadescargar la fuentey modificarlo.

  3. Reemplace la scputilidad con un "contenedor" que inicia el programa scp original y monitorea lo que hace. Existen herramientas de depuración para Unix que pueden monitorear lo que está haciendo otro proceso.

Necesitaba registrar scptransferencias una vez y utilicé el tercer método. Escribí un script Perl que lanzó el programa scp original enrastro. Strace generaría los nombres de los archivos que el proceso scp abre y cierra. El script Perl analizó la salida de strace y descubrió qué archivos se estaban transfiriendo.

Respuesta4

Creo que las soluciones que sugieren crear un contenedor alrededor del scpbinario en el servidor no funcionarán con scpclientes recientes.

Since OpenSSH 8.8 (8.7 in Red Hat/Fedora builds), scp has use the SFTP protocol for transfers by default.

Para clientes más nuevos, este mecanismo de empaquetar scpen el servidor solo funcionará si el cliente invoca scpcon la -Obandera (para hacer cumplir el protocolo anterior).

Para tales necesidades, ¿tal vez usar rsyncen lugar de scppodría ayudar? rsyncparece tener la capacidad de registrar accesos a archivos: desde la rsyncd.confpágina de manual:

log format
This parameter allows you to specify the format used for logging file transfers when transfer logging is enabled.
[..]
%f the filename (long form on sender; no trailing lq/rq)

información relacionada