Vsftp虚拟用户与SSL加密传输配置小记

使用虚拟用户的好处:

1.增强安全性:使用虚拟用户,可以避免直接使用系统账户进行 FTP 访问,通过使用虚拟用户,可以限制 FTP 用户的访问范围和权限,减少潜在的安全风险。
2.隔离用户和文件:虚拟用户可以被隔离到特定的目录或目录树中,这样可以确保 FTP 用户只能访问其分配的特定文件夹,而不能访问整个文件系统。
3.简化管理:虚拟用户可以独立于操作系统的用户管理进行配置和管理,可以更方便地添加、修改或删除 FTP 用户,而无需涉及操作系统的账户管理。

操作步骤

1)创建一个ftp用户(vsftpd服务搭建详解vsftp一键部署脚本

#创建一个用户ftpuser,不创建家目录,设置ftpuser家目录为/mnt/ftp/,不允许其登录shell
useradd -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/
Vsftp虚拟用户与SSL加密传输配置小记

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

vim /etc/vsftpd/vsftpd.conf

anonymous_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/virtusers

cat >> /etc/vsftpd/virtusers <<EOF
ceshi01
123456
ceshi02
123456
ceshi03
123456
EOF
Vsftp虚拟用户与SSL加密传输配置小记

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

#如果新增用户则需要重新生成db文件
db_load -T -t hash -f /etc/vsftpd/virtusers  /etc/vsftpd/vt-users.db
Vsftp虚拟用户与SSL加密传输配置小记

备份一下默认的配置文件

mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
Vsftp虚拟用户与SSL加密传输配置小记

关联vt-users.db文件

vi /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
Vsftp虚拟用户与SSL加密传输配置小记

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
EOF

cat >>/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
EOF

cat >>/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
Vsftp虚拟用户与SSL加密传输配置小记

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

使用dd命令生成一个大文件,测试限速效果

dd if=/dev/zero of=test bs=1M count=1000

在客户端使用ceshi01,ceshi02,ceshi03用户分别登录FTP,下载文件测速

Vsftp虚拟用户与SSL加密传输配置小记
Vsftp虚拟用户与SSL加密传输配置小记

可以看到ceshi03用户是没有设置最大传输速率的,所以这里可以直接将网卡速率跑满

Vsftp虚拟用户与SSL加密传输配置小记

配置FTP加密传输

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

未配置证书前,登录ftp服务时通过抓包软件能够轻易获取明文账号和密码

Vsftp虚拟用户与SSL加密传输配置小记

创建CA证书目录

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

创建私钥文件

openssl genrsa -out private/cakey.pem 2048
Vsftp虚拟用户与SSL加密传输配置小记

创建证书文件

openssl req -new -x509 -nodes -key private/cakey.pem -days 7300 -out cacert.pem
Vsftp虚拟用户与SSL加密传输配置小记

为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

验证ftp加密传输

由于证书为本地自签,所以会提示未知证书这里直接确定即可

Vsftp虚拟用户与SSL加密传输配置小记

此时我们使用客户端访问ftp服务器时就是加密通讯了。通过抓包验证,已经看不到明文密码与账号信息了。

Vsftp虚拟用户与SSL加密传输配置小记

往期推荐

DNS主从服务器搭建小记

利用Python实现批量配置交换机

轻松实现防火墙双机热备配置

如何针对用户或组设置磁盘配额?

如何为加入域的电脑批量安装软件?

OpenStack安装小记

Centos7下使用kubeadm方式部署K8S

rsync+inotify-tools实时同步数据

iptables基础管理shell脚本

监控IP频繁登录服务器脚本

一键部署telnet服务



原文始发于微信公众号(青菜浪人):Vsftp虚拟用户与SSL加密传输配置小记

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/272357.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!