Registro SFTP: ¿hay alguna manera?

92

Me pregunto si hay una manera de registrar los comandos recibidos por el servidor. Pueden 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 buscando iniciar sesión tanto en CentOS como en OS X (aunque sospecho que si es posible, sería similar en ambos).

Darryl Hein
fuente

Respuestas:

94

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

Encuentre esto en su sshd_config (en centos, archivo / etc / ssh / sshd_config ):

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

y cámbielo 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 puede ser útil.

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

systemctl restart sshd
rvf
fuente
1
No sabía que podías registrar SFTP así, eso es lo que necesito. ¿Dónde almacena los registros? /var/log/auth.log?
Rory
44
Depende de su configuración de syslog. Usando el nivel de registro INFO, la mayoría de los syslog.conf predeterminados colocan esas entradas en / var / log / messages.
rvf
44
¿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 de un archivo copiado con el comando scp, aunque el registro fue exitoso para sftp
Ale
2
En Ubuntu, estos registros están predeterminados en /var/log/auth.log. Agregue -f USERa esa Subsystemlínea de configuración para enviarlos /var/log/syslog.
Deseche la cuenta
43

Los mismos cambios en el registro para sftp-server también funcionan para sftp interno. 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
slm
fuente
2
Descubrí que en mi caso solo registra sesiones sftp para root pero no para mi prueba de usuario chrooteada. No entiendo por qué, ¿tienes alguna idea?
JohnnyFromBF
44
Parece que lo necesitas /dev/logen tu área de chroot. Algo así 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 aún tendrán 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
1
Gracias por la pista. Sin embargo, parece que no puedo hacer que funcione. ¿Podrías ser un poco más específico?
user1092608
44
FWIW: En ArchLinux Wiki hay una buena descripción sobre cómo habilitar el inicio de sesión en el entorno chroot: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Kaii
0

Para aclarar los comentarios anteriores:

Si ha configurado sftp utilizando una cárcel (entorno chroot), no puede iniciar sesión sin una configuración adicional. El registro no se puede escribir en el entorno chroot, debe crear un enlace de montaje o un socket. Recomendaría usar un socket, ya que es una característica entregada por syslog-ng y rsyslog (y tal vez muchos más).

Para aquellos que usan syslog-ng, eche un vistazo a https://wiki.archlinux.org/index.php/SFTP_chroot#Logging . Para aquellos que usan rsyslog, https://wiki.kairaven.de/open/os/linux/sftpssh es tu amigo.

Espero que ayude.

Phil
fuente