当前位置: 首页 > news >正文

VSFTPD+虚拟用户+SSL/TLS部署安装全过程(踩坑全通)

@Author  : Spinach | GHB
@Link    : http://blog.csdn.net/bocai8058

文章目录

  • 前言
    • 准备
    • 配置虚拟用户
      • 1.创建虚拟用户列表文件
      • 2.生成数据库文件
      • 3.设置虚拟用户独立访问权限
    • 配置PAM认证
      • 1.创建PAM配置文件
      • 2.测试PAM认证
    • 创建虚拟用户映射的系统用户
    • 生成SSL/TLS证书
    • 配置VSFTPD服务
      • 1.备份原始配置文件
      • 2.编辑配置文件
    • 重启服务并验证
    • 客户端连接测试


前言

整体FTP设计框架采用vsftpd作为服务端,结合Open SSL/TLS认证实现数据加密传输。

准备

准备项linux命令/地址备注
安装VSFTPD及相关认证工具sudo yum install vsftpd db-util openssl -y安装vsftpd、db_util及openssl
调整防火墙和SELinuxsystemctl stop firewalld 及setenforce 0 等命令关闭防火墙及selinux
FTP客户端https://winscp.net/eng/index.php 或 https://filezilla-project.org/wincp或Filezilla

配置虚拟用户

1.创建虚拟用户列表文件

sudo mkdir -p /etc/vsftpd/virtual_users
sudo nano /etc/vsftpd/virtual_users/user_list.txt
# 输入用户名和密码(格式:每行一个用户,奇数行用户名,偶数行密码),如下:
user1
password1
user2
password2

2.生成数据库文件

# 转换为数据库格式
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users/user_list.txt /etc/vsftpd/virtual_users/virtual_users.db
# 设置安全权限
sudo chmod 600 /etc/vsftpd/virtual_users/*.db

3.设置虚拟用户独立访问权限

sudo mkdir -p /etc/vsftpd/virtual_users_conf
sudo nano /etc/vsftpd/virtual_users_conf/user1 # 对应虚拟用户user1权限
# 配置内容如下:
local_root=/home/vsftpd/user1
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
sudo nano /etc/vsftpd/virtual_users_conf/user2 # 对应虚拟用户user2权限
# 配置内容如下:
local_root=/home/vsftpd/user1
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO

配置PAM认证

1.创建PAM配置文件

sudo nano /etc/pam.d/vsftpd_virtual
# 添加以下内容(注意路径不带.db后缀):
auth    required    pam_userdb.so db=/etc/vsftpd/virtual_users/virtual_users
account required    pam_userdb.so db=/etc/vsftpd/virtual_users/virtual_users

注意:这个新建的文件名字为vsftpd_virtual,需要与真实的系统用户对应

2.测试PAM认证

# 安装测试工具
sudo yum install pamtester
# 测试用户user1认证
sudo pamtester vsftpd_virtual user1 authenticate
# 输入密码后显示 ​SUCCESS 表示配置正确。

创建虚拟用户映射的系统用户

# 创建系统用户(无登录权限),此系统用户需与pam.d/xxxx文件名保持一致
sudo useradd -d /home/vsftpd -s /sbin/nologin vsftpd_virtual
# 创建用户根目录并设置权限
sudo mkdir -p /home/vsftpd/files  # 用于系统用户vsftpd_virtual的根目录
sudo mkdir -p /home/vsftpd/user1  # 用于vsftpd虚拟用户user1的根目录
sudo mkdir -p /home/vsftpd/user2  # 用于vsftpd虚拟用户user2的根目录
sudo chown -R vsftpd_virtual:vsftpd_virtual /home/vsftpd/files /home/vsftpd/user1 /home/vsftpd/user2  # vsftpd有多少个虚拟用户的根目录都需要进行所属权给系统用户vsftpd_virtual
sudo chmod 755 /home/vsftpd

注意:新建的系统用户为vsftpd_virtual,需要与pam.d/xxxx文件名保持一一对应。

生成SSL/TLS证书

# 创建证书目录
sudo mkdir -p /etc/ssl/private
# 生成自签名证书(有效期10年)
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048  -keyout /etc/ssl/private/vsftpd.key  -out /etc/ssl/private/vsftpd.crt 
# 设置证书权限
sudo chmod 600 /etc/ssl/private/vsftpd.*

配置VSFTPD服务

1.备份原始配置文件

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

2.编辑配置文件

sudo nano /etc/vsftpd.conf# 内容如下:
# 基础设置
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES# 虚拟用户配置
guest_enable=YES
guest_username=vsftpd_virtual
user_config_dir=/etc/vsftpd/virtual_users_conf# PAM配置
pam_service_name=vsftpd_virtual# SSL/TLS配置
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/ssl/private/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key# 日志配置
log_ftp_protocol=YES
vsftpd_log_file=/var/log/vsftpd.log

重启服务并验证

# 重启vsftpd服务
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
# 查看服务状态
sudo systemctl status vsftpd
# 实时监控日志
sudo tail -f /var/log/vsftpd.log

客户端连接测试

根据账密,使用wincp或Filezilla访问连接。

相关文章:

  • 【Linux网络】构建类似XShell功能的TCP服务器
  • ​​OSPF核心机制精要:选路、防环与设计原理​
  • C++20 module下的LVGL模拟器
  • [实战]zynq7000设备树自动导出GPIO
  • 聊聊自动化用例的维护
  • Qt Creator中自定义应用程序的可执行文件图标
  • LM Studio模型下载慢怎么办
  • Java基础系列-HashMap源码解析2-AVL树
  • 从代码学习深度学习 - 自动并行 PyTorch 版
  • 57、Spring Boot 最佳实践
  • NLP高频面试题(五十三)——LLM中激活函数详解
  • 力扣hot100_链表(3)_python版本
  • 盈达科技:登顶GEO优化全球制高点,以AICC定义AI时代内容智能优化新标杆
  • TCP四大特性面试回答引导
  • 【无人机】无人机位置估计出现偏差的原因分析
  • ESP32-S3开发板麦克风录音到SD卡存储测试
  • 自主可控鸿道Intewell工业实时操作系统
  • Rust 语言使用场景分析
  • 【LangChain4j】AI 第一弹:LangChain4j 的理解
  • 图聚类中的亲和力传播
  • 云南洱源县4.8级地震:房屋受损442户,无人员伤亡报告
  • 龙头券商哪家强:中信去年营收领跑,中金净利下滑
  • 泽连斯基提议乌俄“立即、全面和无条件”停火
  • 北大强基计划招生简章发布,笔试部分考试科目有变化
  • 兰斯莫斯想在雅典卫城拍《拯救地球》,希腊当局:价值观不符
  • 外贸50城,谁在“扛大旗”?