一.關於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/,如下圖,
發現在pub目錄可以進行上傳下載,但是不能重命名文件夾,只能新建叫做“新建文件夾”的文件夾,也不能刪除文件
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,這個權限是不能改變的。切記!
在瀏覽器里也可訪問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.部署環境
服務器 | 操作系統版本 | 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服務器進行測試,連接方式如下圖:輸入賬號密碼,發現功能也正常
但是此時數據傳輸是明文傳輸,所以還需要配置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服務器,連接方法如下:
點擊信任證書
連接成功之后,發現已經可以加密傳輸數據了
最后使用客戶端工具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服務器搭建完畢。