在Debian上配置SFTP传输速度限制可以通过多种方法实现,以下是使用tc
(Traffic Control)工具和sshd_config
文件进行配置的步骤:
tc
工具安装tc
工具:
sudo apt-get update
sudo apt-get install iproute2
创建一个qdisc(队列规则):
假设你的网络接口是eth0
,你可以创建一个htb(Hierarchical Token Bucket)队列规则来限制带宽。
sudo tc qdisc add dev eth0 root handle 1: htb default 30
创建一个类并设置带宽限制: 创建一个类并设置其带宽限制为1Mbps(例如)。
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
创建一个过滤器来匹配SFTP流量: 假设SFTP使用默认的SSH端口22,你可以创建一个过滤器来匹配该端口的流量。
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:1
验证配置: 使用以下命令查看当前的队列规则和类。
sudo tc -s qdisc ls dev eth0
sudo tc -s class ls dev eth0
sudo tc -s filter ls dev eth0
sshd_config
和pam_limits.conf
这种方法通过限制用户的带宽来实现速度控制,但需要额外的工具如trickle
。
安装trickle
工具:
sudo apt-get update
sudo apt-get install trickle
编辑sshd_config
文件:
打开/etc/ssh/sshd_config
文件并添加以下行来限制SFTP用户的带宽。
Match Group sftpusers
ForceCommand /usr/bin/trickle -d 1024 -u 1024 sftp-server
创建一个用户组并添加SFTP用户:
创建一个名为sftpusers
的用户组,并将需要限制带宽的SFTP用户添加到该组。
sudo groupadd sftpusers
sudo usermod -aG sftpusers your_username
重启SSH服务:
sudo systemctl restart sshd
fail2ban
和自定义脚本这种方法通过监控SSH连接并动态调整带宽来实现速度控制。
安装fail2ban
:
sudo apt-get update
sudo apt-get install fail2ban
配置fail2ban
:
编辑/etc/fail2ban/jail.local
文件并添加以下内容来限制SFTP用户的带宽。
[DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
[sftp]
enabled = true
port = ssh
filter = sftp
action = iptables-multiport[name=SFTP, port="ssh", protocol=tcp]
logpath = /var/log/auth.log
banaction = iptables-multiport
创建自定义脚本: 创建一个脚本来动态调整带宽限制。
sudo nano /etc/fail2ban/action.d/iptables-multiport.conf
添加以下内容:
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = iptables -I INPUT -p tcp --dport <port> -m state --state NEW -j DROP
actionunban = iptables -D INPUT -p tcp --dport <port> -m state --state NEW -j DROP
重启fail2ban
服务:
sudo systemctl restart fail2ban
通过以上方法,你可以在Debian上配置SFTP传输速度限制。选择适合你需求的方法进行实施。