10.VSFTPD 服务器

作者@小郭

11.VSFTPD 服务器

1. vsftpd 介绍

1.1 vsftpd 概述

vsftpd(Very Secure FTP Daemon)是一个在 Linux 系统上广泛使用的 FTP 服务器软件,以其安全性、高性能和稳定性著称。vsftpd 设计理念注重安全,通过多种机制(如 chroot 隔离、PAM 认证、SSL/TLS 加密等)保护系统免受潜在攻击。

1.2 vsftpd 特性
  • 安全性:不使用 root 权限运行,支持 SSL/TLS 加密传输,内置防暴力破解机制
  • 高性能:采用多进程或多线程模型,处理并发连接效率高
  • 灵活配置:支持虚拟用户、系统用户和匿名用户,可基于 IP、用户、时间进行访问控制
  • 丰富功能:支持断点续传、被动模式 (PASV) 和主动模式 (PORT)、IPv6 等
1.3 FTP 服务器比较
特性 vsftpd ProFTPD Pure-FTPd
安全性 极高
配置复杂度 中等 复杂 简单
虚拟用户支持 完整 完整 完整
SSL/TLS 支持 完整 完整 完整
插件系统 有限 丰富 有限

2. vsftpd 基本配置

2.1 安装 vsftpd
bash 复制代码
# 安装 vsftpd
[root@server ~]# yum install -y vsftpd

# 启动 vsftpd 服务
[root@server ~]# systemctl enable vsftpd --now

# 检查服务状态
[root@server ~]# systemctl status vsftpd
2.2 防火墙配置

配置防火墙允许 FTP 流量通过:

bash 复制代码
# 允许 FTP 服务通过防火墙
[root@server ~]# firewall-cmd --permanent --add-service=ftp

# 重新加载防火墙规则
[root@server ~]# firewall-cmd --reload
2.3 基本配置文件

vsftpd 的主配置文件位于 /etc/vsftpd/vsftpd.conf

在进行配置前,建议先备份原始配置文件:

bash 复制代码
[root@server ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
2.4 配置匿名用户访问
配置

以下是一个基本的匿名用户访问配置:

ini 复制代码
# 基本设置
anonymous_enable=YES            # 允许匿名用户
no_anon_password=YES            # 匿名用户无需密码

anon_root=/var/ftp/pub          # 匿名用户根目录

anon_upload_enable=NO           # 禁止匿名用户上传
anon_mkdir_write_enable=NO      # 禁止匿名用户创建目录
anon_other_write_enable=NO      # 禁止匿名用户执行额外的写操作,例如删除和重命名

chroot_local_user=NO            # 不限制用户在自己的主目录内

dirmessage_enable=YES           # 启用目录消息
xferlog_enable=YES              # 启用传输日志
connect_from_port_20=YES        # 使用端口 20 进行数据连接
xferlog_std_format=YES          # 使用标准格式日志
secure_chroot_dir=/var/run/vsftpd/empty  # chroot 安全目录
pam_service_name=vsftpd         # PAM服务名称
rsa_cert_file=/etc/ssl/certs/vsftpd.pem  # SSL证书文件(后续高级配置使用)

listen=NO                       # 只监听 IPv4
listen_ipv6=YES                 # 同时监听 IPv4 和 IPv6,与listen参数冲突

修改配置后,重启 vsftpd 服务:

bash 复制代码
[root@server ~]# systemctl restart vsftpd
测试

自行测试:

  1. 上传文件或者目录
  2. 创建文件或者目录
  3. 删除文件或者目录。
2.5 配置本地用户访问
配置

要允许系统用户通过 FTP 访问,需要修改以下配置:

ini 复制代码
# 基本设置
local_enable=YES                # 允许本地用户
write_enable=YES                # 启用写权限
local_umask=022                 # 本地用户上传文件的umask值
#local_root=/home/%u/ftp         # 本地用户根目录(%u为用户名变量)

修改配置后,重启 vsftpd 服务:

bash 复制代码
[root@server ~]# systemctl restart vsftpd
测试

自行测试:

  1. 上传文件或者目录
  2. 创建文件或者目录
  3. 删除文件或者目录。

3. 最佳实践与安全建议

  1. 最小权限原则:为 FTP 用户分配完成任务所需的最小权限
  2. 定期更新:保持 vsftpd 和系统软件更新
  3. 禁用不必要的功能:如匿名访问、上传功能等,除非确实需要
  4. 强密码策略:要求用户使用强密码并定期更换
  5. 监控日志:定期检查 FTP 日志,及时发现异常活动
  6. 限制登录尝试:结合 fail2ban 等工具限制暴力破解尝试
  7. 考虑替代方案:对于敏感数据,考虑使用更安全的协议如 SFTP 或 FTPS
相关推荐
sdm0704275 小时前
yum和开发工具vim/gcc
linux·服务器·centos
zhaoyufei1335 小时前
RK3568-11.0 设置WiFi p2p静态IP
服务器·tcp/ip·p2p
Leinwin10 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_8653825010 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇10 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.75910 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣11 小时前
智能体选型实战指南
运维·人工智能
yy552711 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ12 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔13 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络