debian

如何在Debian上配置SFTP传输速度限制

小樊
45
2025-07-25 06:28:54
栏目: 智能运维

在Debian上配置SFTP传输速度限制可以通过多种方法实现,以下是使用tc(Traffic Control)工具和sshd_config文件进行配置的步骤:

方法一:使用tc工具

  1. 安装tc工具

    sudo apt-get update
    sudo apt-get install iproute2
    
  2. 创建一个qdisc(队列规则): 假设你的网络接口是eth0,你可以创建一个htb(Hierarchical Token Bucket)队列规则来限制带宽。

    sudo tc qdisc add dev eth0 root handle 1: htb default 30
    
  3. 创建一个类并设置带宽限制: 创建一个类并设置其带宽限制为1Mbps(例如)。

    sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
    
  4. 创建一个过滤器来匹配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
    
  5. 验证配置: 使用以下命令查看当前的队列规则和类。

    sudo tc -s qdisc ls dev eth0
    sudo tc -s class ls dev eth0
    sudo tc -s filter ls dev eth0
    

方法二:使用sshd_configpam_limits.conf

这种方法通过限制用户的带宽来实现速度控制,但需要额外的工具如trickle

  1. 安装trickle工具

    sudo apt-get update
    sudo apt-get install trickle
    
  2. 编辑sshd_config文件: 打开/etc/ssh/sshd_config文件并添加以下行来限制SFTP用户的带宽。

    Match Group sftpusers
        ForceCommand /usr/bin/trickle -d 1024 -u 1024 sftp-server
    
  3. 创建一个用户组并添加SFTP用户: 创建一个名为sftpusers的用户组,并将需要限制带宽的SFTP用户添加到该组。

    sudo groupadd sftpusers
    sudo usermod -aG sftpusers your_username
    
  4. 重启SSH服务

    sudo systemctl restart sshd
    

方法三:使用fail2ban和自定义脚本

这种方法通过监控SSH连接并动态调整带宽来实现速度控制。

  1. 安装fail2ban

    sudo apt-get update
    sudo apt-get install fail2ban
    
  2. 配置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
    
  3. 创建自定义脚本: 创建一个脚本来动态调整带宽限制。

    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
    
  4. 重启fail2ban服务

    sudo systemctl restart fail2ban
    

通过以上方法,你可以在Debian上配置SFTP传输速度限制。选择适合你需求的方法进行实施。

0
看了该问题的人还看了