vsftp虚拟用户和ssl加密配置 —— 筑梦之路

2024-04-28 15:28

本文主要是介绍vsftp虚拟用户和ssl加密配置 —— 筑梦之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为什么要用虚拟用户? 

1.增强安全性:使用虚拟用户,可以避免直接使用系统账户进行 FTP 访问,通过使用虚拟用户,可以限制 FTP 用户的访问范围和权限,减少潜在的安全风险。


2.隔离用户和文件:虚拟用户可以被隔离到特定的目录或目录树中,这样可以确保 FTP 用户只能访问其分配的特定文件夹,而不能访问整个文件系统。


3.简化管理:虚拟用户可以独立于操作系统的用户管理进行配置和管理,可以更方便地添加、修改或删除 FTP 用户,而无需涉及操作系统的账户管理。

虚拟用户配置步骤

 1. 创建一个ftp用户

#创建一个用户ftpuser,不创建家目录,设置ftpuser家目录为/mnt/ftp/,不允许其登录shelluseradd -M ftpuser -d /mn/ftp/ -s /sbin/nologin

2. 创建ftp目录以及虚拟用户访问的根目录

mkdir -p /mnt/ftp/ceshi{01..03}chown -R ftpuser. /mnt/ftp/chmod -R 755 /mnt/ftp/

3. 在vsftpd中添加配置文件信息,允许使用虚拟用户登录FTP

vim /etc/vsftpd/vsftpd.confanonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd   #使用pam验证用户身份
userlist_enable=YES
tcp_wrappers=YES
dual_log_enable=yes
xferlog_enable=YES
xferlog_file=/var/log/xferlog
guest_enable=YES  #启用虚拟用户
guest_username=ftpuser #指定虚拟用户绑定的系统用户名
virtual_use_local_privs=YES  #指定虚拟用户使用本地用户权限
user_config_dir=/etc/vsftpd/vconf #虚拟用户的配置文件目录
allow_writeable_chroot=YES
anon_other_write_enable=YES
chroot_local_user=YES    

4. 创建ftp虚拟用户,需严格按照一行用户名一行密码的格式来编写

mkdir /etc/vsftpd/virtuserscat >> /etc/vsftpd/virtusers <<EOF
ceshi01
123456
ceshi02
123456
ceshi03
123456
EOF

5. 生成虚拟用户数据库文件,在pam认证中关联vt-users.db文件

#如果新增用户则需要重新生成db文件db_load -T -t hash -f /etc/vsftpd/virtusers  /etc/vsftpd/vt-users.dbvi /etc/pam.d/vsftpd#%PAM-1.0
auth     sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/vt-users
account  sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/vt-users

 6. 创建虚拟用户配置文件,为每个用户设置独立的权限以及存储目录

mkdir /etc/vsftpd/vconf
touch /etc/vsftpd/vconf/ceshi{01..03}cat >>/etc/vsftpd/vconf/ceshi01 <<EOF
local_root=/mnt/ftp/ceshi01   #用户的根目录设置为/mnt/ftp/ceshi01
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600  #空闲会话超时时间为 600 秒。如果客户端在该时间内没有发送任何数据或命令,服务器将会关闭与客户端的连接
data_connection_timeout=120  #数据连接超时时间为 120 秒。在建立数据连接后,如果在该时间内未进行任何数据传输,服务器将会关闭数据连接。
local_max_rate=204800   #最大传输速率为204800bits
EOFcat >>/etc/vsftpd/vconf/ceshi02 <<EOF
local_root=/mnt/ftp/ceshi02
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=409600
EOFcat >>/etc/vsftpd/vconf/ceshi03 <<EOF
local_root=/mnt/ftp/ceshi02
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
EOF

7. 测试用户登录上传下载文件

# 生成一个大文件,分别用不同的账户登陆测试dd if=/dev/zero of=test bs=1M count=1000

SSL加密传输配置

为什么要配置ssl加密?

那自然是不安全呗。

FTP传输时皆为明文传输,通过抓包软件能够轻易获取账号和密码,为了增强 FTP 服务的安全性,可以配置 SSL 证书,以确保在数据传输过程中的加密保护

 1. 创建CA证书目录

#创建文件夹,默认这些文件夹都是不存在的
mkdir -p /etc/pki/CA/{certs,newcerts,crl,private}#进入到CA目录中创建索引文件
cd /etc/pki/CA/touch index.txt#指定一个证书编号echo "01">serial

2. 创建私钥文件

openssl genrsa -out private/cakey.pem 2048

3. 创建证书文件

openssl req -new -x509 -nodes -key private/cakey.pem -days 7300 -out cacert.pem

4. 为ftp应用证书,配置私钥文件与证书文件的位置在ftp配置文件末尾添加以下行

#虽然 SSLv2 和 SSLv3 协议在过去被广泛使用,但由于安全性问题,现在已不推荐使用。建议禁用 SSLv2 和 SSLv3,仅使用 TLSv1.2 或更新版本rsa_cert_file=/etc/pki/CA/cacert.pem
rsa_private_key_file=/etc/pki/CA/private/cakey.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_enable=YES
ssl_sslv1=YES
ssl_sslv2=YES
ssl_sslv3=YES#重启服务
systemctl restart vsftpd

5.检查验证

这篇关于vsftp虚拟用户和ssl加密配置 —— 筑梦之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943596

相关文章

IDEA中配置Tomcat全过程

《IDEA中配置Tomcat全过程》文章介绍了在IDEA中配置Tomcat的六步流程,包括添加服务器、配置部署选项、设置应用服务器及启动,并提及Maven依赖可能因约定大于配置导致问题,需检查依赖版本... 目录第一步第二步第三步第四步第五步第六步总结第一步选择这个方框第二步选择+号,找到Tomca

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4