温馨提示×

如何优化CentOS的FTPServer

小樊
47
2026-07-20 13:39:19
栏目: 智能运维

优化 CentOS 上的 FTPServer,一般指的是在 vsftpd(Very Secure FTP Daemon) 上做 安全 + 性能 + 稳定性 的优化。下面从 安装、安全、性能、日志、防火墙、SELinux、TLS 加密 几个方面系统说明。


一、基础环境准备

1. 安装 vsftpd

yum install -y vsftpd

2. 启动并设置开机自启

systemctl enable vsftpd
systemctl start vsftpd

二、核心配置文件优化(/etc/vsftpd/vsftpd.conf)

✅ 推荐优化配置(生产环境)

# 基础配置
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

三、FTPS(TLS 加密)优化(强烈推荐)

1. 生成 SSL 证书

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.key \
-out /etc/vsftpd/vsftpd.pem

2. 启用 TLS

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

优点

  • 防止明文密码被抓包
  • 满足合规要求(等保、ISO)

四、用户与权限优化

1. 禁止系统用户直接登录

useradd -s /sbin/nologin ftpuser
passwd ftpuser

2. 限制 FTP 用户只能访问家目录

chroot_local_user=YES
allow_writeable_chroot=YES

3. 白名单控制

vim /etc/vsftpd/user_list

加入允许的用户:

ftpuser

五、防火墙优化(firewalld)

1. 开放 FTP 端口

firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload

六、SELinux 优化(非常重要)

1. 查看状态

getenforce

2. 允许 FTP 访问

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

✅ 否则会出现 530 / 500 错误


七、性能与稳定性优化

1. 系统级优化

ulimit -n 65535

加入 /etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535

2. 防止暴力破解(fail2ban)

yum install -y fail2ban
systemctl enable fail2ban

示例 jail:

[vsftpd]
enabled = true
filter = vsftpd
logpath = /var/log/secure
maxretry = 5
bantime = 3600

八、日志与监控

1. 日志位置

  • /var/log/vsftpd.log
  • /var/log/secure

2. 监控连接数

netstat -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 反向解析

十、总结(优化优先级)

必须做

  • 禁用匿名
  • 启用 TLS
  • 配置被动模式
  • SELinux 放通

推荐做

  • fail2ban
  • 限制最大连接
  • 日志监控

如果你愿意,我可以:

  • ✅ 根据你的 CentOS 7/8/Stream 给出专用配置
  • ✅ 帮你做 等保级 FTP 加固方案
  • ✅ 对比 vsftpd vs Pure-FTPd vs SFTP

只要告诉我你的 使用场景(内网 / 公网 / 高并发 / 文件大小)。

0