Ber*_*rtS 5 ssh port sftp bandwidth-measuring
没有简单的方法可以实时跟踪 SSH 和 SFTP 的每个用户带宽使用情况。我认为为每个用户分配一个端口可能会有所帮助,但我想知道我的方法是否可行。
(我不想启动问题 247291 中提出的几个 sshd 实例。)
在/etc/ssh/sshd_config
:
Port 31001
Port 31002
Port 31003
Subsystem sftp /usr/bin/sftp-wrapper.sh
Run Code Online (Sandbox Code Playgroud)
sftp-wrapper.sh
仅当端口正确时,该文件才会启动 sftp 服务器:
#!/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
Run Code Online (Sandbox Code Playgroud)
中的几行/etc/profile
防止用户连接到错误的端口:
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
Run Code Online (Sandbox Code Playgroud)
现在应该很容易监控每个用户的带宽使用情况。基于 Rrdtool 的应用程序可以生成如下图表:
我知道这不会是对带宽使用情况的完美计算:例如,如果有人对端口 31001 发起暴力攻击,尽管不是来自 Bob 的流量,该端口上也会有大量流量。但这对我来说不是问题:我不需要精确计算每个用户的带宽使用情况,而是需要一个在标准情况下大致正确的指标。
我认为更好的解决方案是监控每个客户端端口号的带宽使用情况。然后,您可以将此监控与端口号结合起来,auth.log
以计算来自用户的所有连接的总和。