温馨提示×

怎样设置CentOS SFTP带宽限制

小樊
42
2025-10-15 07:39:45
栏目: 智能运维

在CentOS系统中,您可以使用tc(流量控制)工具和cgroups(控制组)来限制SFTP带宽。以下是设置SFTP带宽限制的步骤:

使用 tccgroups

  1. 安装必要的软件包: 确保您的系统上安装了iproutecgroup-tools

    sudo yum install iproute cgroup-tools
    
  2. 创建cgroup: 创建一个新的cgroup来控制SFTP带宽。

    sudo cgcreate -g net_cls:/sftp_bandwidth
    
  3. 设置cgroup的网络类: 为cgroup分配一个网络类,并设置带宽限制。

    sudo tc qdisc add dev eth0 root handle 1: htb default 30
    sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
    sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:1
    sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 512kbps ceil 1mbit
    sudo cgset -r net_cls.classid=1:10 sftp_bandwidth
    

    在这个例子中,我们将SFTP的带宽限制为512kbps。

  4. 将用户添加到cgroup: 将需要限制带宽的用户添加到cgroup中。

    sudo cgclassify -g net_cls:sftp_bandwidth <username>
    

    替换<username>为实际的用户名。

  5. 验证设置: 使用以下命令验证带宽限制是否生效。

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

使用 fail2baniptables

另一种方法是使用fail2baniptables来限制SFTP带宽。这种方法适用于限制特定IP地址的带宽。

  1. 安装fail2ban

    sudo yum install fail2ban
    
  2. 配置fail2ban: 编辑/etc/fail2ban/jail.local文件,添加以下内容:

    [DEFAULT]
    bantime = 600
    findtime = 600
    maxretry = 3
    
    [sftp]
    enabled = true
    port = sshd
    filter = sftp
    logpath = /var/log/secure
    bantime = 3600
    maxretry = 5
    banaction = iptables-multiport
    
  3. 创建过滤器: 编辑/etc/fail2ban/filter.d/sftp.conf文件,添加以下内容:

    [Definition]
    failregex = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from <HOST>
    ignoreregex =
    
  4. 重启fail2ban

    sudo systemctl restart fail2ban
    
  5. 使用iptables限制带宽: 使用iptables规则来限制特定IP地址的带宽。例如,限制IP地址192.168.1.100的带宽为512kbps:

    sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -m limit --limit 512kb/s -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j DROP
    

    这将限制该IP地址的SFTP带宽为512kbps。

通过以上方法,您可以在CentOS系统中设置SFTP带宽限制。选择适合您需求的方法进行配置。

0