Como obter notificações de transferências de arquivos SSH?

1

Gostaria de saber se existe um método ou programa que possa monitorar as transferências de arquivos SSH e enviar um email quando um arquivo (entrada) foi transferido?

(A outra alternativa seria, pelo menos, receber uma notificação quando alguém se logar via SSH, embora seria ideal se o email contivesse informações sobre qual arquivo foi transferido)

Além disso, como verificar se há usuários ativos envolvidos em uma transferência de arquivos ssh?

Eu entendo que essa é uma pergunta da OSX, mas achei que seria mais adequado para o site do SuperUser. Por favor, vote para mover se estou enganado:)

    
por OrangeBox 31.08.2012 / 06:37

2 respostas

2

Para verificar quais usuários têm uma sessão SFTP ativa agora, você pode procurar pelo processo sftp-server . Observe que a presença do processo não significa necessariamente que eles estejam transferindo arquivos no momento.

$ ps uax | grep '[s]ftp-server'
1000     15115  0.0  0.0  12532   728 ?        Ss   14:38   0:00 /usr/lib/openssh/sftp-server

(Caso você queira saber, os colchetes no padrão são usados como um "hack" para ocultar o próprio comando grep da saída.)

Script de shell (bash)

#!/usr/bin/env bash

pids=$(pgrep -x sftp-server)
users=()

for pid in "${pids[@]}"; do
    users+=("$(ps --no-headers -o user 15115)")
done

echo "Users with active SFTP sessions: ${users[*]}"

Se você deseja enviar um usuário por linha, substitua a última linha por:

echo "Users with active SFTP sessions:"
echo
for user in "${user[@]}"; do
    echo "$user"
done

Como alternativa, você pode usar o sistema de arquivos /proc em vez de depender de pgrep . Isso não está detalhado nesta resposta.

    
por 04.08.2013 / 14:49
0

Este é um script de exemplo para enviar uma mensagem personalizada por e-mail.

echo "User $USER just logged in * $(date '+%d-%m-%Y %T') |
    sendmail -q -u "SSH Login" -f 'Originator <[email protected]>' \
             -t 'Your Name <[email protected]>' -s smtp.server.com &

Para enviar e-mail, você precisará do pacote sendmail instalado. Leia a página do manual de sendmail para mais detalhes.

Você pode colocar um script como este no .bash_login do usuário desejado para que você receberá uma notificação por e-mail sempre que a pessoa usar o login do terminal e o login sucede. (O SSH usa o login do terminal.)

    
por 10.08.2013 / 21:26