首页 > 其他分享 >vsftp搭建虚拟用户模式

vsftp搭建虚拟用户模式

时间:2024-12-05 17:21:53浏览次数:9  
标签:ftp ssl etc vu vsftpd 虚拟 vsftp user 搭建

一、CentOS

1.安装vsftp以及相关依赖

yum -y install vsftpd* pam* db4*

· vsftpd: ftp软件
· pam:认证模块
· DB4:支持文件数据库

关闭selinux

setenforce 0  #暂时关闭
sed -ri 's#(SELINUX=)enforcing#\1disabled#' /etc/selinux/config #永久关闭
grep ^SELINUX= /etc/selinux/config
getenforce

不关可能可以登录但是创建文件和查看会异常

关闭火开放防火墙端口

systemctl stop firewalld #临时关闭
systemctl disable firewalld #禁止开机自启
firewall-cmd --add-service=ftp --permanent && firewall-cmd --reload #开放ftp服务
配置文件 作用
/etc/vsftpd/vsftpd.conf vsftpd的核心配置文件
/etc/vsftpd/ftpusers 用于指定哪些用户不能访问FTP服务器
/etc/vsftpd/user_list 指定允许使用vsftpd的用户列表文件
/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些变量和设置脚本
/var/ftp/ 默认情况下匿名用户的根目录

配置虚拟用户模式:

1.建立虚拟FTP用户的账号

useradd -s /sbin/nologin vu

2.建立虚拟用户文件

cat >/etc/vsftpd/user<<EOF
user1
123456
user2
456789
EOF

· 基数行代表用户名,偶数行代表密码

3.创建数据文件

· 通过 db_load 工具创建出 Berkeley DB 格式的数据库文件

cd /etc/vsftpd/ && db_load -T -t hash -f user user.db

· -f 指定数据原文件
· -T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
· -t hash 读取文件的基本方法

4.建立虚拟用户的PAM认证文件

cat >>/etc/pam.d/vsftpd.vu<<EOF
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
EOF
# 对应刚才生成user.db的文件

5.备份并修改配置文件

备份

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-default

使用被动模式:

cat>/etc/vsftpd/vsftpd.conf<<EOF
#不允许匿名用户认证
anonymous_enable=NO
# 是否启用写入权限(上传,删除文件)
write_enable=YES
# 用户切换进入目录时显示.message文件
dirmessage_enable=YES
# 启用日志文件,记录
xferlog_enable=YES
# 设置日志文件路径,需要手动touch且设置所属权限为宿主用户
xferlog_file=/var/log/vsftpd.log
# 是否使用 20 端口来连接 FTP,被动模式的时候注释掉
# connect_from_port_20=YES
# 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
xferlog_std_format=YES
#如果为 YES,vsftpd 将以独立模式运行并监听IPv4的套接字,处理相关连接请求(该指令不能与listen_ipv6 一起使用)
listen=YES
#是否启用 user_list 文件来控制用户登录
userlist_enable=YES
#是否使用 tcp_wrappers 作为主机访问控制方式
tcp_wrappers=YES
#是否允许用户对 ftp 根目录具有写权限,如果设置成不允许而目录实际上却具备写权限,则会报错
allow_writeable_chroot=YES
# 设置启用虚拟用户功能
guest_enable=YES
# 指定虚拟用户的宿主用户
guest_username=vu
# 设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即 /etc/pam.d/vsftpd.vu 文件,此文件中file=/etc/vsftpd/ftpusers 字段,说明了 PAM 模块能抵挡的帐号内容来自文件 /etc/vsftpd/ftpusers 中
pam_service_name=vsftpd.vu
# 是否允许本地系统用户登录
local_enable=YES
# 本地用户的 umask 设置,如果注释该设置则默认为077,但一般都设置成 022,他和权限值相反,077权限就是700
local_umask=077
# 是否将所有的用户限制在主目录
chroot_local_user=YES
# 设定虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES
# 设置虚拟用户个人vsftpd的配置文件路径
user_config_dir=/etc/vsftpd/user_dir

# 被动模式
# 允许服务器被动模式
pasv_enable=YES
# 设置被动模式服务器的最大端口号
pasv_max_port=24600
# 设置被动模式服务器的最小端口号
pasv_min_port=24500
EOF

6.为虚拟用户建立独立的配置及文件

mkdir /etc/vsftpd/user_dir
touch /var/log/vsftpd.log
chown vu:vu /var/log/vsftpd.log
cat >/etc/vsftpd/user_dir/user1<<EOF
# 设置虚拟用户数据的存放路径
local_root=/data/ftp/user1
EOF
cat >/etc/vsftpd/user_dir/user2<<EOF
# 设置虚拟用户数据的存放路径
local_root=/data/ftp/user2
EOF

7.创建虚拟用户数据存放目录

mkdir -p /data/ftp/{user1,user2}
chown vu:vu /data/ftp -R
chmod 700 -R /data/ftp

8.重启并测试

