一.关于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.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

2.修改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

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

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

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

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

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

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

使用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的连接配置如下图:

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

四.项目二:搭建一台只有特定用户才能访问的专有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.先安装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

2.创建用户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.

3.确定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

4.备份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

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

[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/

6.重启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.

7.测试:使用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服务器进行测试,连接方式如下图:输入账号密码,发现功能也正常

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

8.配置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

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

[root@node8 vsftpd]# mkdir .sslkey

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

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

10.修改配置文件,使其支持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.

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

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

点击信任证书

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

最后使用客户端工具lftp连接测试

#在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服务器搭建完毕。

linux下使用vsftp搭建FTP服务器:匿名登录,账号登录,SSL加密传输的更多相关文章

  1. Linux下基于vsftpd搭建ftp服务器

    1.先用检查是否已经安装rpm -qa| grep vsftpd2.然后再进行在线安装vsftpd这个服务yum install vsftpd -y3.修改vi /etc/vsftpd/vsftpd. ...

  2. 在本机使用虚拟机安装一个linux系统,并搭建ftp服务器

    一.Linux基础使用:linux服务器环境搭建(FTP服务器), 在本机使用虚拟机安装一个linux系统,并搭建ftp服务器,要求能使用ftp服务将本机文件到保存linux虚拟机上 资料: VMwa ...

  3. Linux安装配置vsftp搭建FTP的详细配置

    这里主要是说vsftp的配置:基础的可以参考Linux中VSFTP的配置 转自:https://www.jb51.net/article/103904.htm 修改配置文件 配置文件/etc/vsft ...

  4. linux(centos6)搭建ftp服务器

    前提 ssh服务已经开启,关闭防火墙,主机和虚拟机能ping通 查看ssh和防火墙的状态 service sshd status service iptables status 开启ssh服务 ser ...

  5. linux(centos6)搭建ftp服务器 -摘自网络

    前提 ssh服务已经开启,关闭防火墙,主机和虚拟机能ping通 查看ssh和防火墙的状态 service sshd status service iptables status 开启ssh服务 ser ...

  6. 服务器linux centos 7.4 搭建ftp服务器

    此操作是在腾讯云服务器linux centos 7.4 完成搭建ftp服务器 vsftpd 的: 安装 vsftpd $ yum install vsftpd -y 启动 $ service vsft ...

  7. Linux上rpm实战搭建FTP服务器

    1.检测是否已安装FTP服务 # rpm -qa|grep vsftpd 2.未安装ftp服务的前提进行使用rpm安装 # yum install vsftpd -y Loaded plugins: ...

  8. 服务器搭建2 VSFTP搭建FTP服务器

    FTP服务器是平时应用最为广泛的服务之一.VSFTP是Very Secure FTP的缩写,意指非常安全的FTP服务.VSFTP功能强大,通过结合本地系统的用户认证模块及其多功能的配置项目,可以快速有 ...

  9. Linux下使用wget下载FTP服务器文件

    wget -nH -m --ftp-user=your_username --ftp-password=your_password ftp://your_ftp_host/* 使用命令下载ftp上的文 ...

随机推荐

  1. JVM(二)-内存区域之线程私有区

    概述: 对于从事C.C++开发的程序员来说,在内存管理领域,他们既是拥有最高权力的"皇帝",又是从事最基础工作的劳动人民--既拥有每个对象的"所有权", 又担负 ...

  2. pytest测试框架入门

    安装pytest 命令行输入: pip install -U pytest 检查是否安装了正确的版本: λ pytest --version This is pytest version 5.3.5, ...

  3. C语言讲义——结构体struct

    结构体是一种变量类型,可以包含多个变量(变量类型不必相同). 结构体的关键字是struct也是一种值类型. 例:设计一个表示"书本"的结构体: structBook { chari ...

  4. Spring中的Mybatis

    1. 前言 在构建一个web应用时基本的套路就是SSM,其中的M就是Mybatis. Mybatis作为一款开源的ORM框架, 由于其易于上手的特点成为当下比较流行的ORM框架,当然它还有一款插件能够 ...

  5. Android动画系列之属性动画

    原文首发于微信公众号:jzman-blog,欢迎关注交流! 属性动画相较帧动画和补间动画更强大,帧动画和补间动画只能应用于 View 及其子类,而属性动画可以修改任何对象的属性值,属性值可在指定的一段 ...

  6. Kubernetes中Service的使用

    目录 简介 1. Service资源定义 1.1 Service Type ClusterIP 无头service NodePort sessionAffinity实现源地址session绑定 简介 ...

  7. 学习abp vnext框架到精简到我的Vop框架

    学习目标 框架特点 基于.NET 5平台开发 模块化系统 极少依赖 极易扩展 ....... 框架目的 学习.NET 5平台 学习abp vnext 上图大部分功能已经实现,多数是参考(copy)ab ...

  8. PyQt+moviepy音视频剪辑实战2:实现一个剪裁视频文件精华内容留存工具

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 ...

  9. PyQt(Python+Qt)学习随笔:QListView的resizeMode属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的resizeMode属性用于控制调整视图大小时是否再次排列视图中的数据项,其类型 ...

  10. 搭建xss-platform平台

    一直想搭在公网搭建自己的XSS平台用来验证XSS漏洞,使用别人的平台自己心里总会有担心被摘果子的顾虑,前几天参考了不少前人的博客,终于搭建好了,搭建的途中也遇到了不少坑,故把搭建的经验分享出来,大佬轻 ...