优化 CentOS 上的 FTPServer,一般指的是在 vsftpd(Very Secure FTP Daemon) 上做 安全 + 性能 + 稳定性 的优化。下面从 安装、安全、性能、日志、防火墙、SELinux、TLS 加密 几个方面系统说明。
yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
# 基础配置
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
# 安全相关
chroot_local_user=YES
allow_writeable_chroot=YES
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
# 性能优化
max_clients=200
max_per_ip=10
idle_session_timeout=300
data_connection_timeout=120
connect_from_port_20=YES
# 被动模式(必须,尤其云服务器)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的公网IP
# 日志
xferlog_enable=YES
xferlog_std_format=YES
log_ftp_protocol=NO
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.key \
-out /etc/vsftpd/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.key
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
✅ 优点
useradd -s /sbin/nologin ftpuser
passwd ftpuser
chroot_local_user=YES
allow_writeable_chroot=YES
vim /etc/vsftpd/user_list
加入允许的用户:
ftpuser
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
getenforce
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
✅ 否则会出现 530 / 500 错误
ulimit -n 65535
加入 /etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
yum install -y fail2ban
systemctl enable fail2ban
示例 jail:
[vsftpd]
enabled = true
filter = vsftpd
logpath = /var/log/secure
maxretry = 5
bantime = 3600
/var/log/vsftpd.log/var/log/securenetstat -an | grep :21 | wc -l
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 530 Login incorrect | PAM / SELinux | 检查 /etc/pam.d/vsftpd |
| 425 Unable to build data connection | 被动端口未开放 | 防火墙 & pasv |
| 500 OOPS | chroot 权限 | allow_writeable_chroot=YES |
| 上传慢 | MTU / DNS | 禁用 DNS 反向解析 |
✅ 必须做
✅ 推荐做
如果你愿意,我可以:
只要告诉我你的 使用场景(内网 / 公网 / 高并发 / 文件大小)。