Registro SFTP: existe uma maneira?

91

Gostaria de saber se existe uma maneira de registrar os comandos recebidos pelo servidor. Pode ser todos os comandos SSH, desde que inclua informações sobre comandos relacionados à transferência de arquivos.

Estou tendo problemas com um cliente SFTP e o criador está solicitando logs, mas não consigo encontrar nenhum registro existente.

Estou procurando fazer logon no CentOS ou no OS X (embora eu suspeite que seja possível, seria semelhante nos dois).

Darryl Hein
fonte

Respostas:

94

O OpenSSH versões 4.4p1 e posteriores (que devem incluir a versão mais recente do CentOS 5) têm capacidade de registro SFTP embutida - você só precisa configurá-lo.

Encontre isso em seu sshd_config (em centos, arquivo / etc / ssh / sshd_config ):

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

e mude para:

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

INFO é apenas um nível de detalhe sobre o que você vê por padrão - fornece informações detalhadas sobre transferências de arquivos, alterações de permissão, etc. Se você precisar de mais informações, poderá ajustar o nível de log de acordo. Os vários níveis (em ordem de detalhes) são:

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

Qualquer coisa em VERBOSE é provavelmente mais informações do que você procura, mas pode ser útil.

Finalmente, reinicie o serviço SSH para atualizar as alterações (centos):

systemctl restart sshd
rvf
fonte
1
Eu não sabia que você poderia registrar SFTP assim, é disso que eu preciso. Onde ele armazena os logs? /var/log/auth.log?
Rory
4
Depende da sua configuração do syslog. Usando o nível de log INFO, a maioria dos syslog.conf padrão coloca essas entradas em / var / log / messages.
RVF
4
É possível fazer isso usando o servidor sftp interno?
Cian
isso funciona perfeitamente para SFTP, mas e o SCP? Eu não encontrei nenhuma entrada no log de um arquivo copiado com o comando scp, embora o log foi bem sucedido para sftp
Ale
2
No Ubuntu, esses logs são padrão para /var/log/auth.log. Adicione -f USERa essa Subsystemlinha de configuração para enviá-los /var/log/syslog.
Jogue fora a conta
43

As mesmas opções de log para o servidor sftp também funcionam para o sftp interno. Aqui está um exemplo do meu / etc / ssh / sshd_config:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

Com o registro no nível INFO, as mensagens ativadas começarão a aparecer em / var / log / messages (pelo menos em Distros baseadas no 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
fonte
2
Descobri que, no meu caso, ele registra apenas sessões sftp como root, mas não para o meu teste de usuário chroot. Eu não entendo o porquê, você tem alguma idéia?
precisa saber é o seguinte
4
Parece que você precisa /dev/logna sua área 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. Os usuários ainda terão acesso de gravação a esse / dev / log, mas como é um soquete, não poderão causar muito dano se tudo o que tiverem acesso for sftp.
5133 sch
1
Obrigado pela dica. Eu não consigo fazê-lo funcionar, no entanto. Você poderia ser um pouco mais específico?
user1092608
4
FWIW: No ArchLinux Wiki há uma boa descrição sobre como habilitar o log no ambiente chroot: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Kaii
0

Para esclarecer os comentários acima:

Se você tiver configurado o sftp usando uma prisão (ambiente chroot), não poderá fazer o logon sem o recurso de configuração adicional. O log não pode ser gravado no ambiente chroot, você precisa criar uma ligação de montagem ou um soquete. Eu recomendaria o uso de um soquete, pois é um recurso fornecido pelo syslog-ng e pelo rsyslog (e talvez muito mais).

Para aqueles que estão usando o syslog-ng, consulte https://wiki.archlinux.org/index.php/SFTP_chroot#Logging . Para quem está usando o rsyslog, https://wiki.kairaven.de/open/os/linux/sftpssh é seu amigo.

Espero que ajude.

Phil
fonte