在CentOS系统中,可以通过配置SSH服务器来限制SFTP用户的上传速度。以下是一些常见的方法:
tc
(Traffic Control)工具安装tc
工具:
sudo yum install iproute
创建一个队列规则: 假设你想限制用户的上传速度为1Mbps,可以使用以下命令:
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 dst <用户IP> flowid 1:1
限制特定用户的上传速度:
如果你想限制特定用户的上传速度,可以使用iptables
和tc
结合的方式:
sudo iptables -A OUTPUT -t mangle -p tcp --dport 22 -m owner --uid-owner <用户UID> -j MARK --set-mark 1
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 1 fw flowid 1:1
fail2ban
和自定义脚本安装fail2ban
:
sudo yum install fail2ban
创建自定义脚本:
创建一个脚本/usr/local/bin/sftp_speed_limit.sh
,内容如下:
#!/bin/bash
USER=$1
LIMIT=1024 # 限制为1Mbps
# 获取用户的当前上传速度
UPLOAD_SPEED=$(sudo iptables -L -v -n | grep $USER | awk '{print $5}')
if [ "$UPLOAD_SPEED" -gt "$LIMIT" ]; then
sudo iptables -A OUTPUT -p tcp --dport 22 -m owner --uid-owner $USER -j DROP
echo "User $USER has exceeded the upload speed limit."
else
sudo iptables -D OUTPUT -p tcp --dport 22 -m owner --uid-owner $USER -j DROP
fi
设置脚本权限:
sudo chmod +x /usr/local/bin/sftp_speed_limit.sh
配置fail2ban
:
编辑/etc/fail2ban/jail.local
文件,添加以下内容:
[DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
[sftp]
enabled = true
filter = sftp
action = iptables-multiport[name=SFTP, port="ssh", protocol=tcp]
logpath = /var/log/secure
bantime = 600
findtime = 600
maxretry = 3
重启fail2ban
服务:
sudo systemctl restart fail2ban
cgroups
(Control Groups)安装cgroups
工具:
sudo yum install libcgroup-tools
创建一个cgroup:
sudo cgcreate -g net_cls:/sftp_limit
设置带宽限制:
echo "1048576" | sudo tee /sys/fs/cgroup/net_cls/sftp_limit/net_cls.classid
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 dst <用户IP> flowid 1:1
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 1: cgroup
将用户进程添加到cgroup:
sudo cgclassify -g net_cls:/sftp_limit <用户PID>
通过以上方法,你可以有效地限制CentOS系统中SFTP用户的上传速度。选择适合你需求的方法进行配置即可。