温馨提示×

centos怎么限制ftpserver

小樊
50
2026-07-08 20:32:35
栏目: 智能运维

在 CentOS 上限制 FTPServer(FTP/FTPS),通常可以从 用户、目录、带宽、并发、防火墙、SELinux 等方面来做。下面按常见场景一步一步说明(以 vsftpd 为例,这是 CentOS 最常用的 FTP/FTPS 服务)。


一、限制 FTP/FTPS 用户访问

1️⃣ 禁止系统用户随意登录 FTP

只允许指定用户使用 FTP:

vim /etc/vsftpd/vsftpd.conf

添加或修改:

local_enable=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

然后在:

vim /etc/vsftpd/user_list

只保留允许登录的用户,例如:

ftpuser1
ftpuser2

✅ 不在列表中的用户无法登录 FTP


二、限制用户只能访问自己的目录(chroot)

防止用户访问系统其他目录(非常重要)

chroot_local_user=YES
allow_writeable_chroot=YES

✅ 用户登录后只能看到自己的家目录

⚠️ 如果用户家目录可写,必须加:

allow_writeable_chroot=YES

三、限制 FTP 用户上传/下载速度

限制上传和下载带宽

local_max_rate=100000   # 单位:byte/s(约 100KB/s)

示例:

  • 100KB/s:100000
  • 1MB/s:1048576

四、限制并发连接数

1️⃣ 限制总连接数

max_clients=50

2️⃣ 限制每个 IP 的连接数

max_per_ip=2

3️⃣ 限制每个用户的并发连接(需配合 pam)

一般 vsftpd 本身不直接限制“每用户连接数”,可通过 iptables / firewalld + connlimit 实现(见下文)。


五、限制 FTP 端口范围(方便防火墙)

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙只开放这些端口。


六、防火墙限制(firewalld / iptables)

firewalld 示例

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

限制来源 IP(只允许内网)

firewall-cmd --permanent --add-rich-rule='
rule family="ipv4" source address="192.168.1.0/24" port port="21" protocol="tcp" accept'
firewall-cmd --reload

七、限制用户只能使用 FTPS(禁止明文 FTP)

启用 SSL/TLS(FTPS)

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

证书示例:

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.key

✅ 这样用户 只能用 FTPS,不能用明文 FTP


八、SELinux 限制(CentOS 常见坑)

查看状态:

getenforce

允许 FTP 访问家目录:

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

九、禁止匿名访问(强烈建议)

anonymous_enable=NO

十、示例:一个“受限 FTP 用户”的完整配置思路

✅ 只能用 FTPS
✅ 只能访问自己目录
✅ 限速 500KB/s
✅ 只能从内网登录

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
local_max_rate=512000
ssl_enable=YES
force_local_logins_ssl=YES
force_local_data_ssl=YES
pasv_min_port=30000
pasv_max_port=31000

十一、如果你想限制的是 SFTP(SSH)而不是 FTP

⚠️ 注意:

  • FTPS ≠ SFTP
  • SFTP 是 SSH 子协议

如果是 SFTP,我可以给你 chroot + 限制 shell + 限制端口 的配置方案。


✅ 总结

限制类型 方法
用户 user_list
目录 chroot
速度 local_max_rate
并发 max_clients / max_per_ip
安全 FTPS + 防火墙
系统 SELinux

如果你愿意,可以告诉我:

  • ✅ CentOS 版本(7 / 8 / Stream)
  • ✅ 用的是 vsftpd / proftpd / pure-ftpd
  • ✅ 是 FTP、FTPS 还是 SFTP

我可以给你一份 完全可直接用的配置文件

0