在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傳輸速度限制。選擇適合你需求的方法進行實施。