在 CentOS 上优化 FTP 服务器(常见的有 vsftpd、pure-ftpd、proftpd),可以从 性能、并发、安全、磁盘 IO、网络 等方面入手。下面以 vsftpd(最常见) 为主,兼顾通用优化思路。
rpm -qa | grep vsftpd
如未安装:
yum install -y vsftpd
systemctl enable vsftpd
编辑 /etc/vsftpd/vsftpd.conf:
max_clients=2000
max_per_ip=20
说明:
max_clients:最大并发连接数max_per_ip:单 IP 最大连接数(防恶意连接)local_max_rate=1048576 # 1MB/s(单位:字节)
anon_max_rate=524288 # 匿名用户限速
避免单用户占满带宽。
强烈推荐(云服务器必须)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙放行:
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
reverse_lookup_enable=NO
anonymous_enable=NO
xferlog_enable=YES
log_ftp_protocol=NO
减少 CPU 和 IO 消耗。
listen=YES
listen_ipv6=NO
ulimit -n
建议至少 65535
永久修改:
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
编辑 /etc/sysctl.conf:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
生效:
sysctl -p
atimemount -o remount,noatime /data
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.key
防止明文密码被抓包。
yum install -y fail2ban
配置 vsftpd 规则。
chroot_local_user=YES
allow_writeable_chroot=YES
tail -f /var/log/vsftpd.log
netstat -an | grep :21 | wc -l
ss -tnp | grep vsftpd
| 场景 | 建议 |
|---|---|
| 云服务器 | 优先 SFTP(SSH) |
| 高并发下载 | Nginx / CDN |
| 内网传输 | SCP / rsync |
max_clients=1000
max_per_ip=10
local_max_rate=1048576
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
reverse_lookup_enable=NO
chroot_local_user=YES
如果你能提供:
我可以给你一份 精准优化配置 ✅