Pregunta SFTP logging: ¿hay una manera?


Me pregunto si hay una manera de registrar los comandos recibidos por el servidor. Puede ser todos los comandos SSH, siempre que incluya información sobre los comandos relacionados con la transferencia de archivos.

Tengo problemas con un cliente SFTP y el creador está solicitando registros, pero no puedo encontrar ningún registro existente.

Estoy mirando para iniciar sesión en ambos o en CentOS o OS X (aunque sospecho que si es posible, sería similar en ambos).


82
2017-10-11 01:42


origen




Respuestas:


Las versiones de OpenSSH 4.4p1 y superiores (que deberían incluir la última versión con CentOS 5) tienen la capacidad de registro SFTP incorporada, solo necesita configurarla.

Encuentra esto en tu sshd_config (en centos, archivo / etc / ssh / sshd_config):

Subsystem       sftp    /usr/libexec/openssh/sftp-server

y cambiarlo a:

Subsystem       sftp    /usr/libexec/openssh/sftp-server -l INFO

INFO es solo un nivel de detalle sobre lo que está viendo de forma predeterminada: proporciona información detallada sobre transferencias de archivos, cambios de permisos, etc. Si necesita más información, puede ajustar el nivel de registro en consecuencia. Los distintos niveles (en orden de detalle) son:

QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3

Cualquier cosa sobre VERBOSE es probablemente más información de la que está buscando, pero podría ser útil.

Finalmente reinicie el servicio SSH para actualizar los cambios (centos):

systemctl restart sshd

86
2017-10-13 23:21



No sabía que pudieras registrar SFTP de esa manera, eso es lo que necesito. ¿Dónde almacena los registros? /var/log/auth.log? - Rory
Depende de su configuración de syslog. Usando el nivel de registro INFO, la mayoría de los archivos syslog.conf predeterminados colocan esas entradas en / var / log / messages. - rvf
¿Es posible hacer esto usando el servidor sftp interno? - Cian
esto funciona perfectamente para SFTP, pero ¿qué pasa con SCP? No encontré ninguna entrada en el registro para un archivo copiado con el comando scp, aunque el registro fue exitoso para sftp - Ale
En Ubuntu, estos registros están predeterminados en /var/log/auth.log. Añadir -f USER a ese Subsystem línea de configuración para enviarlos a /var/log/syslog. - Throwaway Account 3 Million


Los mismos conmutadores en torno al registro para sftp-server también funcionan para internal-sftp. Aquí hay un ejemplo de mi / etc / ssh / sshd_config:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

Con el registro de nivel INFO habilitado, los mensajes comenzarán a aparecer en / var / log / messages (al menos en las distribuciones basadas en Red Hat):

May 27 05:58:16 test-server sshd[20044]: User child is on pid 20049
May 27 05:58:16 test-server sshd[20049]: subsystem request for sftp by user test-user
May 27 05:58:16 test-server internal-sftp[20050]: session opened for local user test-user from [192.168.1.1]
May 27 05:58:16 test-server internal-sftp[20050]: received client version 3
May 27 05:58:16 test-server internal-sftp[20050]: realpath "."
May 27 05:58:21 test-server internal-sftp[20050]: opendir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: closedir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: lstat name "/home/test-user/upload"
May 27 05:58:21 test-server internal-sftp[20050]: realpath "/home/test-user/upload/"
May 27 05:58:21 test-server internal-sftp[20050]: stat name "/home/test-user/upload"
May 27 05:58:24 test-server internal-sftp[20050]: open "/home/test-user/upload/test-file.pdf" flags WRITE,CREATE,TRUNCATE mode 0664
May 27 05:58:25 test-server internal-sftp[20050]: close "/home/test-user/upload/test-file.pdf" bytes read 0 written 1282941

39
2018-05-29 12:42



Descubrí que, en mi caso, solo registra sesiones sftp para root, pero no para mi prueba de usuario chroot. No entiendo por qué, ¿tienes alguna idea? - JohnnyFromBF
Parece que necesitas /dev/log en tu zona de chroot. Algo como sudo mkdir /chrooted/area/dev, sudo touch /chrooted/area/dev/log, sudo chmod 511 /chrooted/area/dev, sudo chattr +i /chrooted/area/dev, sudo mount --bind /dev/log /chrooted/area/dev/log. Los usuarios seguirán teniendo acceso de escritura a ese / dev / log, pero como es un socket, no pueden hacer mucho daño si todo lo que tienen acceso es sftp. - sch
Gracias por la pista. Sin embargo, parece que no puedo hacer que funcione. ¿Podrías ser un poco más específico? - user1092608
FWIW: En la Wiki de ArchLinux hay una buena descripción de cómo habilitar el registro en el entorno chroot: wiki.archlinux.org/index.php/SFTP_chroot#Logging - Kaii