linux下使用vsftp搭建FTP服务器:匿名登录,账号登录,SSL加密传输

一.关于FTP和VSFTP

1.FTP(File Transfer Protocol: 文件传输协议)是用来在Internet 上传送文件的协议。FTP服务器(File Transfer Protocol Server)是文件传输协议服务器,是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。

2.VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。VSFTP具有安全、高速、稳定的特点。VSFTP的软件架构为C/S 模式(即一个客户端一个服务器端)。

3.FTP的端口有两个:20和21,20端口用来进行数据传输,21端口是控制端口,用于传输指令。查看FTP端口的方法如下:

[root@node5 ~]# cat /etc/services | grep "^ftp"
ftp-data        20/tcp
ftp-data        20/udp
ftp             21/tcp
ftp             21/udp          fsp fspd
ftp-data        20/sctp                 # FTP
ftp             21/sctp                 # FTP
ftp-agent       574/tcp                 # FTP Software Agent System
ftp-agent       574/udp                 # FTP Software Agent System
ftps-data       989/tcp                 # ftp protocol, data, over TLS/SSL
ftps-data       989/udp                 # ftp protocol, data, over TLS/SSL
ftps            990/tcp                 # ftp protocol, control, over TLS/SSL
ftps            990/udp                 # ftp protocol, control, over TLS/SSL

4.FTP的会话包含了两个通道,控制通道和数据传输通道,FTP有两种工作模式,一种是主动模式,一种是被动模式,以FTP Server为参考点,主动模式就是服务器端主动连接客户端传输,被动模式就是服务器端等待客户端连接。

5.vsftp有服务器端和客户端,服务器端为vsftpd,客户端为lftp,lftp的语法如下:

#lftp安装方法
[root@node8 ~]# yum -y install lftp

lftp的语法为:lftp ip -p port -u user,'password' -e'commands ; bye'
下载命令为get,上传命令为put

6.vsftp配置文件介绍

#vsftpd 的核心配置文件
/etc/vsftpd/vsftpd.conf		
#用于指定哪些用户不能访问FTP 服务器,即黑名单
/etc/vsftpd/ftpusers		
#指定允许使用VSFTP的用户列表文件,即白名单
/etc/vsftpd/user_list		
#vsftpd 操作的一些变量和设置脚本
/etc/vsftpd/vsftpd_conf_migrate.sh		
#默认情况下匿名用户的根目录
/var/ftp/			

7./etc/vsftpd/ftpusers,/etc/vsftpd/user_list,vsftpd.conf中的userlist_enable和userlist_deny两个配置项的解释

问题一:ftpusers和user_list两个文件各自的用途是什么?有何关系?  
首先请明确一点:ftpusers不受任何配制项的影响,它总是有效,它是一个黑名单!该文件存放的是一个禁止访问FTP的用户列表,通常为了安全考虑,管理员不希望一些拥有过大权限的帐号(比如root)登入FTP,以免通过该帐号从FTP上传或下载一些危险位置上的文件从而对系统造成损坏。而user_list则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单!那么是什么的设置决定了它的作用呢?这就是问题二要解释的。所以简单总结就是:ftpusers和user_list没有任何关系,ftpusers文件总是生效,user_list则取决于userlist_enable和userlist_deny两项配置。  

问题二:vsftpd.conf中的userlist_enable和userlist_deny两个配置项各自起什么作用,两者如何搭配使用?  
为了说明这个问题,我们来建立两个测试用户:  
tom: 在user_list中  
jim:不在user_list中  
然后我们分别给两个配置项取不同的值,分4种Case进行测试:  
Case 1: userlist_enable=YES, userlist_deny=YES  
tom: 拒绝登入  
jim: 允许登录  
Case 2: userlist_enable=YES, userlist_deny=NO  
tom: 允许登录  
jim:拒绝登录(如user_list文件开头的注释所述,甚至不会提示输入密码,即无登入提示框,直接拒绝连接)  
Case 3: userlist_enable=NO,userlist_deny=NO  
tom: 允许登录  
jim: 允许登录  
Case 4: userlist_enable=NO,userlist_deny=YES  
tom: 允许登录  
jim: 允许登录  

综上实验得出以下结论:  
userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。  
当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP  
当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;  
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous 

二.ftp、sftp、vsftp、vsftpd的区别