systemctl restart vsftpd

注意:由于未配置加密证书,数据传输过程中均以明文方式传输,生产环境可能需要配置加密证书。

Snipaste_2024-03-28_19-57-42

二、Ubuntu

1.安装VSFTPD及其需要的工具

安装

apt-get -y install vsftpd db-util

设置VSFTPD开机启动

systemctl enable vsftpd.service

配置虚拟用户

1.创建存储目录

mkdir -p /data/ftp

2.建立虚拟FTP用户的账号

useradd -d /data/ftp -s /sbin/nologin vu

3.创建虚拟用户文件

mkdir -p /etc/vsftpd
cat >/etc/vsftpd/user<<'EOF'
user1
123456
user2
456789
EOF

奇数行用户名,偶数行密码

5.生成db文件

· 通过 db_load 工具创建出 Berkeley DB 格式的数据库文件

db_load -T -t hash -f /etc/vsftpd/user /etc/vsftpd/user.db

· -f 指定数据原文件
· -T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
· -t hash 读取文件的基本方法

4.建立虚拟用户的PAM认证文件

cat >/etc/pam.d/vsftpd.vu<<EOF
auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/user
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/user
EOF
# 对应刚才生成user.db的文件

5.备份并修改配置文件

备份

mv /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf-default

使用被动模式:

cat>/etc/vsftpd.conf<<EOF
#不允许匿名用户认证
anonymous_enable=NO
# 是否启用写入权限(上传,删除文件)
write_enable=YES
# 用户切换进入目录时显示.message文件
dirmessage_enable=YES
# 启用日志文件,记录
xferlog_enable=YES
# 设置日志文件路径,需要手动touch且设置所属权限为宿主用户
xferlog_file=/var/log/vsftpd.log
# 是否使用 20 端口来连接 FTP,被动模式的时候注释掉
# connect_from_port_20=YES
# 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
xferlog_std_format=YES
#如果为 YES,vsftpd 将以独立模式运行并监听IPv4的套接字,处理相关连接请求(该指令不能与listen_ipv6 一起使用)
listen=YES
#是否启用 user_list 文件来控制用户登录
userlist_enable=YES
#是否使用 tcp_wrappers 作为主机访问控制方式
tcp_wrappers=YES
#是否允许用户对 ftp 根目录具有写权限,如果设置成不允许而目录实际上却具备写权限,则会报错
allow_writeable_chroot=YES
# 设置启用虚拟用户功能
guest_enable=YES
# 指定虚拟用户的宿主用户
guest_username=vu
# 设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即 /etc/pam.d/vsftpd.vu 文件,此文件中file=/etc/vsftpd/ftpusers 字段,说明了 PAM 模块能抵挡的帐号内容来自文件 /etc/vsftpd/ftpusers 中
pam_service_name=vsftpd.vu
# 是否允许本地系统用户登录
local_enable=YES
# 本地用户的 umask 设置,如果注释该设置则默认为077,但一般都设置成 022,他和权限值相反,077权限就是700
local_umask=077
# 是否将所有的用户限制在主目录
chroot_local_user=YES
# 设定虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES
# 设置虚拟用户个人vsftpd的配置文件路径
user_config_dir=/etc/vsftpd/user_dir

# 被动模式
# 允许服务器被动模式
pasv_enable=YES
# 设置被动模式服务器的最大端口号
pasv_max_port=24600
# 设置被动模式服务器的最小端口号
pasv_min_port=24500
EOF

6.为虚拟用户建立独立的配置及文件

mkdir /etc/vsftpd/user_dir
touch /var/log/vsftpd.log
chown vu:vu /var/log/vsftpd.log
cat >/etc/vsftpd/user_dir/user1<<EOF
# 设置虚拟用户数据的存放路径
local_root=/data/ftp/user1
EOF
cat >/etc/vsftpd/user_dir/user2<<EOF
# 设置虚拟用户数据的存放路径
local_root=/data/ftp/user2
EOF

7.创建虚拟用户数据存放目录

mkdir -p /data/ftp/{user1,user2}
chown vu:vu /data/ftp -R
chmod 700 -R /data/ftp

8.重启并测试

systemctl restart vsftpd

登录提示500 OOPS: cannot read user list file:/etc/vsftpd.user_list

新建该文件即可:

touch /etc/vsftpd.user_list

注意:以上并未配置加密,数据传输过程中均与明文传输,包括用户名密码,生产环境可能需要配置证书加密。

Snipaste_2024-03-28_19-57-42

三、配置证书加密

1.生成自签证书

商用证书需要和相关机构申请,这里测试使用自签证书。

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# mkdir .ssl
[root@localhost vsftpd]# cd .ssl/
[root@localhost .ssl]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 356
# 填写相关信息

修改证书权限,保证安全:

[root@localhost .ssl]# chmod 400 /etc/vsftpd/.ssl/

2、修改vsFTPd支持证书

