Acho que uma solução melhor é monitorar o uso da largura de banda por número de porta do cliente. Em seguida, você pode combinar esse monitoramento com números de porta de auth.log
para calcular a soma de todas as conexões de um usuário.
Não há uma maneira fácil de rastrear o uso de largura de banda por usuário em tempo real para SSH e SFTP. Eu acho que atribuir uma porta para cada usuário pode ajudar, mas estou querendo saber se minha abordagem é viável.
(Eu não quero lançar várias instâncias do sshd como proposto na pergunta 247291 .)
Em /etc/ssh/sshd_config
:
Port 31001
Port 31002
Port 31003
Subsystem sftp /usr/bin/sftp-wrapper.sh
O arquivo sftp-wrapper.sh
inicia o servidor sftp apenas se a porta for a correta:
#!/bin/sh
mandatory_port=3'id -u'
current_port='echo $SSH_CONNECTION | awk '{print $4}''
if [ $mandatory_port -eq $current_port ]
then
exec /usr/lib/openssh/sftp-server
fi
Algumas linhas em /etc/profile
impedem que o usuário se conecte na porta errada:
if [ -n "$SSH_CONNECTION" ]
then
mandatory_port=3'id -u'
current_port='echo $SSH_CONNECTION | awk '{print $4}''
if [ $mandatory_port -ne $current_port ]
then
echo "Please connect on port $mandatory_port."
exit 1
fi
fi
Agora, deve ser fácil monitorar o uso da largura de banda por usuário. Um aplicativo baseado em Rrdtool poderia produzir gráficos como este:
Eu sei que este não será um cálculo perfeito do uso da largura de banda: por exemplo, se alguém iniciar um ataque bruteforce na porta 31001, haverá muito tráfego nessa porta, embora não seja de Bob. Mas isso não é um problema para mim: eu não preciso de um cálculo exato do uso de largura de banda por usuário, mas um indicador que está aproximadamente correto em situações padrão.
Acho que uma solução melhor é monitorar o uso da largura de banda por número de porta do cliente. Em seguida, você pode combinar esse monitoramento com números de porta de auth.log
para calcular a soma de todas as conexões de um usuário.
Tags ssh sftp port bandwidth-measuring