简单介绍下ftp、sftp、vsftp、vsftpd的区别

  • ​ ftp 是File Transfer Protocol的缩写,是一种用于在网络上进行文件传输的协议,使用客户/服务器模式。它属于网络传输协议的应用层;
  • ​ sftp 是SSH File Transfer Protocol的缩写,sftp是基于ssh协议的加密ftp传输协议。SFTP 为 SSH的一部分,SFTP使用加密传输认证信息来传输数据,所以,使用SFTP是非常安全的。sftp是sshd里的一个 subsystem,ssh默认包含sftp功能,也可以更改设置禁止它。sftp 走的是ssh协议,开启了sshd就相当于开启了sftp,可以使用sftp命令登录目标目录,比如:sftp root@192.168.110.186;
  • ​ vsftp 是Very Secure FTP的缩写,vsftp是一个基于GPL发布的类Unix系统上使用的ftp服务器软件;vsftp是一款ftp服务器,支持ftp协议,不支持sftp协议;
  • ​ vsftpd 是very secure FTP daemon的缩写,vsftpd是vsftp的守护进程。

三.项目一:搭建一台所有人都可以访问的通用FTP服务器

3.1 项目要求

​ 搭建一台通用FTP服务器,局域网内的所有员工都可以访问,员工可以进行上传/下载文件的操作,并创建属于自己的目录。

3.2 项目思路分析

​ 由于需要所有员工都可以访问,所以需要设置成可以匿名用户登录,还要开启上传文件,创建文件的权限。

3.3 使用vsftp搭建可以匿名访问的FTP服务器

1.部署环境

服务器 操作系统版本 CPU架构 进程 功能描述
node5/192.168.110.184 CentOS Linux release 7.9.2009 (Core) x86_64 vsftpd FTP服务器端
node8/192.168.110.186 CentOS Linux release 7.9.2009 (Core) x86_64 lftp FTP客户端

2.vsftp分为客户端和服务器端,如果配置好了yum源的话,直接使用yum命令安装,如果没有配置好yum源的话,可以参考博客“linux 配置本地yum源,配置国内yum源,配置epel源”进行配置,网址为:https://www.cnblogs.com/renshengdezheli/p/13949693.html

#安装vsftp服务器端
[root@node5 ~]# yum -y install vsftpd

