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
相关推荐
千航@abc1 分钟前
Win10/Win11 DCOM服务器进程启动器 CPU 占用过高解决方法
运维·安全·病毒·window10·window11·dcom进程·系统进程资源占用高
hwj运维之路9 分钟前
Docker面试题汇总系列
运维·docker·云原生·容器
蜡笔小炘10 分钟前
LVS -- 部署NAT模式集群案例
linux·运维·服务器·lvs
翼龙云_cloud10 分钟前
阿里云渠道商:如何优化阿里云弹性伸缩的性能?
服务器·阿里云·云计算
我怎么又饿了呀10 分钟前
CentOs 10 虚拟机安装【解决方法】VMware无法打开内核设备,未能启动虚拟机
linux·运维·centos
冰冰的coco16 分钟前
如何设置需要sudo的命令开机自启动
linux·运维·服务器
辞旧 lekkk18 分钟前
【Linux】Linux进程控制(三)自主实现简易shell命令行解释器
linux·运维·服务器·学习·萌新
HIT_Weston29 分钟前
119、【Ubuntu】【Hugo】首页板块配置:Template Lookup Order
linux·运维·ubuntu
wangt595232 分钟前
Ubuntu22.04.5的网络配置在重启后被重置的问题
linux·运维·服务器
不被定义的程序猿33 分钟前
如何使用docker搭建一个 aarch-linux-gun-gcc的交叉编译环境
linux·运维·服务器