在CentOS系统中,您可以使用tc(流量控制)工具和cgroups(控制组)来限制SFTP带宽。以下是设置SFTP带宽限制的步骤:
tc 和 cgroups安装必要的软件包:
确保您的系统上安装了iproute和cgroup-tools。
sudo yum install iproute cgroup-tools
创建cgroup: 创建一个新的cgroup来控制SFTP带宽。
sudo cgcreate -g net_cls:/sftp_bandwidth
设置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。
将用户添加到cgroup: 将需要限制带宽的用户添加到cgroup中。
sudo cgclassify -g net_cls:sftp_bandwidth <username>
替换<username>为实际的用户名。
验证设置: 使用以下命令验证带宽限制是否生效。
tc -s qdisc ls dev eth0
tc -s class ls dev eth0
fail2ban 和 iptables另一种方法是使用fail2ban和iptables来限制SFTP带宽。这种方法适用于限制特定IP地址的带宽。
安装fail2ban:
sudo yum install fail2ban
配置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
创建过滤器:
编辑/etc/fail2ban/filter.d/sftp.conf文件,添加以下内容:
[Definition]
failregex = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from <HOST>
ignoreregex =
重启fail2ban:
sudo systemctl restart fail2ban
使用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带宽限制。选择适合您需求的方法进行配置。