[root@node5 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.2-28.el7.x86_64

#启动vsftp
[root@node5 ~]# systemctl start vsftpd

#查看vsftp启动状态
[root@node5 ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-12-19 20:57:15 CST; 5s ago
  Process: 66964 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 66965 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─66965 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Dec 19 20:57:15 node5 systemd[1]: Starting Vsftpd ftp daemon...
Dec 19 20:57:15 node5 systemd[1]: Started Vsftpd ftp daemon.

[root@node5 ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@node5 ~]# 
[root@node5 ~]# systemctl is-enabled vsftpd
enabled

#查看已安装的vsftp命令,生成了哪些文件
[root@node5 ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
......
/var/ftp
/var/ftp/pub

#安装vsftp服务器端
[root@node5 ~]# yum -y install lftp

[root@node5 ~]# rpm -qa | grep lftp
lftp-4.4.8-12.el7_8.1.x86_64

#查看FTP的端口:我们只查到21号端口,但是20号端口没有查看到?是因为没有数据传输,20号端口是用于传输数据的,所以20号端口是尚未开启,如有数据传输时,20号端口则会开启。
[root@node5 ~]# netstat -antup | grep ftp
tcp6       0      0 :::21                   :::*                    LISTEN      66965/vsftpd        

3.修改vsftp的配置文件vsftpd.conf

[root@node5 ~]# cd /etc/vsftpd/
[root@node5 vsftpd]# pwd
/etc/vsftpd
[root@node5 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.conf.rpmsave

#备份vsftp配置文件
[root@node5 vsftpd]# cp vsftpd.conf{,.bak}
[root@node5 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh  vsftpd.conf.rpmsave

#编辑配置文件vsftpd.conf,主要添加如下三个配置
[root@node5 vsftpd]# vim vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
#控制是否允许匿名用户创建目录
anon_mkdir_write_enable=YES                                                                                                                                                        
#修改匿名用户登录的目录的权限,如果不进行此步骤,则不能创建文件夹
[root@node5 vsftpd]# chown ftp:ftp /var/ftp/pub/
 
#重启vsftp
[root@node5 vsftpd]# systemctl restart vsftpd

4.使用windows的资源管理器进行访问FTP服务器,输入ftp://192.168.110.184/,如下图,

image-20201220002033803

发现在pub目录可以进行上传下载,但是不能重命名文件夹,只能新建叫做“新建文件夹”的文件夹,也不能删除文件

image-20201220002503292

5.再次修改配置文件vsftpd.conf

#vsftpd.conf里添加如下一项配置
[root@node5 vsftpd]# vim vsftpd.conf
#启用匿名帐号可以有写的权限
anon_other_write_enable=YES  		

#重启
[root@node5 vsftpd]# systemctl restart vsftpd

6.再次使用windows的资源管理器登录,发现已经可以上传,下载,新建文件夹,重命名文件夹,删除文件夹了,值得注意的是删除文件夹的权限太大了,使用这个anon_other_write_enable=YES参数需要考虑安全性。默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!

image-20201220003854212

在浏览器里也可访问FTP服务器

image-20201220004008183

使用FTP客户端也可访问FTP服务器,使用另一台linux服务器node8的FTP客户端进行访问

#在node8上安装FTP客户端
[root@node8 ~]# yum -y install lftp

[root@node8 ~]# rpm -qa | grep lftp
lftp-4.4.8-8.el7_3.2.x86_64

#登录FTP服务器
[root@node8 ~]# lftp 192.168.110.184
lftp 192.168.110.184:~> pwd
ftp://192.168.110.184
lftp 192.168.110.184:~> 
lftp 192.168.110.184:~> ls
drwxr-xr-x    4 14       50            107 Dec 19 16:29 pub
lftp 192.168.110.184:/> cd pub/
lftp 192.168.110.184:/pub> pwd
ftp://192.168.110.184/pub
lftp 192.168.110.184:/pub> ls
drwx------    2 14       50              6 Dec 19 13:31 1219
drwx------    2 14       50              6 Dec 19 13:33 1220
-rw-------    1 14       50         914424 Dec 19 16:24 a0996921f120ade16b43c340f3ed18f.png
-rw-------    1 14       50       11814302 Dec 19 16:29 mycat-definitive-guide.pdf
lftp 192.168.110.184:/pub> mkdir node8
mkdir ok, `node8' created
lftp 192.168.110.184:/pub> ls
drwx------    2 14       50              6 Dec 19 13:31 1219
drwx------    2 14       50              6 Dec 19 13:33 1220
-rw-------    1 14       50         914424 Dec 19 16:24 a0996921f120ade16b43c340f3ed18f.png
-rw-------    1 14       50       11814302 Dec 19 16:29 mycat-definitive-guide.pdf
drwx------    2 14       50              6 Dec 19 16:43 node8
lftp 192.168.110.184:/pub> exit

FileZilla是方便高效的FTP客户端工具,现在使用FileZilla来访问FTP服务器,FileZilla的连接配置如下图:

image-20201221110434960

使用FileZilla连接成功之后,可以正常进行上传/下载,新建/删除文件夹

image-20201221110914167

四.项目二:搭建一台只有特定用户才能访问的专有FTP服务器

4.1 项目要求

搭建一台专用FTP服务器:禁止匿名登录,只能有两个用户tom1和tom2使用密码登录FTP服务器,并且tom1和tom2禁止登录本地系统,tom1和tom2用户登录FTP服务器之后,限定根目录为/usr/local/apache-tomcat-8.0.51/webapps(即tomcat的发布目录),不能进入该目录以外的任何目录,此FTP服务器还需设置成加密传输数据,不能明文传输数据。

4.2 项目思路分析

由于只能让特定用户登录FTP,所以必须禁止匿名登录,还需要把tom1用户和tom2用户的shell设定为/sbin/nologin,还需要使用chroot 功能将team1用户和team2用户的根目录锁定在/usr/local/apache-tomcat-8.0.51/webapps目录下,使用SSL证书加密传输数据,如果需要删除文件则还需要注意本地权限。

4.3 使用vsftp搭建特定用户登录的专用FTP服务器

1.部署环境

服务器 操作系统版本 CPU架构 进程 功能描述
node5/192.168.110.184 CentOS Linux release 7.9.2009 (Core) x86_64 lftp FTP客户端
node8/192.168.110.186 CentOS Linux release 7.9.2009 (Core) x86_64 vsftpd FTP服务器端

2.先安装vsftp的服务器端和客户端

[root@node8 ~]# yum -y install vsftpd
 
[root@node8 ~]# rpm -qa | grep vsftpd
vsftpd-3.0.2-22.el7.x86_64

[root@node8 ~]# yum -y install lftp

[root@node8 ~]# rpm -qa | grep lftp
lftp-4.4.8-8.el7_3.2.x86_64

3.创建用户tom1和tom2

[root@node8 ~]# useradd -s /sbin/nologin tom1 && echo "123456" | passwd --stdin tom1
Changing password for user tom1.
passwd: all authentication tokens updated successfully.
 
[root@node8 ~]# useradd -s /sbin/nologin tom2 && echo "123456" | passwd --stdin tom2
Changing password for user tom2.
passwd: all authentication tokens updated successfully.

4.确定tomcat的发布目录存在

[root@node8 ~]# cd /usr/local/
[root@node8 local]# ls
apache-tomcat-8.0.51  bin  etc  games  include  lib  lib64  libexec  mysql  sbin  share  src
[root@node8 local]# cd apache-tomcat-8.0.51/webapps/
[root@node8 webapps]# ls
docs  examples  host-manager  index.jsp  manager  ROOT  test
[root@node8 webapps]# pwd
/usr/local/apache-tomcat-8.0.51/webapps

5.备份vsftp的配置文件,然后进行修改,并建立锁定用户文件

[root@node8 ~]# cd /etc/vsftpd/
[root@node8 vsftpd]# pwd
/etc/vsftpd
[root@node8 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

[root@node8 vsftpd]# cp vsftpd.conf{,.bak}
[root@node8 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

#配置文件主要修改以下几项
[root@node8 vsftpd]# vim vsftpd.conf
#禁止匿名用户登录
anonymous_enable=NO	
#允许本地用户登录
local_enable=YES		
#设置本地用户登录的根目录为/usr/local/apache-tomcat-8.0.51/webapps
local_root=/usr/local/apache-tomcat-8.0.51/webapps	
#激活chroot功能
chroot_list_enable=YES			
#设置锁定用户在根目录中的列表文件,此文件存放要锁定的用户名
chroot_list_file=/etc/vsftpd/chroot_list	
#允许锁定的用户有写的权限。
allow_writeable_chroot=YES 		

#建立锁定用户文件
[root@node8 vsftpd]# touch /etc/vsftpd/chroot_list
[root@node8 vsftpd]# vim /etc/vsftpd/chroot_list
#把tom1和tom2添加进锁定文件里
[root@node8 ~]# cat /etc/vsftpd/chroot_list
tom1
tom2

[root@node8 vsftpd]# ll -h /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 10 Dec 21 11:38 /etc/vsftpd/chroot_list

6.修改锁定目录的权限,使其他用户可以进行写操作

[root@node8 vsftpd]# ll -d /usr/local/apache-tomcat-8.0.51/webapps/
drwxr-xr-x 8 root root 110 Dec 21 11:19 /usr/local/apache-tomcat-8.0.51/webapps/
 
[root@node8 vsftpd]# chmod -R o+w /usr/local/apache-tomcat-8.0.51/webapps

[root@node8 vsftpd]# ll -d /usr/local/apache-tomcat-8.0.51/webapps/
drwxr-xrwx 8 root root 110 Dec 21 11:19 /usr/local/apache-tomcat-8.0.51/webapps/

7.重启vsftp使配置文件生效

[root@node8 vsftpd]# systemctl restart vsftpd

[root@node8 vsftpd]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-12-21 11:42:43 CST; 13s ago
  Process: 7441 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 7442 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─7442 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Dec 21 11:42:43 node8 systemd[1]: Starting Vsftpd ftp daemon...
Dec 21 11:42:43 node8 systemd[1]: Started Vsftpd ftp daemon.

8.测试:使用FTP客户端和FileZilla连接FTP服务器,测试功能是否正常

首先把node5作为FTP客户端,使用lftp连接FTP服务器进行测试

#首先测试匿名登录,发现匿名登录无法查看相关内容
[root@node5 ~]# lftp 192.168.110.186
lftp 192.168.110.186:~>                 
lftp 192.168.110.186:~> ls
`ls' at 0 [Sending commands...]  
`ls' at 0 [Delaying before reconnect: 28]  
Interrupt                                    
lftp 192.168.110.186:~> quit

#使用tom1账号登录,发现功能正常
[root@node5 ~]# lftp 192.168.110.186 -u tom1,123456
lftp tom1@192.168.110.186:~> pwd
ftp://tom1:123456@192.168.110.186
lftp tom1@192.168.110.186:/> ls
drwxr-xrwx    3 0        0             326 Dec 21 03:19 ROOT
drwxr-xrwx   14 0        0            4096 Dec 21 03:19 docs
drwxr-xrwx    6 0        0              83 Dec 21 03:19 examples
drwxr-xrwx    5 0        0              87 Dec 21 03:19 host-manager
-rw-r--rw-    1 0        0             624 Dec 21 03:19 index.jsp
drwxr-xrwx    5 0        0             103 Dec 21 03:19 manager
drwxr-xrwx    2 0        0               6 Dec 21 03:19 test
lftp tom1@192.168.110.186:/> mkdir 1221
mkdir ok, `1221' created
lftp tom1@192.168.110.186:/> ls
drwxr-xr-x    2 1114     1114            6 Dec 21 03:48 1221
drwxr-xrwx    3 0        0             326 Dec 21 03:19 ROOT
drwxr-xrwx   14 0        0            4096 Dec 21 03:19 docs
drwxr-xrwx    6 0        0              83 Dec 21 03:19 examples
drwxr-xrwx    5 0        0              87 Dec 21 03:19 host-manager
-rw-r--rw-    1 0        0             624 Dec 21 03:19 index.jsp
drwxr-xrwx    5 0        0             103 Dec 21 03:19 manager
drwxr-xrwx    2 0        0               6 Dec 21 03:19 test
lftp tom1@192.168.110.186:/> quit

#使用tom2账号登录,发现功能正常
[root@node5 ~]# lftp 192.168.110.186 -u tom2,123456
lftp tom2@192.168.110.186:~> pwd
ftp://tom2:123456@192.168.110.186
lftp tom2@192.168.110.186:/> ls
drwxr-xr-x    2 1114     1114            6 Dec 21 03:48 1221
drwxr-xrwx    3 0        0             326 Dec 21 03:19 ROOT
drwxr-xrwx   14 0        0            4096 Dec 21 03:19 docs
drwxr-xrwx    6 0        0              83 Dec 21 03:19 examples
drwxr-xrwx    5 0        0              87 Dec 21 03:19 host-manager
-rw-r--rw-    1 0        0             624 Dec 21 03:19 index.jsp
drwxr-xrwx    5 0        0             103 Dec 21 03:19 manager
drwxr-xrwx    2 0        0               6 Dec 21 03:19 test
lftp tom2@192.168.110.186:/> quit

接着使用FileZilla连接FTP服务器进行测试,连接方式如下图:输入账号密码,发现功能也正常

image-20201221115732525

image-20201221141942053

但是此时数据传输是明文传输,所以还需要配置SSL,使其支持加密传输。

9.配置vsftp使用SSL证书加密传输数据,FTP与HTTP一样缺省状态都是基于明文传输,希望FTP服务器端与客户端传输保证安全,可以为FTP配置SSL。在项目中,如果是内网FTP传输,可以不用证书加密传输,如果FTP服务器在公网,为了数据的安全性,就一定要配置证书加密传输,保证安全性。

使用OpenSSL生成自签证书

#查看openssl有没有安装
[root@node8 vsftpd]# rpm -qa | grep openssl
openssl-1.0.2k-8.el7.x86_64
openssl-libs-1.0.2k-8.el7.x86_64
xmlsec1-openssl-1.2.20-5.el7.x86_64
openssl-devel-1.0.2k-8.el7.x86_64

#使用OpenSSL生成自签证书
#OpenSSL参数注释:
#req 			#是 X.509 Certificate Signing Request (CSR,证书签名请求)管理的一个命令。
#x509 			#X.509 证书数据管理。
#days 			#定义证书的有效日期。
#newkey 		#指定证书密钥处理器。
#keyout 		#设置密钥存储文件。
#out 			#设置证书存储文件,注意证书和密钥都保存在一个相同的文件
[root@node8 vsftpd]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 3560
Generating a 2048 bit RSA private key
.........................................+++
................................+++
writing new private key to 'vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:zg
State or Province Name (full name) []:gd
Locality Name (eg, city) [Default City]:gz
Organization Name (eg, company) [Default Company Ltd]:shxf
Organizational Unit Name (eg, section) []:fz
Common Name (eg, your name or your server's hostname) []:zheli
Email Address []:zheli@163.com

[root@node8 vsftpd]# ls vsftpd.pem 
vsftpd.pem

10.创建证书存放目录,并赋权

[root@node8 vsftpd]# mkdir .sslkey

[root@node8 vsftpd]# mv vsftpd.pem .sslkey/

[root@node8 vsftpd]# chmod 400 .sslkey/vsftpd.pem

11.修改配置文件,使其支持SSL加密传输

#修改配置文件,主要修改内容如下,注意:这些配置项不要添加到vsftpd.conf文件的末尾,添加在中间部位即可,否则启动报错
[root@node8 vsftpd]# vim vsftpd.conf
#启用SSL
ssl_enable=YES    		
allow_anon_ssl=NO 
#强制匿名用户和本地用户使用加密登陆和数据传输
force_local_data_ssl=YES   
force_local_logins_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
#指定vsftp支持TLS v1
ssl_tlsv1=YES   
#指定vsftpd支持SSL v2
ssl_sslv2=YES   
#指定vsftpd支持SSL v3
ssl_sslv3=YES   	
#不重用SSL会话,安全配置项 
require_ssl_reuse=NO  
#允许用于加密 SSL 连接的 SSL 算法。这可以极大地限制那些尝试发现使用存在缺陷的特定算法的攻击者
ssl_ciphers=HIGH   
#定义 SSL 证书和密钥文件的位置
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem 
rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem

#重启vsftp,使配置文件生效
[root@node8 vsftpd]# systemctl restart vsftpd

[root@node8 vsftpd]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-12-21 14:33:02 CST; 7s ago
  Process: 7579 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 7580 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─7580 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Dec 21 14:33:02 node8 systemd[1]: Starting Vsftpd ftp daemon...
Dec 21 14:33:02 node8 systemd[1]: Started Vsftpd ftp daemon.

12.测试是否支持加密传输

使用FileZilla连接FTP服务器,连接方法如下:

image-20201221143526306

点击信任证书

image-20201221143712783

连接成功之后,发现已经可以加密传输数据了

image-20201221143819558

最后使用客户端工具lftp连接测试,使用另外一台node5的lftp连接FTP服务器

#在node5上连接FTP服务器,但是提示不信任的证书
[root@node5 ~]# lftp 192.168.110.186 -u tom2,123456
lftp tom2@192.168.110.186:~> pwd
ftp://tom2:123456@192.168.110.186
lftp tom2@192.168.110.186:~> ls
ls: Fatal error: Certificate verification: Not trusted
lftp tom2@192.168.110.186:~> quit

#修改/etc/lftp.conf配置文件,在末尾加上一行“set ssl:verify-certificate no”,或者直接在lftp命令提示符下输入:set ssl:verify-certificate no 回车
[root@node5 ~]# vim /etc/lftp.conf 
set ssl:verify-certificate no

#此时又可以登录FTP服务器了
[root@node5 ~]# lftp 192.168.110.186 -u tom2,123456
lftp tom2@192.168.110.186:~> ls
drwxr-xr-x    2 1114     1114            6 Dec 21 03:48 1221
drwxr-xrwx    3 0        0             326 Dec 21 03:19 ROOT
drwxr-xrwx   14 0        0            4096 Dec 21 03:19 docs
drwxr-xrwx    6 0        0              83 Dec 21 03:19 examples
drwxr-xrwx    5 0        0              87 Dec 21 03:19 host-manager
-rw-r--rw-    1 0        0             624 Dec 21 03:19 index.jsp
drwxr-xrwx    5 0        0             103 Dec 21 03:19 manager
drwxr-xrwx    2 0        0               6 Dec 21 03:19 test
lftp tom2@192.168.110.186:/> quit 

自此,专有FTP服务器搭建完毕。

posted @ 2020-12-21 20:47  人生的哲理  阅读(1880)  评论(3编辑  收藏  举报