打开文件/etc/vsftpd/vsftpd.conf,添加如下信息:

ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=TRUE
ssl_sslv2=FALSE
ssl_sslv3=FALSE
require_ssl_reuse=NO
ssl_ciphers=HIGH
rsa_cert_file=/etc/vsftpd/.ssl/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/.ssl/vsftpd.pem

重启服务:

[root@localhost ~]# systemctl restart vsftpd

使用FileZilla工具连接,此时再看数据都是加密的:

微信截图_20241205125210

微信截图_20241205125412

标签:ftp,ssl,etc,vu,vsftpd,虚拟,vsftp,user,搭建
From: https://www.cnblogs.com/luguojie/p/18589005

相关文章

  • linux - FTP(包含匿名、本地以及虚拟用户登录)详细操作⭐
    目录一、FTP服务的定义二、FTP服务的工作原理控制连接:数据连接:三、FTP服务搭建过程匿名用户登录:本地用户登录:虚拟用户登录一、FTP服务的定义FTP(FileTransferProtocol)即文件传输协议,是用于在网络上进行文件传输的标准协议。它运行在TCP/IP协议栈之上,采用客......
  • 超简单!动手搭建‘仲景’中医药大模型,体验线上中医问诊
    得益于大模型技术的发展,中医的传承与发展形式也得到了创新,目前已经有多个中医药大语言模型公开亮相。国内的首个中医药大语言模型是由复旦大学和同济大学联合开发的“仲景”中医药大模型(CMLM-ZhongJing)。仲景中医大语言模型融入了多项创新技术,称得上是一个真正意义上......
  • Kata Containers 的第二层隔离及其虚拟机管理程序支持
    KataContainers的第二层隔离及其虚拟机管理程序支持版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。引言KataContainers在传统容器技术之上引入了第二层隔离,通过结合硬件虚拟化接口,提供更强的安全性和隔离性。本文将详细介绍......
  • OSG开发笔记(三十七):OSG基于windows平台msvc2017x64编译器官方稳定版本OSG3.4.1搭建环境
    前言  自行编译的osg版本插件比较多,如果对版本没有特定要求,但是对环境编译器有特定要求,可以反向融合编译器符合要求的osg版本。 OSG下载过程  osg官网:http://www.osgchina.org        由于我们不使用osgQt模块,下载了也无所谓,反正不用,这里是osg3.6.4......
  • hexo+github搭建个人博客
    一、环境准备1.安装Node.js直接到官网上下载安装即可Node.js(Node.js版本需不低于10.13,建议使用Node.js12.0及以上版本)Node自带npmnpm换源(选择一个即可)#淘宝npmconfigsetregistryhttps://registry.npmmirror.com#阿里云npmconfigsetreg......
  • Inode创建虚拟通道失败
    问题场景在使用Inode连接VPN时出现创建虚拟通道失败的问题。解决方法打开控制面板,点击网络和Internet。然后点击网络和共享中心。点击更改适配器设置。找到Inode的虚拟网卡。(我这里是连接成功了,有问题的话这里是一个×)右键,属性。然后将下面的取消勾选就能创建成功了......
  • 苹果im虚拟机系统,苹果imessage推信软件,苹果iMessage自动群发协议 – 持续更新中...
    一、电脑版虚拟机苹果系统(MacOS)上实现imessage群发:/*MacOS苹果系统,正常情况下,只能安装到苹果公司自己出品的Mac电脑,俗称白苹果,不能安装到各种组装机或者其他品牌的品牌机上,黑苹果的的原理,就是通过一些“破解补丁”工具欺骗macOS系统,让苹果系统认为你的电脑其实是一台苹......
  • 国标GB28181公网直播LiteGBS国标GB28181视频平台录像机虚拟主机怎么配置?
    配置LiteGBS国标GB28181视频平台录像机虚拟主机时,需要遵循一系列标准化的步骤以确保设备能够正确地与公网平台进行通信。GB28181作为国家标准,规定了视频监控系统互联的结构、通信协议以及信息格式,使得不同厂商的设备能够在统一的平台上进行互操作。电脑需要和摄像机通讯上才可以......
  • Docker:Docker搭建Jenkins并共用宿主机Docker部署服务(五)跨服务器远程部署后端微服务多
    前言继续完成跨服务器远程部署微服务多模块,Jenkins的搭建与插件安装可以观看上一篇文章:https://www.cnblogs.com/nhdlb/p/18561435配置SSH远程服务器连接这里需要安装SSH连接的插件,可以观看上一篇文章进行安装。开始配置SSH连接保存!!新建视图方便将整个项目的前端和后......
  • DBeaver远程连接虚拟机中的hive
    文章目录DBeaver连接虚拟机中的hive教程Hadoop集群启动与hiveserver启动DBeaver连接hive跑HQL实例DBeaver连接虚拟机中的hive教程Hadoop集群启动与hiveserver启动1.本实例Hadoop集群为伪分布式,启动命令为:start-all.sh2.启动成功后使用jps查看节点是否都成功启动,启......