Monitorar cópias de arquivos com o SCP feito via SSH

2

Existe uma maneira de manter um log dos arquivos copiados usando o SCP? Eu estou administrando um servidor que contém alguns arquivos que devem ser monitorados (em uma pasta específica e suas subpastas), portanto, quando alguém os copia via SSH, o processo de cópia deve ser registrado.

Pensei em analisar o histórico de comandos Bash dos usuários e pesquisar por comandos que começam com scp , mas essa é uma invasão flagrante de privacidade e também é muito fácil para os usuários excluírem esse histórico (mesmo sem más intenções). / p>

Alguém sabe um caminho para isso? Eu posso fazer uma interface baseada na web para o servidor com nomes de usuário / senhas e log de downloads seria fácil, mas estou interessado em uma solução "bare-metal", se houver uma.

EDIT: Eu examinei as opções de log do SSHD, como o FascistLogging ou o log de depuração, mas elas não pareciam muito apropriadas. Eles são realmente a solução?

EDIT 2: Estou começando a acreditar que essa questão não deveria estar no Stack Overflow, mas sim no Server Fault ... O que devo fazer?

    
por CamilB 23.05.2012 / 07:50

5 respostas

7

Eu usaria incron . Ele utiliza o subsistema inotify do kernel do Linux e, se alguma árvore / arquivo de diretório monitorado for modificado, você poderá executar qualquer coisa que desejar. O formato do arquivo incrontab é muito simples, por exemplo

/your/directory IN_MODIFY /usr/local/bin/log_file_modifications.sh $@/$#

executaria /usr/local/bin/log_file_modifications.sh sempre que algo fosse modificado na árvore de diretórios /your/directory , chamando o script com o caminho completo ( $@ argument) e o arquivo que foi modificado ( $# argument).

Seu script pode ser tão simples quanto

#!/bin/bash
logger -t modification_stalker "Yo dawg, these files got modified $1 $2 ..." 
    
por 23.05.2012 / 10:30
1

A opção sshd é inútil aqui. scp apenas executa algo como 'scp -t - dest_file' no host remoto.

Maneira mais simples - criar um wrapper em torno do programa scp real, para registrar os argumentos da linha de comando.

    
por 23.05.2012 / 08:47
1

I realise now this is only sftp and not scp as originally requested however I'm leaving the answer here to help people.

Estou tentando encontrar a resposta para mim mesmo, então aqui vai.

Primeiramente, você precisa ativar o registro do subprograma sftp que o ssh usa:

Em / etc / ssh / sshd_config

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

Em seguida, reinicie o sshd, mas a sua distribuição em particular faz isso:

service sshd restart

Agora, você deve ver as mensagens de log do scp aparecendo em algo como / var / log / messages, ou talvez /var/log/auth.log dependendo da sua configuração do syslog.

Estou usando o syslog-ng e quero que meus logs para transferências sftp sejam separados do restante dos logs para ssh.

Em /etc/syslog-ng/syslog-ng.conf:

#sftp configuration
destination sftp { file("/var/log/sftp.log"); };
filter f_sftp { program("sftp-server"); };
log { source(s_src); filter(f_sftp); destination(sftp); };

Isto significa que os logs agora vão para /var/log/sftp.log - você pode precisar editar o programa ("sftp-server") para combinar com qualquer programa que esteja usando no SSH, pois há várias opções

Finalmente, para impedir que os logs também entrem no log ssh, filtramos:

        filter f_auth { facility(auth, authpriv) and not filter(f_debug) and not filter(f_sftp); };

Reinicie o syslog-ng (ou seu daemon syslog): * Quando tentei apenas recarregar as alterações não funcionou, tive que reiniciá-lo.

service syslog-ng restart
    
por 29.10.2015 / 09:47
0

OpenSSH suporta registro de scp . Portanto, se você ativá-lo no modo VERBOSE , verá os diretórios que seus clientes percorreram.

Para ver a verificação de log

/var/log/auth.log
    
por 23.05.2012 / 10:32
0

Você pode configurar o nível de registro detalhado para o sshd e usar algum software de auditoria, por exemplo, auditd para criar relatórios baseados em mensagens de log.

    
por 23.05.2012 / 10:32